Repository navigation
e2e: each section starts with Stripe's events going out - #793
Conversation
billing-page holds the Stripe fake's webhooks for its held return. When it stops early (a module stall on that page, three times in an hour), the hold stays, and trials, next on the same fake, gets no Checkout webhook: seven failures of its own that aren't its. Each section now releases any events a section before it left held. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alexlwn123
left a comment
There was a problem hiding this comment.
Pass at 1a41058949ead555c5c04b6a7882ce9dfd36afe0.
The section boundary now clears the Stripe hold and delivers queued events through the existing fake helper, preventing an early billing-page failure from suppressing subsequent trials webhooks. I traced the sequential lane runner, every hold/release site, and the local/hosted/rehearsal fake guards; skipped sections and dry runs remain untouched. The small shared reset is appropriate for this purpose, with no blocking regression found.
Validation: source review and git diff --check HEAD^ HEAD passed. CI check and all four e2e shards are still running; I did not rerun the browser e2e or independently reproduce the fault injection reported in the PR. The external engineering-style document referenced by AGENTS.md is unavailable at its configured path.
Flake: after billing-page stops early with
window.__held.release is not a function, trials fails 7 checks of its own. That happened in queue runs 41151869271 (#741) and 41151870056 (#738), and in #779's 41153845292.Cause (test): billing-page holds the Stripe fake's webhooks (
s.stripe.hold_events(true), billing.rs:1723) for its held return and releases them at :1739. When the section stops between those two lines, the hold stays. trials runs next on the same fake, so its Checkouts never send their webhooks, and every check that waits on a seat fails.billing-page's own early stop is the module stall. In all three runs, the
/settings?pack=page'sshell.jsimports stopped partway, so the shell never made the held POST. That's a separate fix, being root-caused now.Fix: each section starts by releasing any Stripe events a section before it left held (
Suite::section). On the hosted lane, where there's no fake, nothing happens. No check, wait or limit changes.Proof: locally,
cargo xtask e2e --only billing-page,trials, with billing-page forced to stop right after itshold_events(true):Unforced, billing-page passes 49/0 locally.
🤖 Generated with Claude Code