|
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 15s
Harness Replays / detect-changes (pull_request) Failing after 14s
Harness Replays / Harness Replays (pull_request) Has been skipped
E2E API Smoke Test / detect-changes (pull_request) Successful in 58s
CI / Detect changes (pull_request) Successful in 59s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 57s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m2s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
sop-tier-check / tier-check (pull_request) Successful in 15s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m1s
CI / Platform (Go) (pull_request) Successful in 10s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 10s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 8s
CI / Python Lint & Test (pull_request) Successful in 10s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 10s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 9s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m42s
CI / Canvas (Next.js) (pull_request) Failing after 8m50s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Root cause of the ApprovalBanner test flakiness was mixing vi.useRealTimers() and vi.useFakeTimers() across test files: - PurchaseSuccessModal's afterEach called vi.useRealTimers(), leaving fake-timer state in an inconsistent position for the next test file. - ApprovalBanner's afterEach also called vi.useRealTimers(), further polluting the state for subsequent files. Fix: both files now consistently use vi.useFakeTimers() in beforeEach/afterEach. Per-spy mockReset() replaces the global vi.restoreAllMocks() in ApprovalBanner's afterEach so each test gets a clean api mock without touching the module-level mock. Changes: - PurchaseSuccessModal: removed vi.restoreAllMocks() and vi.useRealTimers() from all afterEach/beforeEach hooks (file never creates spies, so restore was a no-op anyway). - ApprovalBanner: vi.useFakeTimers() in all afterEach hooks; added mockGet?.mockReset() and mockPost?.mockReset() for per-spy cleanup; removed spurious mockGet.mockRestore() from one test (afterEach already handles cleanup). Stable across 3 consecutive full-suite runs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| e2e | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| components.json | ||
| Dockerfile | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| playwright.staging.config.ts | ||
| postcss.config.js | ||
| tsconfig.json | ||
| vitest.config.ts | ||