Retain resolved Auto appearance in comparison observations - #2879
Retain resolved Auto appearance in comparison observations#2879Chris0Jeky wants to merge 1 commit into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Independent bounded Luna review of the appearance/fingerprint delta is CLEAN. No HIGH/CRITICAL defect found. Local proving results and limits are in the PR body. Retain legacy attribution and qualify against main after the integration base lands. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f31421b079
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| await expect(page.getByText('Observation recorded.', { exact: true })).toBeVisible() | ||
| for (const colorScheme of ['light', 'dark'] as const) { | ||
| await page.emulateMedia({ colorScheme }) | ||
| await expect(page.locator('body')).toHaveClass(colorScheme === 'light' ? /\bpaper\b/ : /\bpaper-night\b/) |
There was a problem hiding this comment.
Match the complete light body class
When Auto should render light, /\bpaper\b/ also matches paper-night because the hyphen creates a word boundary. The new E2E can therefore pass if the visible theme remains night (or both classes remain) while the exported observation records auto (paper), so it does not prove that recorded attribution matches the rendered appearance; assert a whitespace-delimited paper class and the absence of paper-night.
Useful? React with 👍 / 👎.
Auto comparison observations now retain the selected mode and the resolved light/night appearance at submission, so the two conditions no longer collapse into one result row. Existing version-2/3 files retain their original labels and identities. The frontend input fingerprint also ignores exact test-only paths while retaining runtime sources, public assets, build plugins and resolved options.
Continues #2808, stacked on #2866. The UI explains submission-time appearance; no randomized assignment, telemetry or statistical result is added.
Verification: 6,377 frontend tests passed, three existing skips across 412 files; production build/typecheck, two Node identity checks, scoped ESLint, documentation links/governance/diff pass. The real-API Chromium journey passes in 14.6 seconds: live light/night Auto, separate result rows, original legacy auto label, export/reload/import and missing secure-context crypto APIs. One bounded independent Luna review is CLEAN. Temporary services are stopped and only a synthetic database was used.
The fingerprint remains an input identity, not a byte-for-byte bundle hash or proof of a remote deployment. Physical-device and release acceptance remain separate; existing OUTSTANDING_TASKS.md human choices are unchanged. Preserve the base branch until #2866 lands, then retarget and qualify the main-based head before merge.