test(ci): pin WASM_BINDGEN_TEST_TIMEOUT to 70 in ci_wiring - #456
Conversation
#453 established WASM_BINDGEN_TEST_TIMEOUT is a whole-run timer, not a per-test one, and that 30 (set by #432) clips Safari's observed tail (up to 30.9s) rather than the slowest single test. This assertion pins the value at 70 -- ~2x that tail -- so a later edit cannot quietly lower it back toward 30 behind a green run that proves nothing about the margin left. Red on this branch: dobby-coder has no workflows: write, so the build.yml patch that raises the value and corrects its comment is posted on #454 for a maintainer to apply. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Rule check: 5 rules in force (atomic-commits, code-comments, draft-pull-requests, no-summary-issues, test-suite-before-submit) — all comply. Single well-described commit; the new test's doc-comment density matches its immediate neighbour (the_wasm_browser_job_has_an_honest_timeout_and_no_retry_wrapper) in both style and length; PR is already a draft; no summary/report issue was created (the patch was posted as a comment on the existing #454, not a new issue); the full ci_wiring suite was run before submission and the one failure is the documented, expected one.
Combined with the prior review pass: build is clean, cargo fmt --check and clippy pass, and the test suite runs 19/20 with the single expected failure (the_wasm_browser_timeout_is_pinned_above_safaris_observed_tail, red only because build.yml's WASM_BINDGEN_TEST_TIMEOUT is still 30 and this bot has no workflows: write to apply the linked patch). No code bugs found; the line-search/strip/trim logic is correct and matches the real current workflow value.
No blocking findings. Verdict: approve — a maintainer still needs to apply the build.yml patch posted on #454 to turn the one red check green. (Posted as COMMENT rather than APPROVE: GitHub rejects self-approval since this PR was opened by the same dobby-coder bot identity — the verdict itself is unaffected.)
Part of #454, graduated from #453 and #247.
Read this first: one check is red on purpose, and I cannot turn it green
Test workspace (pg-core)fails, on the one assertion this PR adds:the_wasm_browser_timeout_is_pinned_above_safaris_observed_tail. It failsbecause
.github/workflows/build.ymlstill setsWASM_BINDGEN_TEST_TIMEOUT: 30while the assertion demands
70.dobby-coderhas noworkflows: write, so the half of this change that lives inbuild.ymlcannot be pushed from here. That two-halves split is the thingpg-core/tests/ci_wiring.rswas written to catch, and its file header spells itout: the code and tests go in a PR, the workflow YAML is applied by hand, and
twice before, nothing noticed the second half never arrived. This PR is an
instance of that split, not an exception to it. Apply the patch below to this
branch and the check goes green; nothing else about the PR changes.
Test workspace (pg-cli),Test workspace (pg-pkg)andTest workspace (cryptify)also show red. They are not separate failures. All three ended withconclusion
cancelled, killed by the matrix's fail-fast when thepg-corejobfailed, and their logs contain no failing test:
pg-cligot through its 7 testsgreen before the cancel reached it. Every other check passes, including all
three browser jobs.
What this does
test-wasm-browserssetsWASM_BINDGEN_TEST_TIMEOUT: 30. #453 established thatvalue is a timer over the whole
wasm-pack testrun, not per test, and that itclips Safari's observed tail (up to 30.9s across 22 green runs) rather than
bounding a single slow test. This PR pins the correct value, 70 (~2x that tail),
as an assertion in
pg-core/tests/ci_wiring.rs, beside the#432-addedassertions beneath it.
The gate is the literal number rather than a passing job on purpose. A timeout
planted near the suite's measured duration fails only the unlucky runs, so a
green browser job proves nothing about the margin left. Only a check on the
literal value catches a later edit drifting it back toward 30.
Workflow patch, for a maintainer to apply
This is what needs to land on
dobby/pin-wasm-bindgen-test-timeout-454:The comment changes with the value. The old one describes a per-test timer, which
is the reading #453 disproved, so leaving it in place beside a raised number would
keep the wrong model on file.
Applying it needs the
workflowtoken scope (gh auth refresh -s workflow).Checking the branch out and editing line 106 works. So does this, which needs no
checkout, replaces that exact block and nothing else, and stops with
expected 1 match, found 0rather than writing anything if the file has drifted:(Also posted as a comment on #454.)
Verification
Re-run today against
fd015e7, on top of the earlier round:short of the
PUTI have no scope for. Its output decodes to abuild.ymlthat differs from the branch's in exactly the six lines of the diff.
cargo test --manifest-path pg-core/Cargo.toml --features test,rust,stream --test ci_wiringis 20 passed, 0 failed. Thevalue alone (
30to70, comment untouched) also passes, so the assertionreads the value and is not coupled to the comment text.
the_wasm_browser_timeout_is_pinned_above_safaris_observed_tail, withis 30, not 70. Values30and69both fail.git statusis clean.fd015e7:pg-core's lib tests are 73/73 green andci_wiringis19/20, the one failure being this assertion. Format, clippy, semver, wire
compat and all three browser jobs pass.
git diff --name-only origin/main...HEAD -- .github/workflows/printsnothing. The only file this branch touches is
pg-core/tests/ci_wiring.rs.Nothing else in
build.ymlchanges:timeout-minutes, the matrix and the runcommand are untouched.
🤖 Generated with Claude Code