Core concepts

Scenarios, checkpoints, windows, records, baselines, matches and severities — the vocabulary MotionPR uses everywhere.

On this page
  1. Time
  2. Two kinds of motion
TermMeaning
ScenarioA repeatable interaction: open a page, run steps, record checkpoints. Runs once per viewport, each time in a fresh browser context
StepOne action in a scenario: click, hover, scrollTo, wheel, waitForAnimations, capture, … (all steps)
CheckpointThe result of a capture or screenshot step, identified by its label. Checkpoints are matched across captures by label
WindowThe span of time a checkpoint covers: from the first motion after the first interaction since the previous checkpoint, until motion settles
TriggerThe input event that opened a window. The time from the trigger to the first motion is the window's latency
CaptureOne run of all scenarios: capture.json plus content-addressed PNG assets
BaselineAn approved capture that later captures are compared against. It lives in .motionpr/baseline/ and is committed
CandidateThe capture being compared: usually the one motionpr run just made
AnimationRecordOne element animated over time: timing, easing (with 65 curve samples), properties, sampled values (data model)
TimelineRecordA GSAP or Anime.js timeline: duration, repeat, speed, labels and the animations that belong to it
ScrollMotionRecordHow one scroller moved during a window, sample by sample, recorded live
AdapterCode in your page that reports an engine's animations to MotionPR (GSAP, Anime.js, Lenis, or your own)
Element identityHow an animated element is recognised across versions: data-motionpr-id, data-testid, a stable id, an accessible label, or a DOM path (details)
MatchA pair of records, one per capture, judged to be the same animation. Method exact, element or fuzzy
ChangeOne measured difference within a match, such as duration or easing, with before, after, delta and unit
Severitycritical, warning, info or uncertain, assigned by a named rule (Severity)
MeasurementHow a value was obtained: measured, estimated, incomplete or unsupported
ProvenanceFor record fields: declared by the engine, observed while the page ran, inferred from other values, or unavailable
ReportThe offline HTML viewer with both captures and the comparison embedded

Time

Every time in a checkpoint is in milliseconds, relative to the window origin: t = 0 is the first animation start (or the first frame of scroll movement) after the trigger. Start times and latency are quantized to frames (about 16.7 ms at 60 Hz) and compared with a tolerance of two frames. Declared durations, delays and easings are compared exactly.

Two kinds of motion

An animation maps time → value. It can be replayed exactly, so MotionPR samples it at chosen times. A scroll maps time → position, produced by input and an engine. Replaying it would re-run your scroll handlers, so MotionPR only observes it. The two are stored, compared and drawn differently, and the report never presents a scroll as if it had an animation duration.