4.6 KiB
4.6 KiB
End-to-end evaluation loop
Use real browser interactions and real media. Unit tests and DOM assertions supplement this loop but do not replace it.
Required loop
- Define one user-visible scenario, its fixture, starting state, and expected outcome.
- Run it from a fresh project and capture concise evidence at every meaningful boundary.
- Record the first failed action exactly; do not hide it behind the successful fallback.
- Classify the cause:
product: editor behavior or accessibility contract is wrong;browser-control: the automation surface behaves differently from normal UI input;environment: port, codec, model, browser, network, or filesystem condition;skill: guidance was missing, ambiguous, stale, or overly confident.
- Fix the product or update the smallest relevant Skill section. Do not encode a product bug as permanent workflow guidance when the product can be fixed.
- Run the skill validator, synchronize the installed copy, rerun the failed scenario, then run adjacent smoke scenarios.
- Preserve raw screenshots, console errors, media probes, downloads, and project archives outside the Skill directory when they materially explain a failure.
Core scenario matrix
Run these across empty and pre-populated projects where applicable:
- Start the local server with the default port free and occupied; open the actual emitted URL.
- Import the first image, first video with audio, video without audio, and audio-only asset.
- Import a second visual and verify it remains in the asset library until explicitly placed.
- Exercise visible upload controls, file-input fallback, drag/drop, rejected type, duplicate filename, and canceled chooser.
- Verify the first-visual coach guide: persistent completion only through the user's explicit action; temporary dismissal through close or Escape.
- Trim, split, reorder, delete, undo, redo, save, reopen, and compare media identity and source-time mapping. Include a sub-second split where mute controls and handles consume most of the clip width; verify clip-scoped context-menu deletion and immediate recovery from a deliberately detected wrong-target action.
- Add and move captions, stickers, voiceover, music, source audio, and picture-in-picture; verify lane visibility and overlap packing.
- Verify embedded video audio, mute, Separate audio, derived-piece deletion, link modes, preview playback, and export without doubled or missing sound. Separate audio from a clip trimmed at both ends and assert the project duration, source-audio piece duration, source start, source duration, and waveform range remain mapped to that clip rather than the full original asset.
- Change transforms, masks, keyframes, speed, effects, animations, and aspect ratio; compare preview with deterministic export.
- Export MP4/WebM and decode the entire result to verify dimensions, duration, frame count, visible captions/overlays, and a real non-silent audio track when expected. Extract frames inside every caption range and visually verify the burned-in text. Test both a captured browser download event and the fallback where the event times out but a new artifact exists on disk.
- Compare same-tab autosave, a newly opened same-origin tab, and explicit
.timelinesave/reopen. Verify duration, ordering, assets, track state, selections that should persist, and generated media links; never treat an “Autosaved” label as proof that local blobs will reopen. - Repeat critical flows in every supported interface language, narrow desktop panels, reduced motion, and at least the supported Chromium path; include Firefox/Windows regressions when available.
- Exercise AI paths with cold and warm caches, unavailable models, download failure, cancellation, WASM/WebGPU fallback, and truthful backend reporting.
- Test handoff-only requests separately from concrete editing requests so the Agent never invents creative changes.
Observation record
Keep each finding concise and reproducible:
{
"scenario": "first video import on occupied default port",
"fixture": "/absolute/path/video.mp4",
"attempt": "activate Choose File while listening for filechooser",
"observed": "no chooser event",
"fallback": "click visible upload surface with current screenshot coordinates",
"verification": "asset card and 17.94-second Visuals clip appeared",
"classification": "browser-control",
"skillChange": "document upload fallback and actual-port discovery",
"regressions": ["first image import", "second visual remains in assets"]
}
Never place credentials, private media contents, or unrelated local paths in an observation record.