ci(web): lint and budget gates no longer skip the webview and sidecar tests

Merged
TE
17d ago
+48-7

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 before Test 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: one Check Rust sidecar step runs cargo fmt --check and clippy before cargo 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 an id and continue-on-error: true. A final Fail on the gate checks step (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 own Lint Rust sidecar (fmt, clippy) step with continue-on-error. Test Rust sidecar runs 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 on ci-web.yml.
  • tests/test_web_validation.py and tests/test_ci_change_areas.py have 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.yml routes 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


View with [code]smith Autofix with [code]smith
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 with continue-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 with continue-on-error, and a final step fails the job when lint fails, so cargo test and downstream checks still run.
  • Failed bundle builds or engine installs still stop dependent tests, since those steps are prerequisites.