Smoke Test¶
Goal¶
Validate the shortest complete Ravo path from launch to catalog, preview, review, edit, and export.
Last reviewed: 2026-08-31 against the current Studio and CLI acceptance paths.
Prerequisites¶
- A built
ravo_studioexecutable. - A writable temporary or test directory.
- One known-good JPEG or PNG and, when RAW coverage is needed, one LibRaw-supported Bayer or X-Trans RAW fixture.
- A second disposable photo when selective parameter copy/paste is included.
Minimum Studio path¶
- Launch Studio and create a new
.sqlitelibrary. - Import one known-good file and wait for Import and Previews to finish.
- Confirm the asset appears in Gallery and its folder appears in the Library tree.
- Select the asset and enter Loupe.
- Exercise Fit, Fill, 1:1, pan, the left navigator, and click-to-1:1 on the photo (the click animates; a second click restores the previous zoom).
- Switch the right scope through Histogram, Waveform, Parade, Vectorscope, and Split.
- Set a rating, a color label, and Reject/Keep; confirm the tile updates.
- Enter Edit, change one Light or Color control, then enable Canvas, Output Frame, or Text Watermark; confirm preview, Before/After, the Y|Y synchronized left/right comparison, Undo, and Redo.
- Save one explicitly selected modified parameter as a managed preset. Copy a selected parameter, paste it onto a second photo, and confirm unrelated target edits remain unchanged.
- Create a labeled Snapshot, change a control again, and restore the snapshot.
- Export a PNG or JPEG to a new path and verify its dimensions and bytes.
- Attempt the same export path again and confirm that a conflict is reported and the first file is unchanged.
- Close and reopen the same library; confirm review state, recipe, history, and preview are restored.
Recovery checks¶
- Import the same source twice and confirm the second result is
duplicate. - Import a known unsupported or malformed candidate and confirm an explicit unsupported/failed result.
- Temporarily make an imported original unavailable and confirm Missing state without losing catalog review data.
- Use Remove from Catalog and confirm that the original remains on disk.
- Test Delete from Disk only with a disposable copy and confirm the explicit confirmation boundary.
- Confirm
catalog sidecar-statusreports the imported asset synchronized, create a backup at an absent directory, and verify it. Confirm the backup has no original or preview payload.
CLI path¶
ravo --version --json
ravo inspect <known-good-input> --json
ravo catalog create --path <test-catalog.sqlite> --json
ravo catalog import --catalog <test-catalog.sqlite> --input <known-good-input> --json
ravo catalog list --catalog <test-catalog.sqlite> --json
ravo catalog preview --catalog <test-catalog.sqlite> --asset-id <id> --json
ravo develop-fields --json
ravo catalog probe --catalog <test-catalog.sqlite> --asset-id <id> --baseline --json
ravo catalog sidecar-status --catalog <test-catalog.sqlite> --asset-id <id> --json
ravo catalog export --catalog <test-catalog.sqlite> --asset-id <id> \
--output <test-output.png> --format png --json
ravo catalog export-batch --catalog <test-catalog.sqlite> \
--asset-id <id> --output-dir <existing-output-directory> \
--filename-template '{stem}-{sequence}{ext}' --format png --json
ravo catalog backup --catalog <test-catalog.sqlite> \
--backup <absent-backup-directory> --json
ravo catalog backup-verify --backup <created-backup-directory> --json
The CLI path must use the same catalog and source as Studio when checking cross-client persistence. Do not use leftover software as a live oracle.
Pass criteria¶
- The library opens and reopens without losing records.
- Import, duplicate, unsupported, missing, and conflict results are explicit.
- Review state and recipe edits persist across restart.
- Recovery generation is synchronized, and the catalog backup verifies while excluding originals and previews.
- Preview and export never overwrite the original or an existing destination.
- CLI JSON has one
ravo.cli.resultobject and a correctokvalue.