Skip to content

Commit cb64003

Browse files
committed
wip
1 parent 4422e61 commit cb64003

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

packages/signals/signals-integration-tests/src/helpers/network-utils.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Page, Route, Request } from '@playwright/test'
22
import { SegmentEvent } from '@segment/analytics-next'
33
import { Signal } from '@segment/analytics-signals'
4+
import { waitForCondition } from './playwright-utils'
45

56
type FulfillOptions = Parameters<Route['fulfill']>['0']
67
export interface XHRRequestOptions {
@@ -160,6 +161,31 @@ export class TrackingAPIRequestBuffer {
160161
}
161162

162163
export class SignalAPIRequestBuffer extends TrackingAPIRequestBuffer {
164+
async waitForEvents(
165+
numberOfSignals: number,
166+
signalType?: Signal['type']
167+
): Promise<SegmentEvent[]> {
168+
await waitForCondition(
169+
() => this.getEvents(signalType).length >= numberOfSignals,
170+
{
171+
timeout: 5000,
172+
errorMessage: `Found ${
173+
this.getEvents(signalType).length
174+
} signals, expected ${numberOfSignals}`,
175+
}
176+
)
177+
const events = this.getEvents(signalType)
178+
if (events.length < numberOfSignals) {
179+
throw new Error(
180+
`Expected ${numberOfSignals} signals of type ${signalType}, but got ${
181+
this.getEvents(signalType).length
182+
}`
183+
)
184+
} else {
185+
return events
186+
}
187+
}
188+
163189
override getEvents(signalType?: Signal['type']): SegmentEvent[] {
164190
if (signalType) {
165191
return this.getEvents().filter((e) => e.properties!.type === signalType)

packages/signals/signals-integration-tests/src/tests/signals-vanilla/network-signals-xhr.test.ts

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { test, expect } from '@playwright/test'
22
import { IndexPage } from './index-page'
3+
import { sleep } from '@segment/analytics-core'
34

45
const basicEdgeFn = `const processSignal = (signal) => {}`
56

@@ -23,7 +24,7 @@ test.describe('network signals - XHR', () => {
2324
})
2425

2526
// Wait for the signals to be flushed
26-
await indexPage.waitForSignalsApiFlush()
27+
await sleep(300)
2728

2829
const networkEvents = indexPage.signalsAPI.getEvents('network')
2930

@@ -45,10 +46,7 @@ test.describe('network signals - XHR', () => {
4546

4647
expect(data).toEqual({ foo: 'test' })
4748

48-
// Wait for the signals to be flushed
49-
await indexPage.waitForSignalsApiFlush()
50-
51-
const networkEvents = indexPage.signalsAPI.getEvents('network')
49+
const networkEvents = await indexPage.signalsAPI.waitForEvents(2, 'network')
5250

5351
// Check the request
5452
const requests = networkEvents.filter(
@@ -87,9 +85,7 @@ test.describe('network signals - XHR', () => {
8785
})
8886

8987
// Wait for the signals to be flushed
90-
await indexPage.waitForSignalsApiFlush()
91-
92-
const networkEvents = indexPage.signalsAPI.getEvents('network')
88+
const networkEvents = await indexPage.signalsAPI.waitForEvents(2, 'network')
9389

9490
// Check the request
9591
const requests = networkEvents.filter(
@@ -129,9 +125,8 @@ test.describe('network signals - XHR', () => {
129125
})
130126

131127
// Wait for the signals to be flushed
132-
await indexPage.waitForSignalsApiFlush()
133128

134-
const networkEvents = indexPage.signalsAPI.getEvents('network')
129+
const networkEvents = await indexPage.signalsAPI.waitForEvents(1, 'network')
135130

136131
// Check the response (only response should be captured)
137132
const responses = networkEvents.filter(
@@ -162,7 +157,7 @@ test.describe('network signals - XHR', () => {
162157
})
163158

164159
// Wait for the signals to be flushed
165-
await indexPage.waitForSignalsApiFlush()
160+
await indexPage.signalsAPI.waitForEvents(1, 'network')
166161

167162
// Retrieve the batch of events from the signals request
168163
const networkEvents = indexPage.signalsAPI.getEvents('network')
@@ -210,10 +205,8 @@ test.describe('network signals - XHR', () => {
210205
])
211206

212207
// Wait for the signals to be flushed
213-
await indexPage.waitForSignalsApiFlush()
208+
const networkEvents = await indexPage.signalsAPI.waitForEvents(2, 'network')
214209

215-
// Retrieve the batch of events from the signals request
216-
const networkEvents = indexPage.signalsAPI.getEvents('network')
217210
// Check the request
218211
const requests = networkEvents.filter(
219212
(el) => el.properties!.data.action === 'request'
@@ -251,7 +244,7 @@ test.describe('network signals - XHR', () => {
251244
contentType: 'application/json',
252245
})
253246

254-
await indexPage.waitForSignalsApiFlush()
247+
await indexPage.signalsAPI.waitForEvents(2, 'network')
255248

256249
const networkEvents = indexPage.signalsAPI.getEvents('network')
257250

@@ -289,7 +282,7 @@ test.describe('network signals - XHR', () => {
289282
contentType: 'application/json',
290283
})
291284

292-
await indexPage.waitForSignalsApiFlush()
285+
await indexPage.signalsAPI.waitForEvents(2, 'network')
293286

294287
const networkEvents = indexPage.signalsAPI.getEvents('network')
295288

@@ -330,8 +323,7 @@ test.describe('network signals - XHR', () => {
330323
responseType: 'json',
331324
contentType: 'application/json',
332325
})
333-
334-
await indexPage.waitForSignalsApiFlush()
326+
await indexPage.signalsAPI.waitForEvents(2, 'network')
335327

336328
const networkEvents = indexPage.signalsAPI.getEvents('network')
337329

0 commit comments

Comments
 (0)