Skip to content

Commit c26311f

Browse files
committed
wip
1 parent 005d71c commit c26311f

File tree

3 files changed

+25
-30
lines changed

3 files changed

+25
-30
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export function waitForCondition(
1919
resolve()
2020
} else if (Date.now() - startTime >= timeout) {
2121
clearInterval(interval)
22-
reject(new Error(errorMessage))
22+
reject(new Error(`${errorMessage}. Timeout: ${timeout}ms`))
2323
}
2424
} catch (error) {
2525
clearInterval(interval)

packages/signals/signals-integration-tests/src/tests/custom-elements/components/App.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import { Select, SelectItem } from './Select'
55
export const App: React.FC = () => {
66
return (
77
<main>
8-
<div>
8+
<div id="textfield">
99
<h2>TextField</h2>
1010
<TextField label="some-text-field" />
1111
</div>
12-
<div>
12+
<div id="select">
1313
<h2>Select</h2>
1414
<Select>
1515
<SelectItem>Chocolate</SelectItem>
@@ -18,7 +18,6 @@ export const App: React.FC = () => {
1818
<SelectItem>Vanilla</SelectItem>
1919
</Select>
2020
</div>
21-
);
2221
</main>
2322
)
2423
}
Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { test, expect } from '@playwright/test'
22
import { waitForCondition } from '../../helpers/playwright-utils'
33
import { IndexPage } from './index-page'
4+
import type { SegmentEvent } from '@segment/analytics-next'
45

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

@@ -9,33 +10,28 @@ test('Collecting signals whenever a user selects an item', async ({ page }) => {
910
disableSignalsRedaction: true,
1011
enableSignalsIngestion: true,
1112
})
12-
const fillAndConfirm = async (selector: string, text: string) => {
13-
await page.getByTestId(selector).fill(text)
14-
await page.getByTestId(selector).press('Enter')
13+
14+
const filterClick = (e: SegmentEvent): boolean => {
15+
return (
16+
e.properties!.data.eventType === 'click' &&
17+
e.properties!.data.target.textContent?.includes('Mint')
18+
)
1519
}
16-
await Promise.all([
17-
fillAndConfirm('aria-text-field', 'John Doe'),
18-
waitForCondition(
19-
() => indexPage.signalsAPI.getEvents('interaction').length > 0,
20-
{ errorMessage: 'No interaction signals found' }
21-
),
22-
])
23-
const interactionSignals = indexPage.signalsAPI.getEvents('interaction')
2420

25-
const data = expect.objectContaining({
26-
eventType: 'change',
27-
listener: 'mutation',
28-
change: {
29-
value: 'John Doe',
21+
const waitForInteraction = waitForCondition(
22+
() => {
23+
const events = indexPage.signalsAPI.getEvents('interaction')
24+
return events.some(filterClick)
3025
},
31-
target: expect.objectContaining({
32-
attributes: expect.objectContaining({
33-
type: 'text',
34-
value: 'John Doe',
35-
}),
36-
tagName: 'INPUT',
37-
value: 'John Doe',
38-
}),
39-
})
40-
expect(interactionSignals[0].properties!.data).toMatchObject(data)
26+
{ errorMessage: 'No interaction signals found' }
27+
)
28+
await page.click('#select button')
29+
await page.getByRole('option', { name: 'Mint' }).click()
30+
31+
await waitForInteraction
32+
const signals = indexPage.signalsAPI
33+
.getEvents('interaction')
34+
.filter(filterClick)
35+
36+
expect(signals).toHaveLength(1)
4137
})

0 commit comments

Comments
 (0)