Skip to content

Commit 88f8251

Browse files
committed
Add withScope test and delete bad not modified test
1 parent 3c686c5 commit 88f8251

File tree

2 files changed

+66
-46
lines changed
  • dev-packages/browser-integration-tests/suites/integrations/featureFlags/launchdarkly

2 files changed

+66
-46
lines changed

dev-packages/browser-integration-tests/suites/integrations/featureFlags/launchdarkly/errorFlagsNotModified/test.ts

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import { expect } from '@playwright/test';
2+
3+
import { sentryTest } from '../../../../../utils/fixtures';
4+
5+
import { envelopeRequestParser, waitForErrorRequest } from '../../../../../utils/helpers';
6+
7+
import type { Scope } from '@sentry/browser';
8+
9+
sentryTest('Flag evaluations in forked scopes are stored separately.', async ({ getLocalTestPath, page }) => {
10+
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
11+
return route.fulfill({
12+
status: 200,
13+
contentType: 'application/json',
14+
body: JSON.stringify({ id: 'test-id' }),
15+
});
16+
});
17+
18+
const url = await getLocalTestPath({ testDir: __dirname, skipDsnRouteHandler: true });
19+
await page.goto(url);
20+
21+
const forkedReqPromise = waitForErrorRequest(page, event => !!event.tags && event.tags.isForked === true);
22+
const mainReqPromise = waitForErrorRequest(page, event => !!event.tags && event.tags.isForked === false);
23+
24+
const hasButton = await page.evaluate(() => {
25+
const Sentry = (window as any).Sentry;
26+
const errorButton = document.querySelector('#error');
27+
if (!(errorButton instanceof HTMLButtonElement)) {
28+
return false;
29+
}
30+
const ldClient = (window as any).initializeLD();
31+
32+
ldClient.variation('shared', true);
33+
34+
Sentry.withScope((scope: Scope) => {
35+
ldClient.variation('forked', true);
36+
ldClient.variation('shared', false);
37+
scope.setTag('isForked', true);
38+
errorButton.click();
39+
});
40+
41+
ldClient.variation('main', true);
42+
Sentry.getCurrentScope().setTag('isForked', false);
43+
errorButton.click();
44+
return true;
45+
});
46+
47+
if (!hasButton) {
48+
throw new Error('Expected template to have a button that throws an error')
49+
}
50+
51+
const forkedReq = await forkedReqPromise;
52+
const forkedEvent = envelopeRequestParser(forkedReq);
53+
54+
const mainReq = await mainReqPromise;
55+
const mainEvent = envelopeRequestParser(mainReq);
56+
57+
expect(forkedEvent.contexts?.flags?.values).toEqual([
58+
{ flag: 'forked', result: true },
59+
{ flag: 'shared', result: false },
60+
]);
61+
62+
expect(mainEvent.contexts?.flags?.values).toEqual([
63+
{ flag: 'shared', result: true },
64+
{ flag: 'main', result: true },
65+
]);
66+
});

0 commit comments

Comments
 (0)