Test and review videos

Combine automated checks with visual review. A passing test can catch invalid timing or unreadable text, but it cannot judge whether a scene communicates the intended story.

Check the project structure

Run these commands from your project root:

pnpm odori doctor
pnpm odori graph --json
pnpm odori list --json

doctor checks the environment and project structure. graph writes the compiled project graph and reports structural errors. list confirms which video IDs were discovered.

If a video is missing, check its entry filename and configured source directory before investigating the renderer.

Inspect the timeline

Inspect one composition to resolve its metadata, inputs, preparation, and compiled scene boundaries:

pnpm odori inspect launch --json

Compare the declared duration with the scene total. Check scene IDs, ordering, audio offsets, and the resolved output format. Changing a scene duration shifts later scenes; review cues and overlays that use video-relative placement.

Run automated checks

Test one video while editing, then the project before publishing:

pnpm odori test launch
pnpm odori test --json

Checks cover schema defaults, duration agreement, representative blank frames, entirely off-canvas content, and text below the configured size policy. The default text threshold is 20px at a 1080p reference, measured after scaling.

The off-canvas check is not a guarantee against all partial clipping. Inspect your actual output, especially long text and portrait formats.

Review meaningful frames

Capture entrances, settled content, exits, and scene boundaries. Use a distinct filename for each review frame:

pnpm odori frame launch --at 0.5s --output out/entrance.png
pnpm odori frame launch --at 2s --output out/settled.png
pnpm odori frame launch --at 119f --output out/before-cut.png
pnpm odori frame launch --at 120f --output out/after-cut.png

Adjust these times to the inspected timeline. Check hierarchy, spacing, contrast, image crops, and whether important content is inside the safe area. Play the sequence in Studio to assess pacing and listen to the mix.

Mark intentional exceptions

Decorative interface labels can be smaller than the main message. Scope an exception to that UI detail:

<div data-odori-chrome>
  <small>Last synced 2 minutes ago</small>
</div>

For intentional offscreen artwork, use data-odori-bleed on the relevant element. Do not wrap the whole video in either exception; that hides problems in content viewers need to read.

Review after changes

Rerun checks after editing timing, fonts, content, layouts, or component source. A longer headline or different font can break an otherwise unchanged scene. Finish with the encoded file from exporting, since compression and audio mixing happen after frame review.

On this page