fix(web): keep a timeout a timeout in staleOr and navigationStaleOr

Merged
KB
6d ago
+29-2

staleOr and navigationStaleOr are meant to keep a Playwright timeout a timeout, but both matched their stale patterns first. A TimeoutError whose call log quoted resolved to hidden, not attached, or frame was detached became a retryable NODE_STALE, so the runner retried or re-read after a budget that had already run out. The timeout check now runs first in both. Added tests with real call-log text.

Verified

Ran locally: the new tests fail on main with NODE_STALE and pass with the fix. The web unit suite passes and pnpm check is green. Three browser-launch integration tests time out on my machine, and one of them does the same on main.

mainbranch
staleOr, timeout with resolved to hidden or not attached in its call logNODE_STALE, retryableOPERATION_TIMEOUT, not retryable
navigationStaleOr, timeout with frame was detached in its call logNODE_STALE, retryableOPERATION_TIMEOUT, not retryable