# X_E2E_SERVICE_WORKER_ABSENT

## Means

no service worker took control of the page within the budget

## Typical cause

bounded **in the page** rather than by a loop in the harness, so there is exactly one retry mechanism; an unbounded wait is a test that hangs rather than fails

## Fix

confirm the page registers one: `await page.evaluate(() => navigator.serviceWorker?.controller !== undefined)` — if it does, pass a longer budget to `waitForServiceWorker({ timeoutMs })`

[Testing](/error-codes#testing)
