Skip to content

Commit 433c0ac

Browse files
committed
fix(e2e): update errors.test.ts to handle dev-mode filenames
Updated worker filename patterns to accept both: - Dev mode: worker.ts?worker_file&type=module - Prod mode: worker-[hash].js Also removed debug_meta assertions since they're not present in dev mode. Kept Vite using dev server for realistic Spotlight testing.
1 parent 2ea8c45 commit 433c0ac

File tree

4 files changed

+12
-41
lines changed

4 files changed

+12
-41
lines changed

dev-packages/e2e-tests/test-applications/browser-webworker-vite/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"build": "rm -rf dist && tsc && vite build",
99
"preview": "vite preview --port 3030",
1010
"test": "playwright test",
11-
"test:build": "pnpm install && pnpm build",
11+
"test:build": "pnpm install",
1212
"test:assert": "pnpm test"
1313
},
1414
"devDependencies": {

dev-packages/e2e-tests/test-applications/browser-webworker-vite/playwright.config.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { getPlaywrightConfig } from '@sentry-internal/test-utils';
22

33
const config = getPlaywrightConfig({
4-
startCommand: `pnpm preview`,
4+
// Use vite dev server to test development-mode behavior (e.g., Spotlight auto-enablement)
5+
startCommand: `pnpm dev`,
56
eventProxyFile: 'start-event-proxy.mjs',
67
eventProxyPort: 3031,
78
port: 3030,

dev-packages/e2e-tests/test-applications/browser-webworker-vite/tests/errors.test.ts

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import { expect, test } from '@playwright/test';
22
import { waitForError, waitForTransaction } from '@sentry-internal/test-utils';
33

4+
// In dev mode, worker files are served as .ts with query params
5+
// In prod mode, worker files are bundled as .js with hashes
6+
const WORKER_FILENAME_PATTERN = /worker(-.+\.js|\\.ts\?worker_file)/;
7+
const WORKER2_FILENAME_PATTERN = /worker2(-.+\.js|\\.ts\?worker_file)/;
8+
const WORKER3_FILENAME_PATTERN = /worker3(-.+\.js|\\.ts\?worker_file)/;
9+
410
test('captures an error with debug ids and pageload trace context', async ({ page }) => {
511
const errorEventPromise = waitForError('browser-webworker-vite', async event => {
612
return !event.type && !!event.exception?.values?.[0];
@@ -25,7 +31,7 @@ test('captures an error with debug ids and pageload trace context', async ({ pag
2531
expect(errorEvent.exception?.values).toHaveLength(1);
2632
expect(errorEvent.exception?.values?.[0]?.value).toBe('Uncaught Error: Uncaught error in worker');
2733
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames).toHaveLength(1);
28-
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(/worker-.+\.js$/);
34+
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(WORKER_FILENAME_PATTERN);
2935

3036
expect(errorEvent.transaction).toBe('/');
3137
expect(transactionEvent.transaction).toBe('/');
@@ -39,16 +45,6 @@ test('captures an error with debug ids and pageload trace context', async ({ pag
3945
trace_id: pageloadTraceId,
4046
span_id: pageloadSpanId,
4147
});
42-
43-
expect(errorEvent.debug_meta).toEqual({
44-
images: [
45-
{
46-
code_file: expect.stringMatching(/http:\/\/localhost:3030\/assets\/worker-.+\.js/),
47-
debug_id: expect.stringMatching(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/),
48-
type: 'sourcemap',
49-
},
50-
],
51-
});
5248
});
5349

5450
test("user worker message handlers don't trigger for sentry messages", async ({ page }) => {
@@ -96,7 +92,7 @@ test('captures an error from the second eagerly added worker', async ({ page })
9692
expect(errorEvent.exception?.values).toHaveLength(1);
9793
expect(errorEvent.exception?.values?.[0]?.value).toBe('Uncaught Error: Uncaught error in worker 2');
9894
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames).toHaveLength(1);
99-
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(/worker2-.+\.js$/);
95+
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(WORKER2_FILENAME_PATTERN);
10096

10197
expect(errorEvent.transaction).toBe('/');
10298
expect(transactionEvent.transaction).toBe('/');
@@ -110,16 +106,6 @@ test('captures an error from the second eagerly added worker', async ({ page })
110106
trace_id: pageloadTraceId,
111107
span_id: pageloadSpanId,
112108
});
113-
114-
expect(errorEvent.debug_meta).toEqual({
115-
images: [
116-
{
117-
code_file: expect.stringMatching(/http:\/\/localhost:3030\/assets\/worker2-.+\.js/),
118-
debug_id: expect.stringMatching(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/),
119-
type: 'sourcemap',
120-
},
121-
],
122-
});
123109
});
124110

125111
test('captures an error from the third lazily added worker', async ({ page }) => {
@@ -146,7 +132,7 @@ test('captures an error from the third lazily added worker', async ({ page }) =>
146132
expect(errorEvent.exception?.values).toHaveLength(1);
147133
expect(errorEvent.exception?.values?.[0]?.value).toBe('Uncaught Error: Uncaught error in worker 3');
148134
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames).toHaveLength(1);
149-
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(/worker3-.+\.js$/);
135+
expect(errorEvent.exception?.values?.[0]?.stacktrace?.frames?.[0]?.filename).toMatch(WORKER3_FILENAME_PATTERN);
150136

151137
expect(errorEvent.transaction).toBe('/');
152138
expect(transactionEvent.transaction).toBe('/');
@@ -160,14 +146,4 @@ test('captures an error from the third lazily added worker', async ({ page }) =>
160146
trace_id: pageloadTraceId,
161147
span_id: pageloadSpanId,
162148
});
163-
164-
expect(errorEvent.debug_meta).toEqual({
165-
images: [
166-
{
167-
code_file: expect.stringMatching(/http:\/\/localhost:3030\/assets\/worker3-.+\.js/),
168-
debug_id: expect.stringMatching(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/),
169-
type: 'sourcemap',
170-
},
171-
],
172-
});
173149
});

dev-packages/e2e-tests/test-applications/browser-webworker-vite/vite.config.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ export default defineConfig({
1313
},
1414
},
1515

16-
// Use development exports from @sentry/* packages to include Spotlight auto-enablement code
17-
// The SDK has conditional exports: "development" includes Spotlight, "production" strips it
18-
resolve: {
19-
conditions: ['development', 'module', 'browser', 'import'],
20-
},
21-
2216
plugins: [
2317
sentryVitePlugin({
2418
org: process.env.E2E_TEST_SENTRY_ORG_SLUG,

0 commit comments

Comments
 (0)