ci(web): lint and budget gates no longer skip the webview and sidecar tests
Problem
Two jobs in ci-web.yml run lint or budget gates before tests in the same job, with no if: !cancelled() on the tests. A gate failure skips the tests silently, so their results are lost.
react-apps-check-shard:bun run check(Oxlint, Oxfmt, type check), the React Compiler check, the generated-bundle merge-driver test and the PR-scoped rules all run beforeTest webviews. A format miss skips every webview test on both shards. #22127 already fixed this for the eager JS budget step only.diff-sidecar-check: oneCheck Rust sidecarstep runscargo fmt --checkand clippy beforecargo test, so a format miss also skips the sidecar tests, the generated-type check and the diff-viewer perf budget.
Change
react-apps-check-shard: each gate gets anidandcontinue-on-error: true. A finalFail on the gate checksstep (if: !cancelled()) fails the job and names every gate that failed. This replaces the budget-only step from #22127. A failed bundle build or Playwright install still stops the tests, because the tests need them.diff-sidecar-check: fmt and clippy move into their ownLint Rust sidecar (fmt, clippy)step withcontinue-on-error.Test Rust sidecarruns next, and a final step fails the job if the lint failed.
Before: one gate red, and the tests show as skipped. After: the job is still red, and the test results are there too.
The job's matrix (#22146) and runs-on are unchanged.
Verification
actionlint(with shellcheck) is clean onci-web.yml.tests/test_web_validation.pyandtests/test_ci_change_areas.pyhave the same pass and fail set before and after this change. The failures that show up locally come from a sparse checkout and are unrelated.- Editing
ci-web.ymlroutes every web subarea, so this PR's own run exercises both jobs.
Proof
Not UI: this changes CI workflow step ordering only, and nothing user-visible.
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Ensures lint, format, and budget failures no longer hide webview and sidecar test results in ci-web.yml. Previously, a failing gate in react-apps-check-shard or diff-sidecar-check skipped dependent test runs without any trace.
Changes
- In
react-apps-check-shard, each gate (merge driver, eager JS budget, React Compiler, webviews check, PR-scoped rules) records its outcome withcontinue-on-error, and a final step fails the job listing any failed gate. - In
diff-sidecar-check, fmt and clippy move to their own lint step withcontinue-on-error, and a final step fails the job when lint fails, socargo testand downstream checks still run. - Failed bundle builds or engine installs still stop dependent tests, since those steps are prerequisites.