Repository navigation
ci(web): lint and budget gates no longer skip the webview and sidecar tests - #22197
Conversation
… tests react-apps-check-shard ran bun run check, the React Compiler check, the merge-driver test and the PR-scoped rules before Test webviews, so a lint or format miss skipped every webview test. diff-sidecar-check ran cargo fmt and clippy in the same step as cargo test. Each gate now records its outcome with continue-on-error and a final step fails the job on any of them; a failed bundle build or engine install still stops the tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Probably yours: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on fee6636 to compare; do not merge until green; see lane-rules
Agents: |
|
Bead |
[Low impact] The PR appears safe to merge; tests can run after gate failures, and those failures still fail CI. SummaryThis PR lets webview and Rust sidecar tests run after lint or budget failures without making those failures pass.
No actionable issues found. No previous review threads were supplied. The merge bases differed, so this review covered the full PR diff. Verification was by code inspection; no workflows or tests were run. Diagram%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Build web bundles] --> B[Run gates and record failures]
B --> C[Install browser engines]
C --> D[Run webview tests]
D --> E[Fail job for recorded gate failures]
F[Run Rust lint and record failure] --> G[Run Rust tests]
G --> H[Check generated types and performance]
H --> I[Fail job for recorded lint failure]
Reviews (6) · Last reviewed commit: "Merge branch 'feat-cmux-next' into ci/we..." · Reviewed by Greptile |
|
Found 18 test failures on Blacksmith runners: Failures
...and 8 more test failures. View all on Blacksmith
|
|
Subagent review at 0c6226b (correctness first): approve. The PR touches YAML only and actionlint is clean. Every red is a base red or infra: the Vite warm-up lint red; 16 webview test failures that were hidden behind that lint red before this PR and are now visible (#22118 is fixing them); and a cancelled release-compile. None is caused by this diff, so I'm adding |
# Conflicts: # .github/workflows/ci-web.yml
|
I merged feat-cmux-next at its tip again, 02d57c8. ci-web.yml conflicted with #22237, which moved the shard-independent gates to shard 1. I kept both changes: each gate step keeps its |
|
|
|
Review (correctness first, subagent), head The first review was at In
Verdict: MERGE |
|
Shipped in:
|
…ecome instantiable structs (#24330) `cmux-next checks` is red on every feat-cmux-next PR. Its namespace-type rule rejects `AgentTurnRing` (AttentionHighlightLook.swift) and `AgentPaneNeedsYouSetting`, both all-static public enums, and a lint red also skips the checks that run after it in the same job (#22197), so it costs more than the two lines it names. `scripts/lint-ios-package-conventions.sh --namespace-fix`, the repo's own fixer, makes each an instantiable struct with a public init. Every reference is a static member (`AgentTurnRing.tunable`, `AgentPaneNeedsYouSetting.enabledPath` and `.fallback`); nothing extends or conforms either type, and neither is used as a metatype, generic argument or switch subject, so no call site changes and no behavior does. Base red, not this lane's: the same five checks fail with a byte-identical failure set on a markdown-only PR (#24269) and a Swift PR (#24262), and both violations are present at base tip 50a7cb4. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cb8-bbf0-7010-8d04-f9f2c0cb55df&host=big-red Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…g the web lint base red (#25543) * webviews: give the workflow gallery's three a11y roles the reasons the lint asks for `vp lint` reports three warnings in this file and exits 1, so the `web lint (fast)` job fails for every push that touches webviews, and a base lint red skips the checks after it in the same job (#22197). Nothing here is actually wrong: an inline SVG drawn from live numbers is not an `<img>`, a bar whose fill is a child span cannot be a `<progress>`, and a tablist with a roving tabindex must not be a tab stop itself. Every other site in this package that makes one of these choices already carries an `oxlint-disable-next-line` with its reason (`charts.tsx`, `ThemePreview.tsx`, `MessageActions.tsx`, `AttachmentViews.tsx`, `Tree.tsx`); this file was the one that did not. So this follows that convention rather than loosening the rule or changing the markup: comments only, no behaviour and no rendering change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9cc710fd4775017aab15 * Say precisely why an img cannot stand in for the sparkline The review called the old reason broad: an `<img>` can of course render an SVG, once it is serialized. What it cannot do is host geometry built from the workflow's own numbers and update it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9cc710fd4775017aab15 --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Problem
Two jobs in
ci-web.ymlrun lint or budget gates before tests in the same job, with noif: !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. Keep shiki and the empty state off the markdown page's first load #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 Keep shiki and the empty state off the markdown page's first load #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-onare 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.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-botwith 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 inreact-apps-check-shardordiff-sidecar-checkskipped dependent test runs without any trace.Changes
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.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.Written for commit 571cb9d. Summary will update on new commits.