Skip to content

Commit fce8e8c

Browse files
authored
test: Port loader tests from karma to playwright (#11688)
This ports `packages/browser/test/integration/suites/loader.js` and `packages/browser/test/integration/suites/loader-specific.js` to playwright. Specifically it just adds tests for SDK source and breadcrumbs, which were missing previously. ref #11084
1 parent 3a45a3c commit fce8e8c

File tree

10 files changed

+85
-113
lines changed

10 files changed

+85
-113
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Sentry.addBreadcrumb({
2+
category: 'auth',
3+
message: 'testing loader',
4+
level: 'error',
5+
});
6+
Sentry.captureMessage('test');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { expect } from '@playwright/test';
2+
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';
5+
6+
sentryTest('should add breadcrumb to message', async ({ getLocalTestUrl, page }) => {
7+
const url = await getLocalTestUrl({ testDir: __dirname });
8+
const req = await waitForErrorRequestOnUrl(page, url);
9+
10+
const eventData = envelopeRequestParser(req);
11+
12+
expect(eventData.message).toBe('test');
13+
expect(eventData.breadcrumbs?.length).toBe(1);
14+
expect(eventData.breadcrumbs).toEqual([
15+
{
16+
category: 'auth',
17+
level: 'error',
18+
message: 'testing loader',
19+
timestamp: expect.any(Number),
20+
},
21+
]);
22+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Sentry.onLoad(function () {
2+
Sentry.init({});
3+
Sentry.addBreadcrumb({
4+
category: 'auth',
5+
message: 'testing loader',
6+
level: 'error',
7+
});
8+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Sentry.captureMessage('test');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { expect } from '@playwright/test';
2+
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';
5+
6+
sentryTest('should add breadcrumb from onLoad callback to message', async ({ getLocalTestUrl, page }) => {
7+
const url = await getLocalTestUrl({ testDir: __dirname });
8+
const req = await waitForErrorRequestOnUrl(page, url);
9+
10+
const eventData = envelopeRequestParser(req);
11+
12+
expect(eventData.message).toBe('test');
13+
expect(eventData.breadcrumbs?.length).toBe(1);
14+
expect(eventData.breadcrumbs).toEqual([
15+
{
16+
category: 'auth',
17+
level: 'error',
18+
message: 'testing loader',
19+
timestamp: expect.any(Number),
20+
},
21+
]);
22+
});

dev-packages/browser-integration-tests/loader-suites/loader/onLoad/captureException/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,12 @@ sentryTest('captureException works', async ({ getLocalTestUrl, page }) => {
1111

1212
expect(eventData.message).toBe('Test exception');
1313
});
14+
15+
sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
16+
const url = await getLocalTestUrl({ testDir: __dirname });
17+
const req = await waitForErrorRequestOnUrl(page, url);
18+
19+
const eventData = envelopeRequestParser(req);
20+
21+
expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
22+
});

dev-packages/browser-integration-tests/loader-suites/loader/onLoad/captureExceptionInOnLoad/test.ts

+17
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,20 @@ sentryTest('captureException works inside of onLoad', async ({ getLocalTestUrl,
1919

2020
expect(eventData.message).toBe('Test exception');
2121
});
22+
23+
sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
24+
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
25+
return route.fulfill({
26+
status: 200,
27+
contentType: 'application/json',
28+
body: JSON.stringify({ id: 'test-id' }),
29+
});
30+
});
31+
32+
const url = await getLocalTestUrl({ testDir: __dirname });
33+
const req = await waitForErrorRequestOnUrl(page, url);
34+
35+
const eventData = envelopeRequestParser(req);
36+
37+
expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
38+
});

packages/browser/test/integration/suites/loader-specific.js

-43
This file was deleted.

packages/browser/test/integration/suites/loader.js

-67
This file was deleted.

packages/browser/test/integration/suites/shell.js

-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ function runVariant(variant) {
2424
*/
2525
{{ suites/onunhandledrejection.js }} // biome-ignore format: No trailing commas
2626
{{ suites/builtins.js }} // biome-ignore format: No trailing commas
27-
{{ suites/loader.js }} // biome-ignore format: No trailing commas
2827
});
2928
}
3029

@@ -33,5 +32,3 @@ for (var idx in variants) {
3332
runVariant(variants[idx]);
3433
})();
3534
}
36-
37-
{{ suites/loader-specific.js }} // biome-ignore format: No trailing commas

0 commit comments

Comments
 (0)