Conversation
The original report that started this work said the blocker was being unable to verify a landing page's reduced-motion path -- it shipped untested. --reduced-motion, --color-scheme and --forced-colors close that, applied before the first navigation so a page reading the preference at boot still sees it. Paired with --record, the motion path can finally be watched, which a screenshot could never show. check renders the page under all five conditions and compares them. The screenshots are not the point; the comparison is. A condition that renders byte-identical to baseline is a page that very likely has no branch for it. Reduced motion is deliberately excluded from that verdict. Its difference is in movement, not layout, so a still cannot settle it -- the command says so and points at the recording route rather than implying a conclusion it cannot support. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This closes the loop on the very first thing reported as a blocker: a landing page whose reduced-motion path shipped untested, because there was no way to render it under
prefers-reduced-motion: reduceshort of changing an OS setting.Media flags on every command
--reduced-motion,--color-scheme <light|dark>and--forced-colors, applied before the first navigation so a page that reads the preference once at boot still sees it.Verified against
humanjs.dev: 12 actions recorded, scroll sequence and all, under reduced motion. That is the exact check that was impossible before, and no screenshot could ever have made it — the difference is in movement.check <url>The screenshots are not the feature; the comparison is. Four PNGs are four PNGs somebody has to open side by side. A condition that renders byte-identical to baseline is a page that very likely has no branch for it, and that is actionable.
Checked against two sites picked to prove the report distinguishes them:
example.com(no theme)humanjs.dev(has a theme)The line I was careful about
Reduced motion is excluded from the verdict on purpose. Its difference is in movement, not layout, so a still cannot settle it either way — and reporting "identical to baseline" there would read as a finding when it means nothing. The command says what it cannot show and points at the recording route instead. There is a test asserting that line never renders a verdict.
Verification
132 unit tests in
@humanjs/cli(was 112): flag parsing including a rejected--color-scheme sepia, the emulation payload built for each combination, the log naming CSS features rather than flag names, condition metadata, fingerprint stability, and each verdict's wording.Whole suite:
lint,typecheck(11/11),test(10/10),build(8/8),check:exports(15/15).Note
page.emulateMediais called directly, matching how the CLI already reaches forpageelsewhere. Once #116 lands, this can route throughhuman.emulateMediainstead — left out here so the two stay independently mergeable.🤖 Generated with Claude Code