Skip to content

Commit e95415b

Browse files
committed
Merge branch 'develop' into test-replay-add-integration-test-input-masking
2 parents db2128b + dbd7a81 commit e95415b

Some content is hidden

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

79 files changed

+1416
-10814
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -802,8 +802,8 @@ jobs:
802802
run: |
803803
echo "One of the dependent jobs have failed. You may need to re-run it." && exit 1
804804
805-
replay_metrics:
806-
name: Replay Metrics
805+
overhead_metrics:
806+
name: Overhead metrics
807807
needs: [job_get_metadata, job_build]
808808
runs-on: ubuntu-20.04
809809
timeout-minutes: 30
@@ -828,18 +828,14 @@ jobs:
828828
path: ${{ env.CACHED_BUILD_PATHS }}
829829
key: ${{ env.BUILD_CACHE_KEY }}
830830

831-
- name: Setup
832-
run: yarn install
833-
working-directory: packages/replay/metrics
834-
835831
- name: Collect
836832
run: yarn ci:collect
837-
working-directory: packages/replay/metrics
833+
working-directory: packages/overhead-metrics
838834

839835
- name: Process
840836
id: process
841837
run: yarn ci:process
842-
working-directory: packages/replay/metrics
838+
working-directory: packages/overhead-metrics
843839
# Don't run on forks - the PR comment cannot be added.
844840
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
845841
env:

.vscode/launch.json

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,6 @@
3737
"internalConsoleOptions": "openOnSessionStart",
3838
"outputCapture": "std"
3939
},
40-
{
41-
"type": "node",
42-
"name": "Debug replay metrics collection script",
43-
"request": "launch",
44-
"cwd": "${workspaceFolder}/packages/replay/metrics/",
45-
"program": "${workspaceFolder}/packages/replay/metrics/configs/dev/collect.ts",
46-
"preLaunchTask": "Build Replay metrics script",
47-
},
48-
{
49-
"type": "node",
50-
"name": "Debug replay metrics processing script",
51-
"request": "launch",
52-
"cwd": "${workspaceFolder}/packages/replay/metrics/",
53-
"program": "${workspaceFolder}/packages/replay/metrics/configs/dev/process.ts",
54-
"preLaunchTask": "Build Replay metrics script",
55-
},
5640
// Run rollup using the config file which is in the currently active tab.
5741
{
5842
"name": "Debug rollup (config from open file)",

.vscode/tasks.json

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
{
22
// See https://go.microsoft.com/fwlink/?LinkId=733558 for documentation about `tasks.json` syntax
3-
"version": "2.0.0",
4-
"tasks": [
5-
{
6-
"label": "Prepare nextjs integration test app for VSCode debugger",
7-
"type": "npm",
8-
"script": "predebug",
9-
"path": "packages/nextjs/test/integration/",
10-
"detail": "Link the SDK (if not already linked) and build test app",
11-
},
12-
{
13-
"label": "Build Replay metrics script",
14-
"type": "npm",
15-
"script": "build",
16-
"path": "packages/replay/metrics",
17-
}
18-
]
3+
"version": "2.0.0",
4+
"tasks": [
5+
{
6+
"label": "Prepare nextjs integration test app for VSCode debugger",
7+
"type": "npm",
8+
"script": "predebug",
9+
"path": "packages/nextjs/test/integration/",
10+
"detail": "Link the SDK (if not already linked) and build test app"
11+
}
12+
]
1913
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"packages/hub",
4848
"packages/integration-tests",
4949
"packages/integrations",
50+
"packages/overhead-metrics",
5051
"packages/nextjs",
5152
"packages/node",
5253
"packages/node-integration-tests",

packages/browser/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"karma-typescript-es6-transform": "^4.0.0",
4141
"karma-webkit-launcher": "^1.0.2",
4242
"node-fetch": "^2.6.0",
43-
"playwright": "^1.27.1",
43+
"playwright": "^1.31.1",
4444
"sinon": "^7.3.2",
4545
"webpack": "^4.30.0"
4646
},

packages/integration-tests/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
},
3333
"dependencies": {
3434
"@babel/preset-typescript": "^7.16.7",
35-
"@playwright/test": "^1.29.2",
35+
"@playwright/test": "^1.31.1",
3636
"babel-loader": "^8.2.2",
3737
"html-webpack-plugin": "^5.5.0",
3838
"pako": "^2.1.0",
39-
"playwright": "^1.29.2",
39+
"playwright": "^1.31.1",
4040
"typescript": "^4.5.2",
4141
"webpack": "^5.52.0"
4242
},

