Skip to content

Commit b4ee16b

Browse files
test(e2e): Avoid race conditions when waiting for captured message (#4595)
1 parent cbb85b2 commit b4ee16b

File tree

5 files changed

+37
-8
lines changed

5 files changed

+37
-8
lines changed

samples/react-native/e2e/captureMessage.test.android.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Envelope, EventItem } from '@sentry/core';
33
import { device } from 'detox';
44
import {
55
createSentryServer,
6-
containingEvent,
6+
containingEventWithAndroidMessage,
77
} from './utils/mockedSentryServer';
88
import { tap } from './utils/tap';
99
import { getItemOfTypeFrom } from './utils/event';
@@ -17,7 +17,9 @@ describe('Capture message', () => {
1717
beforeAll(async () => {
1818
await device.launchApp();
1919

20-
const envelopePromise = sentryServer.waitForEnvelope(containingEvent);
20+
const envelopePromise = sentryServer.waitForEnvelope(
21+
containingEventWithAndroidMessage('Captured message'),
22+
);
2123
await tap('Capture message');
2224
envelope = await envelopePromise;
2325
});

samples/react-native/e2e/captureMessage.test.ios.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Envelope, EventItem } from '@sentry/core';
33
import { device } from 'detox';
44
import {
55
createSentryServer,
6-
containingEvent,
6+
containingEventWithMessage,
77
} from './utils/mockedSentryServer';
88
import { tap } from './utils/tap';
99
import { getItemOfTypeFrom } from './utils/event';
@@ -17,7 +17,9 @@ describe('Capture message', () => {
1717
beforeAll(async () => {
1818
await device.launchApp();
1919

20-
const envelopePromise = sentryServer.waitForEnvelope(containingEvent);
20+
const envelopePromise = sentryServer.waitForEnvelope(
21+
containingEventWithMessage('Captured message'),
22+
);
2123
await tap('Capture message');
2224
envelope = await envelopePromise;
2325
});

samples/react-native/e2e/envelopeHeader.test.android.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Envelope } from '@sentry/core';
33
import { device } from 'detox';
44
import {
55
createSentryServer,
6-
containingEvent,
6+
containingEventWithAndroidMessage,
77
} from './utils/mockedSentryServer';
88
import { HEADER } from './utils/consts';
99
import { tap } from './utils/tap';
@@ -17,7 +17,9 @@ describe('Capture message', () => {
1717
beforeAll(async () => {
1818
await device.launchApp();
1919

20-
const envelopePromise = sentryServer.waitForEnvelope(containingEvent);
20+
const envelopePromise = sentryServer.waitForEnvelope(
21+
containingEventWithAndroidMessage('Captured message'),
22+
);
2123

2224
await tap('Capture message');
2325
envelope = await envelopePromise;

samples/react-native/e2e/envelopeHeader.test.ios.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Envelope } from '@sentry/core';
33
import { device } from 'detox';
44
import {
55
createSentryServer,
6-
containingEvent,
6+
containingEventWithMessage,
77
} from './utils/mockedSentryServer';
88
import { HEADER } from './utils/consts';
99
import { tap } from './utils/tap';
@@ -17,7 +17,9 @@ describe('Capture message', () => {
1717
beforeAll(async () => {
1818
await device.launchApp();
1919

20-
const envelopePromise = sentryServer.waitForEnvelope(containingEvent);
20+
const envelopePromise = sentryServer.waitForEnvelope(
21+
containingEventWithMessage('Captured message'),
22+
);
2123

2224
await tap('Capture message');
2325
envelope = await envelopePromise;

samples/react-native/e2e/utils/mockedSentryServer.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,27 @@ export function containingEvent(envelope: Envelope) {
9494
return envelope[1].some(item => itemHeaderIsType(item[0], 'event'));
9595
}
9696

97+
export function containingEventWithAndroidMessage(message: string) {
98+
return (envelope: Envelope) =>
99+
envelope[1].some(
100+
item =>
101+
itemHeaderIsType(item[0], 'event') &&
102+
itemBodyIsEvent(item[1]) &&
103+
item[1].message &&
104+
(item[1].message as unknown as { message: string }).message === message,
105+
);
106+
}
107+
108+
export function containingEventWithMessage(message: string) {
109+
return (envelope: Envelope) =>
110+
envelope[1].some(
111+
item =>
112+
itemHeaderIsType(item[0], 'event') &&
113+
itemBodyIsEvent(item[1]) &&
114+
item[1].message === message,
115+
);
116+
}
117+
97118
export function containingTransactionWithName(name: string) {
98119
return (envelope: Envelope) =>
99120
envelope[1].some(

0 commit comments

Comments
 (0)