Add accessibility and performance hardening (Phase 7 Batch C)#216
Merged
Conversation
- Add axe-core scans to AI action tests covering toolbar, prompt dialog, and preview panel states - Add transition-duration to prefers-reduced-motion rules and a Playwright test verifying no animations are active - Add focus-management assertions for prompt dialog and AI preview - Add long-task observer test verifying no main-thread task exceeds 100ms during standard editing - Promote monaco (1.5 MB) and aiWorker (512 KB) to enforced budgets - Wrap AiPreviewPanel in React.lazy() to reduce initial bundle size Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Merge three separate axe-core scan tests and two focus-management tests into a single test that checks all states sequentially with one app load. Reduces total app loads by 3 per browser project. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Set a 60s default per-test timeout and 25-minute global timeout in playwright.config.ts. Remove redundant per-test setTimeout(60_000) calls — only tests needing more than 60s keep their overrides. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Add concurrency group keyed on workflow + branch so that superseded runs are cancelled automatically instead of queueing up. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Firefox WASM initialization on CI can exceed 30s. Bump all waitForReady/waitForCompiler assertions from 30s to 45s and raise the global suite timeout from 25 to 30 minutes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
After page reload with saved source, the compiler may transition through "Compiler ready" to "Source changed · 0 diagnostics" before Playwright's polling catches the intermediate state. Broaden the wait pattern to also match "diagnostics" in the status text. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
The status element always includes "· N diagnostics" suffix, so matching on "diagnostics" matched immediately before the compiler loaded. Switch to checking the main element's data-state attribute which reflects the runtime lifecycle (loading → ready/working/failed). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
The AI worker bundles web-llm which compresses to ~2.1MB gzip. The 512KB budget was unrealistic for this dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Firefox cold WASM initialization on CI runners can take 50s+, causing flaky failures at the previous 45s timeout. Raise inner waits to 90s across all test files, extend the budget test to 600s, and give the multi-file workspace test 120s to account for multiple compilations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
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.
Summary
transition-duration: 0.01ms !importantto theprefers-reduced-motionmedia query so transitions are suppressed alongside animationsprefers-reduced-motion: reduceand verifies no CSS animations or transitions are activemonaco(1.5 MB) andaiWorker(512 KB) from report-only to enforced size budgets incheck-budgets.mjsAiPreviewPanelinReact.lazy()withSuspenseto reduce initial bundle sizeTest plan
🤖 Generated with Claude Code
https://claude.ai/code/session_01PMWte55jcfTbjieG4nHD8C
Generated by Claude Code