Skip to content

Commit 5a94cad

Browse files
committed
add error session update test for page lifecycle
1 parent 2f8adc0 commit 5a94cad

3 files changed

Lines changed: 30 additions & 0 deletions

File tree

dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/subject.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@ document.getElementById('manual-session').addEventListener('click', () => {
1010
Sentry.startSession();
1111
Sentry.captureException('Test error from manual session');
1212
});
13+
14+
document.getElementById('error').addEventListener('click', () => {
15+
throw new Error('Test error from error button');
16+
});

dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/template.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
<body>
77
<button id="navigate">Navigate via pushState</button>
88
<button id="manual-session">Manual session</button>
9+
<button id="error">Throw error</button>
910
</body>
1011
</html>

dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,28 @@ sentryTest(
7878
);
7979
},
8080
);
81+
82+
sentryTest('Updates the session when an error is thrown', async ({ getLocalTestUrl, page }) => {
83+
const url = await getLocalTestUrl({ testDir: __dirname });
84+
85+
const initialSessionPromise = waitForSession(page, s => !!s.init && s.status === 'ok');
86+
await page.goto(url);
87+
const initialSession = await initialSessionPromise;
88+
89+
// for good measure, throw in a few navigations
90+
await page.locator('#navigate').click();
91+
await page.locator('#navigate').click();
92+
await page.locator('#navigate').click();
93+
94+
const updatedSessionPromise = waitForSession(page, s => !s.init && s.status !== 'ok');
95+
await page.locator('#error').click();
96+
const updatedSession = await updatedSessionPromise;
97+
98+
expect(updatedSession).toEqual({
99+
...initialSession,
100+
errors: 1,
101+
init: false,
102+
status: 'crashed',
103+
timestamp: expect.any(String),
104+
});
105+
});

0 commit comments

Comments
 (0)