Skip to content

Commit 735761c

Browse files
committed
Set hidden visibility before pagehide in react INP tests
This is a workaround for Chromium 147 which throttles `requestIdleCallback` more aggressively after a `pagehide` event which causes our INP tests to fail. Develop is not affacted, the web-vitals 4.x rewrite handles this better but it's not worth backporting this to v8.
1 parent c1d40f6 commit 735761c

3 files changed

Lines changed: 12 additions & 3 deletions

File tree

dev-packages/e2e-tests/test-applications/react-17/tests/transactions.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,11 @@ test('sends an INP span', async ({ page }) => {
6666

6767
await page.waitForTimeout(500);
6868

69-
// Page hide to trigger INP
69+
// Page hide to trigger INP. Set visibilityState=hidden so v8's `whenIdle` short-circuits
70+
// instead of waiting on requestIdleCallback, which Chromium 147+ throttles after pagehide.
7071
await page.evaluate(() => {
72+
Object.defineProperty(document, 'visibilityState', { value: 'hidden', writable: true });
73+
document.dispatchEvent(new Event('visibilitychange'));
7174
window.dispatchEvent(new Event('pagehide'));
7275
});
7376

dev-packages/e2e-tests/test-applications/react-router-6/tests/transactions.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,11 @@ test('sends an INP span', async ({ page }) => {
6666

6767
await page.waitForTimeout(500);
6868

69-
// Page hide to trigger INP
69+
// Page hide to trigger INP. Set visibilityState=hidden so v8's `whenIdle` short-circuits
70+
// instead of waiting on requestIdleCallback, which Chromium 147+ throttles after pagehide.
7071
await page.evaluate(() => {
72+
Object.defineProperty(document, 'visibilityState', { value: 'hidden', writable: true });
73+
document.dispatchEvent(new Event('visibilitychange'));
7174
window.dispatchEvent(new Event('pagehide'));
7275
});
7376

dev-packages/e2e-tests/test-applications/react-router-7-spa/tests/transactions.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,11 @@ test('sends an INP span', async ({ page }) => {
6666

6767
await page.waitForTimeout(500);
6868

69-
// Page hide to trigger INP
69+
// Page hide to trigger INP. Set visibilityState=hidden so v8's `whenIdle` short-circuits
70+
// instead of waiting on requestIdleCallback, which Chromium 147+ throttles after pagehide.
7071
await page.evaluate(() => {
72+
Object.defineProperty(document, 'visibilityState', { value: 'hidden', writable: true });
73+
document.dispatchEvent(new Event('visibilitychange'));
7174
window.dispatchEvent(new Event('pagehide'));
7275
});
7376

0 commit comments

Comments
 (0)