Skip to content

Commit 9c8947e

Browse files
committed
Add support for mutation signals
1 parent 5caf4d6 commit 9c8947e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+4845
-347
lines changed

.changeset/wicked-tomatoes-grin.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@segment/analytics-signals': minor
3+
'@segment/analytics-signals-runtime': minor
4+
---
5+
6+
- Add support for interaction signals for custom components and elements with contenteditable property
7+
- Allow custom disallow list to override network signals, even if same domain.

.vscode/launch.json

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@
66
"request": "launch",
77
"name": "Jest Current File",
88
"program": "${workspaceFolder}/node_modules/.bin/jest",
9-
"args": [
10-
"--testTimeout=100000",
11-
"--findRelatedTests",
12-
"${relativeFile}"
13-
],
9+
"args": ["--testTimeout=100000", "--findRelatedTests", "${relativeFile}"],
1410
"console": "integratedTerminal",
1511
"internalConsoleOptions": "neverOpen",
16-
"skipFiles": [
17-
"<node_internals>/**"
18-
]
12+
"skipFiles": ["<node_internals>/**"]
1913
},
2014
{
2115
"type": "node",
@@ -30,9 +24,17 @@
3024
],
3125
"console": "integratedTerminal",
3226
"internalConsoleOptions": "neverOpen",
33-
"skipFiles": [
34-
"<node_internals>/**"
35-
]
27+
"skipFiles": ["<node_internals>/**"]
28+
},
29+
{
30+
"name": "Run Jest Tests for Current Package",
31+
"type": "node",
32+
"request": "launch",
33+
"program": "${workspaceFolder}/node_modules/.bin/jest",
34+
"args": ["--testTimeout=100000"],
35+
"console": "integratedTerminal",
36+
"internalConsoleOptions": "neverOpen",
37+
"cwd": "${fileDirname}"
3638
},
3739
{
3840
"type": "node",
@@ -47,9 +49,7 @@
4749
"console": "integratedTerminal",
4850
"internalConsoleOptions": "neverOpen",
4951
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
50-
"skipFiles": [
51-
"<node_internals>/**"
52-
]
52+
"skipFiles": ["<node_internals>/**"]
5353
},
5454
{
5555
"type": "node",
@@ -64,9 +64,7 @@
6464
"console": "integratedTerminal",
6565
"internalConsoleOptions": "neverOpen",
6666
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
67-
"skipFiles": [
68-
"<node_internals>/**"
69-
]
67+
"skipFiles": ["<node_internals>/**"]
7068
},
7169
{
7270
"name": "ts-node Current File",
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"presets": [
3+
"@babel/preset-env",
4+
"@babel/preset-react",
5+
"@babel/preset-typescript"
6+
]
7+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
playwright-report/

packages/signals/signals-integration-tests/package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
".": "yarn run -T turbo run --filter=@internal/signals-integration-tests...",
1010
"build": "webpack",
1111
"test": "playwright test",
12+
"test:vanilla": "playwright test src/tests/vanilla",
13+
"test:perf": "playwright test src/tests/performance",
14+
"test:custom": "playwright test src/tests/custom",
1215
"watch": "webpack -w",
1316
"lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'",
1417
"concurrently": "yarn run -T concurrently",
@@ -25,8 +28,13 @@
2528
"@playwright/test": "^1.28.1",
2629
"@segment/analytics-next": "workspace:^",
2730
"@segment/analytics-signals": "workspace:^",
31+
"@types/react": "^18.0.0",
32+
"@types/react-dom": "^18",
2833
"globby": "^11.0.2",
2934
"http-server": "14.1.1",
35+
"react": "^18.0.0",
36+
"react-aria-components": "^1.5.0",
37+
"react-dom": "^18.0.0",
3038
"tslib": "^2.4.1",
3139
"webpack": "^5.76.0",
3240
"webpack-cli": "^4.8.0"

packages/signals/signals-integration-tests/playwright.config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,14 @@ const config: PlaywrightTestConfig = {
3131
/* Opt out of parallel tests on CI. */
3232
workers: process.env.CI ? 1 : undefined,
3333
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
34-
reporter: 'html',
34+
reporter: [['html', { open: 'never' }]],
3535
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
3636
use: {
3737
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
3838
trace: 'on',
39+
launchOptions: {
40+
args: ['--enable-precise-memory-info', '--js-flags=--expose-gc'],
41+
},
3942
},
4043

4144
/* Configure projects for major browsers */

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/shims.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ declare global {
55
interface Window {
66
analytics: AnalyticsBrowser
77
signalsPlugin: SignalsPlugin
8+
SignalsPlugin: typeof SignalsPlugin
89
}
910
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import React from 'react'
2+
import { TextField } from './TextField'
3+
import { Select, SelectItem } from './Select'
4+
5+
export const App: React.FC = () => {
6+
return (
7+
<main>
8+
<div id="textfield">
9+
<h2>TextField</h2>
10+
<TextField label="some-text-field" />
11+
</div>
12+
<div id="select">
13+
<h2>Select</h2>
14+
<Select>
15+
<SelectItem>Chocolate</SelectItem>
16+
<SelectItem>Mint</SelectItem>
17+
<SelectItem>Strawberry</SelectItem>
18+
<SelectItem>Vanilla</SelectItem>
19+
</Select>
20+
</div>
21+
</main>
22+
)
23+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
@import "./theme.css";
2+
3+
.react-aria-Button {
4+
color: var(--text-color);
5+
background: var(--button-background);
6+
border: 1px solid var(--border-color);
7+
border-radius: 4px;
8+
appearance: none;
9+
vertical-align: middle;
10+
font-size: 1rem;
11+
text-align: center;
12+
margin: 0;
13+
outline: none;
14+
padding: 6px 10px;
15+
text-decoration: none;
16+
17+
&[data-pressed] {
18+
box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1);
19+
background: var(--button-background-pressed);
20+
border-color: var(--border-color-pressed);
21+
}
22+
23+
&[data-focus-visible] {
24+
outline: 2px solid var(--focus-ring-color);
25+
outline-offset: -1px;
26+
}
27+
28+
&[data-disabled]{
29+
border-color: var(--border-color-disabled);
30+
color: var(--text-color-disabled);
31+
}
32+
}
33+
34+
@keyframes toggle {
35+
from {
36+
opacity: 0;
37+
}
38+
39+
to {
40+
opacity: 1;
41+
}
42+
}

0 commit comments

Comments
 (0)