From 0eff47376687720f6560ef4fbf8be79f2d60ba55 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 17 Feb 2023 13:12:04 +0100 Subject: [PATCH 1/3] test(replay): Normalize time offset in DOM snapshots --- packages/integration-tests/utils/replayHelpers.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/integration-tests/utils/replayHelpers.ts b/packages/integration-tests/utils/replayHelpers.ts index 703cb11e0393..58139646c417 100644 --- a/packages/integration-tests/utils/replayHelpers.ts +++ b/packages/integration-tests/utils/replayHelpers.ts @@ -214,9 +214,12 @@ export function shouldSkipReplayTest(): boolean { * Takes a replay recording payload and returns a normalized string representation. * This is necessary because the DOM snapshots contain absolute paths to other HTML * files which break the tests on different machines. + * Also, we need to reset any time offsets to 0 as they can differ and cause flakes. */ export function normalize(obj: unknown): string { const rawString = JSON.stringify(obj, null, 2); - const normalizedString = rawString.replace(/"file:\/\/.+(\/.*\.html)"/g, '"$1"'); + const normalizedString = rawString + .replace(/"file:\/\/.+(\/.*\.html)"/, '"$1"') + .replace(/"timeOffset":\s*\d+/, '"timeOffset": 0'); return normalizedString; } From f522436b4ab34e368ceb1a727411077834e0d52d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 17 Feb 2023 14:12:05 +0100 Subject: [PATCH 2/3] fix regex and make offset normalization explicit --- .../multiple-pages/test.ts-snapshots/seg-1-snap-incremental | 2 +- .../test.ts-snapshots/seg-1-snap-incremental-chromium | 2 +- .../multiple-pages/test.ts-snapshots/seg-3-snap-incremental | 2 +- .../test.ts-snapshots/seg-3-snap-incremental-chromium | 2 +- .../multiple-pages/test.ts-snapshots/seg-5-snap-incremental | 2 +- .../test.ts-snapshots/seg-5-snap-incremental-chromium | 2 +- .../multiple-pages/test.ts-snapshots/seg-6-snap-incremental | 2 +- .../test.ts-snapshots/seg-6-snap-incremental-chromium | 2 +- .../multiple-pages/test.ts-snapshots/seg-7-snap-incremental | 2 +- .../test.ts-snapshots/seg-7-snap-incremental-chromium | 2 +- .../multiple-pages/test.ts-snapshots/seg-9-snap-incremental | 2 +- .../test.ts-snapshots/seg-9-snap-incremental-chromium | 2 +- packages/integration-tests/utils/replayHelpers.ts | 4 ++-- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental-chromium index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-1-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental-chromium index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-3-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental index d8651b3c919b..3035cb50910e 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental @@ -6,7 +6,7 @@ "x": 41, "y": 90, "id": 12, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental-chromium index d8651b3c919b..3035cb50910e 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-5-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 41, "y": 90, "id": 12, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental index 065aeaf45bd9..ddaf5314ca3d 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental @@ -6,7 +6,7 @@ "x": 157, "y": 90, "id": 15, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental-chromium index 065aeaf45bd9..ddaf5314ca3d 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-6-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 157, "y": 90, "id": 15, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental index 9ca283b6ba8f..ae20ba0fd987 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental @@ -6,7 +6,7 @@ "x": 41, "y": 90, "id": 12, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental-chromium index 9ca283b6ba8f..ae20ba0fd987 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-7-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 41, "y": 90, "id": 12, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental-chromium b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental-chromium index fd46cda96828..29620a33392b 100644 --- a/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental-chromium +++ b/packages/integration-tests/suites/replay/multiple-pages/test.ts-snapshots/seg-9-snap-incremental-chromium @@ -6,7 +6,7 @@ "x": 41, "y": 18, "id": 9, - "timeOffset": 0 + "timeOffset": [timeOffset] } ] }, diff --git a/packages/integration-tests/utils/replayHelpers.ts b/packages/integration-tests/utils/replayHelpers.ts index 58139646c417..be8f1084d17a 100644 --- a/packages/integration-tests/utils/replayHelpers.ts +++ b/packages/integration-tests/utils/replayHelpers.ts @@ -219,7 +219,7 @@ export function shouldSkipReplayTest(): boolean { export function normalize(obj: unknown): string { const rawString = JSON.stringify(obj, null, 2); const normalizedString = rawString - .replace(/"file:\/\/.+(\/.*\.html)"/, '"$1"') - .replace(/"timeOffset":\s*\d+/, '"timeOffset": 0'); + .replace(/"file:\/\/.+(\/.*\.html)"/gm, '"$1"') + .replace(/"timeOffset":\s*-?\d+/gm, '"timeOffset": [timeOffset]'); return normalizedString; } From ba70160bbd9f3ce16a50c2a0d8877a4543f72694 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 17 Feb 2023 14:20:57 +0100 Subject: [PATCH 3/3] update jsdoc --- packages/integration-tests/utils/replayHelpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/integration-tests/utils/replayHelpers.ts b/packages/integration-tests/utils/replayHelpers.ts index be8f1084d17a..a35520e0a799 100644 --- a/packages/integration-tests/utils/replayHelpers.ts +++ b/packages/integration-tests/utils/replayHelpers.ts @@ -214,7 +214,7 @@ export function shouldSkipReplayTest(): boolean { * Takes a replay recording payload and returns a normalized string representation. * This is necessary because the DOM snapshots contain absolute paths to other HTML * files which break the tests on different machines. - * Also, we need to reset any time offsets to 0 as they can differ and cause flakes. + * Also, we need to normalize any time offsets as they can vary and cause flakes. */ export function normalize(obj: unknown): string { const rawString = JSON.stringify(obj, null, 2);