packages/integration-tests/suites/replay/flushing/init.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ window.Sentry = Sentry;
44
window.Replay = new Sentry.Replay({
55
flushMinDelay: 500,
66
flushMaxDelay: 500,
7+
useCompression: false,
78
});
89

910
Sentry.init({

packages/integration-tests/suites/replay/flushing/template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
<meta charset="utf-8" />
55
</head>
66
<body>
7-
<button id="go-background">New Tab</button>
7+
<button id="something">Do something</button>
88
</body>
99
</html>

packages/integration-tests/suites/replay/flushing/test.ts

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@ import { sentryTest } from '../../../utils/fixtures';
44
import { getExpectedReplayEvent } from '../../../utils/replayEventTemplates';
55
import { getReplayEvent, shouldSkipReplayTest, waitForReplayRequest } from '../../../utils/replayHelpers';
66

7-
// Sync this with init.js - not we take seconds here instead of ms
8-
const FLUSH_DELAY_SECONDS = 0.5;
9-
10-
sentryTest('replay recording flushes every 5s', async ({ getLocalTestPath, page }) => {
7+
/*
8+
* In this test we're explicitly not forcing a flush by triggering a visibility change.
9+
* Instead, we want to verify that the `flushMaxDelay` works in the sense that eventually
10+
* a flush is triggered if some events are in the buffer.
11+
* Note: Due to timing problems and inconsistencies in Playwright/CI, we can't reliably
12+
* assert on the flush timestamps. Therefore we only assert that events were eventually
13+
* sent (i.e. flushed).
14+
*/
15+
sentryTest('replay events are flushed after max flush delay was reached', async ({ getLocalTestPath, page }) => {
1116
if (shouldSkipReplayTest()) {
1217
sentryTest.skip();
1318
}
@@ -30,17 +35,18 @@ sentryTest('replay recording flushes every 5s', async ({ getLocalTestPath, page
3035
const replayEvent0 = getReplayEvent(await reqPromise0);
3136
expect(replayEvent0).toEqual(getExpectedReplayEvent());
3237

33-
// trigger mouse click
34-
void page.click('#go-background');
38+
// trigger one mouse click
39+
void page.click('#something');
3540

41+
// this must eventually lead to a flush after the max delay was reached
3642
const replayEvent1 = getReplayEvent(await reqPromise1);
3743
expect(replayEvent1).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 1, urls: [] }));
3844

39-
// trigger mouse click every 100ms, it should still flush after 5s even if clicks are ongoing
40-
for (let i = 0; i < 70; i++) {
45+
// trigger mouse click every 100ms, it should still flush after the max delay even if clicks are ongoing
46+
for (let i = 0; i < 700; i++) {
4147
setTimeout(async () => {
4248
try {
43-
await page.click('#go-background');
49+
await page.click('#something');
4450
} catch {
4551
// ignore errors here, we don't care if the page is closed
4652
}
@@ -49,14 +55,4 @@ sentryTest('replay recording flushes every 5s', async ({ getLocalTestPath, page
4955

5056
const replayEvent2 = getReplayEvent(await reqPromise2);
5157
expect(replayEvent2).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 2, urls: [] }));
52-
53-
// Ensure time diff is about 500ms between each event
54-
const diff1 = replayEvent1.timestamp! - replayEvent0.timestamp!;
55-
const diff2 = replayEvent2.timestamp! - replayEvent1.timestamp!;
56-
57-
// We want to check that the diff is between 0.1 and 0.9 seconds, to accomodate for some wiggle room
58-
expect(diff1).toBeLessThan(FLUSH_DELAY_SECONDS + 0.4);
59-
expect(diff1).toBeGreaterThanOrEqual(FLUSH_DELAY_SECONDS - 0.4);
60-
expect(diff2).toBeLessThan(FLUSH_DELAY_SECONDS + 0.4);
61-
expect(diff2).toBeGreaterThanOrEqual(FLUSH_DELAY_SECONDS - 0.4);
6258
});

packages/integration-tests/suites/replay/requests/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ window.Sentry = Sentry;
44
window.Replay = new Sentry.Replay({
55
flushMinDelay: 500,
66
flushMaxDelay: 500,
7-
useCompression: true,
7+
useCompression: false,
88
});
99

1010
Sentry.init({

0 commit comments

Comments
 (0)