Verification
How export parity is checked
The parity gate renders the exported code, the same text the export dialog gives you, in a real browser and compares what the browser shows with the engine. That's how we know your export matches your preview, and how closely.
- 25 fixtures, three dialects
- Each fixture is a small animation that pins one behavior, and the gate prints its sentence about that behavior next to every result. The fixtures lists them all.
- And 12 scenes
- A scene is a component with picked children, run against real markup, since a picked child is addressed by its path inside the component. Every element in the scene is scored, and the report names the worst. For Motion, the gate renders the exported component itself, the file you’d paste; where the export gives a props object for a part it couldn’t place, the gate spreads it where its comment says. Split text runs on the markup the export writes.
- What’s compared
- The browser’s computed transform matrix, opacity, filters and colors, plus a motion path’s position and angle. Different sets of properties can produce the same matrix, so comparing the matrix avoids reporting differences you’d never see.
- CSS and GSAP are scrubbed
- Both can be paused and seeked, so each sample sets the playhead directly and timing can’t interfere. The tolerance is 0.6%.
- Motion is sampled live
- Motion has no playhead to set, so the gate plays it and reads every frame, timing each value by the clock that produced it. It then searches for a constant start offset of up to 40ms either way before comparing, a window small enough that a wrong delay still fails. The tolerance is 2%, because it’s measured in real time.
- Exemptions are printed
- Where a dialect can’t express a fixture, the fixture records why, and the gate prints that reason on every run.
- Running it
npm run parityin the verve repo, with the dev server running on port 3000. It exits non-zero on any failure or console error. To check a saved scene without a dev server, use verve check.- GSAP is only a dev dependency
- GSAP exports are checked against real GSAP, so GSAP is installed here as a dev dependency, next to Playwright and Vitest. Nothing in our package.json reaches your export: if you export GSAP, you install GSAP yourself.
- Where it stops
- It compares animated values. Static settings such as transform origin and perspective are covered by unit tests on the exported text, not measured in a browser.