Skip to content

Commit 4349511

Browse files
authored
Merge pull request #16854 from getsentry/prepare-release/9.36.0
meta(changelog): Update changelog for 9.36.0
2 parents d8ac216 + cab78ae commit 4349511

File tree

623 files changed

+17438
-1560
lines changed

Some content is hidden

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

623 files changed

+17438
-1560
lines changed

.craft.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ targets:
88
- name: npm
99
id: '@sentry/types'
1010
includeNames: /^sentry-types-\d.*\.tgz$/
11-
## 1.2 Core SDK
11+
## 1.2 Core SDKs
1212
- name: npm
1313
id: '@sentry/core'
1414
includeNames: /^sentry-core-\d.*\.tgz$/
15+
- name: npm
16+
id: '@sentry/node-core'
17+
includeNames: /^sentry-node-core-\d.*\.tgz$/
1518
## 1.3 Browser Utils package
1619
- name: npm
1720
id: '@sentry-internal/browser-utils'

.github/workflows/auto-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
steps:
1616
- name: Get auth token
1717
id: token
18-
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0
18+
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
1919
with:
2020
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
2121
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}

.github/workflows/build.yml

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -920,19 +920,23 @@ jobs:
920920
env:
921921
E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION: ${{ steps.versions.outputs.node }}
922922

923+
- name: Copy to temp
924+
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
925+
working-directory: dev-packages/e2e-tests
926+
923927
- name: Build E2E app
924-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
928+
working-directory: ${{ runner.temp }}/test-application
925929
timeout-minutes: 7
926930
run: pnpm ${{ matrix.build-command || 'test:build' }}
927931

928932
- name: Install Playwright
929933
uses: ./.github/actions/install-playwright
930934
with:
931935
browsers: chromium
932-
cwd: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
936+
cwd: ${{ runner.temp }}/test-application
933937

934938
- name: Run E2E test
935-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
939+
working-directory: ${{ runner.temp }}/test-application
936940
timeout-minutes: 10
937941
run: pnpm test:assert
938942

@@ -941,7 +945,7 @@ jobs:
941945
if: failure()
942946
with:
943947
name: playwright-traces-job_e2e_playwright_tests-${{ matrix.test-application}}
944-
path: dev-packages/e2e-tests/test-applications/${{ matrix.test-application}}/test-results
948+
path: ${{ runner.temp }}/test-application/test-results
945949
overwrite: true
946950
retention-days: 7
947951

@@ -955,7 +959,7 @@ jobs:
955959
if: always()
956960
with:
957961
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
958-
path: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/event-dumps
962+
path: ${{ runner.temp }}/test-application/event-dumps
959963
overwrite: true
960964
retention-days: 7
961965
if-no-files-found: ignore
@@ -1037,19 +1041,23 @@ jobs:
10371041
env:
10381042
E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION: ${{ steps.versions.outputs.node }}
10391043

1044+
- name: Copy to temp
1045+
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
1046+
working-directory: dev-packages/e2e-tests
1047+
10401048
- name: Build E2E app
1041-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1049+
working-directory: ${{ runner.temp }}/test-application
10421050
timeout-minutes: 7
10431051
run: pnpm ${{ matrix.build-command || 'test:build' }}
10441052

10451053
- name: Install Playwright
10461054
uses: ./.github/actions/install-playwright
10471055
with:
10481056
browsers: chromium
1049-
cwd: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1057+
cwd: ${{ runner.temp }}/test-application
10501058

10511059
- name: Run E2E test
1052-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1060+
working-directory: ${{ runner.temp }}/test-application
10531061
timeout-minutes: 10
10541062
run: pnpm ${{ matrix.assert-command || 'test:assert' }}
10551063

@@ -1063,20 +1071,19 @@ jobs:
10631071
if: always()
10641072
with:
10651073
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
1066-
path: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/event-dumps
1074+
path: ${{ runner.temp }}/test-application/event-dumps
10671075
overwrite: true
10681076
retention-days: 7
10691077
if-no-files-found: ignore
10701078

10711079
- name: Deploy Astro to Cloudflare
1072-
uses: cloudflare/pages-action@v1
1080+
uses: cloudflare/wrangler-action@v3
10731081
if: matrix.test-application == 'cloudflare-astro'
10741082
with:
10751083
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
10761084
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
1077-
projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
1078-
directory: dist
1079-
workingDirectory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1085+
command: pages deploy dist --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }}
1086+
workingDirectory: ${{ runner.temp }}/test-application
10801087

10811088
job_required_jobs_passed:
10821089
name: All required jobs passed or were skipped

.github/workflows/canary.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,23 @@ jobs:
153153
env:
154154
E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION: ${{ steps.versions.outputs.node }}
155155

156+
- name: Copy to temp
157+
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
158+
working-directory: dev-packages/e2e-tests
159+
156160
- name: Build E2E app
157-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
161+
working-directory: ${{ runner.temp }}/test-application
158162
timeout-minutes: 7
159163
run: yarn ${{ matrix.build-command }}
160164

161165
- name: Install Playwright
162166
uses: ./.github/actions/install-playwright
163167
with:
164168
browsers: chromium
165-
cwd: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
169+
cwd: ${{ runner.temp }}/test-application
166170

167171
- name: Run E2E test
168-
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
172+
working-directory: ${{ runner.temp }}/test-application
169173
timeout-minutes: 15
170174
run: yarn test:assert
171175

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- name: Get auth token
2121
id: token
22-
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0
22+
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
2323
with:
2424
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
2525
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}

CHANGELOG.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,58 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
## 9.36.0
8+
9+
### Important Changes
10+
11+
- **feat(node-core): Add node-core SDK ([#16745](https://github.com/getsentry/sentry-javascript/pull/16745))**
12+
13+
This release adds a new SDK `@sentry/node-core` which ships without any OpenTelemetry instrumententation out of the box. All OpenTelemetry dependencies are peer dependencies and OpenTelemetry has to be set up manually.
14+
15+
Use `@sentry/node-core` when:
16+
17+
- You already have OpenTelemetry set up
18+
- You need custom OpenTelemetry configuration
19+
- You want minimal dependencies
20+
- You need fine-grained control over instrumentation
21+
22+
Use `@sentry/node` when:
23+
24+
- You want an automatic setup
25+
- You're new to OpenTelemetry
26+
- You want sensible defaults
27+
- You prefer convenience over control
28+
29+
* **feat(node): Deprecate ANR integration ([#16832](https://github.com/getsentry/sentry-javascript/pull/16832))**
30+
31+
The ANR integration has been deprecated and will be removed in future versions. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.
32+
33+
- **feat(replay): Add `_experiments.ignoreMutations` option ([#16816](https://github.com/getsentry/sentry-javascript/pull/16816))**
34+
35+
This replay option allows to configure a selector list of elements to not capture mutations for.
36+
37+
```js
38+
Sentry.replayIntegration({
39+
_experiments: {
40+
ignoreMutations: ['.dragging'],
41+
},
42+
});
43+
```
44+
45+
### Other changes
46+
47+
- feat(deps): bump @prisma/instrumentation from 6.10.1 to 6.11.1 ([#16833](https://github.com/getsentry/sentry-javascript/pull/16833))
48+
- feat(nextjs): Add flag for suppressing router transition warning ([#16823](https://github.com/getsentry/sentry-javascript/pull/16823))
49+
- feat(nextjs): Automatically skip middleware requests for tunnel route ([#16812](https://github.com/getsentry/sentry-javascript/pull/16812))
50+
- feat(replay): Export compression worker from `@sentry/replay-internal` ([#16794](https://github.com/getsentry/sentry-javascript/pull/16794))
51+
- fix(browser): Avoid 4xx response for succesful `diagnoseSdkConnectivity` request ([#16840](https://github.com/getsentry/sentry-javascript/pull/16840))
52+
- fix(browser): Guard against undefined nextHopProtocol ([#16806](https://github.com/getsentry/sentry-javascript/pull/16806))
53+
- fix(cloudflare): calculate retries not attempts ([#16834](https://github.com/getsentry/sentry-javascript/pull/16834))
54+
- fix(nuxt): Parametrize routes on the server-side ([#16785](https://github.com/getsentry/sentry-javascript/pull/16785))
55+
- fix(vue): Make pageload span handling more reliable ([#16799](https://github.com/getsentry/sentry-javascript/pull/16799))
56+
57+
Work in this release was contributed by @Spice-King and @stayallive. Thank you for your contributions!
58+
759
## 9.35.0
860

961
- feat(browser): Add ElementTiming instrumentation and spans ([#16589](https://github.com/getsentry/sentry-javascript/pull/16589))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
window.Replay = Sentry.replayIntegration({
5+
flushMinDelay: 200,
6+
flushMaxDelay: 200,
7+
minReplayDuration: 0,
8+
useCompression: false,
9+
_experiments: {
10+
ignoreMutations: ['.moving'],
11+
},
12+
});
13+
14+
Sentry.init({
15+
dsn: 'https://[email protected]/1337',
16+
sampleRate: 0,
17+
replaysSessionSampleRate: 1.0,
18+
replaysOnErrorSampleRate: 0.0,
19+
20+
integrations: [window.Replay],
21+
});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function moveElement(el, remaining) {
2+
if (!remaining) {
3+
el.classList.remove('moving');
4+
5+
setTimeout(() => {
6+
el.style.transform = `translate(${remaining}0px, 0)`;
7+
el.classList.add('moved');
8+
});
9+
return;
10+
}
11+
12+
el.style.transform = `translate(${remaining}0px, 0)`;
13+
14+
setTimeout(() => {
15+
moveElement(el, remaining - 1);
16+
}, 10);
17+
}
18+
19+
const el = document.querySelector('#mutation-target');
20+
const btn = document.querySelector('#button-move');
21+
22+
btn.addEventListener('click', event => {
23+
el.classList.add('moving');
24+
event.preventDefault();
25+
moveElement(el, 20);
26+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!doctype html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8" />
5+
</head>
6+
<body>
7+
<div id="mutation-target" style="position: relative">This is moved around!</div>
8+
9+
<button id="button-move" type="button">Move</button>
10+
</body>
11+
</html>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { expect } from '@playwright/test';
2+
import type { mutationData } from '@sentry-internal/rrweb-types';
3+
import { sentryTest } from '../../../utils/fixtures';
4+
import type { RecordingSnapshot } from '../../../utils/replayHelpers';
5+
import { collectReplayRequests, shouldSkipReplayTest, waitForReplayRequest } from '../../../utils/replayHelpers';
6+
7+
sentryTest('allows to ignore mutations via `ignoreMutations` option', async ({ getLocalTestUrl, page }) => {
8+
if (shouldSkipReplayTest()) {
9+
sentryTest.skip();
10+
}
11+
12+
const url = await getLocalTestUrl({ testDir: __dirname });
13+
14+
const reqPromise0 = waitForReplayRequest(page, 0);
15+
16+
await page.goto(url);
17+
await reqPromise0;
18+
19+
const requestsPromise = collectReplayRequests(page, recordingEvents => {
20+
const events = recordingEvents as (RecordingSnapshot & { data: mutationData })[];
21+
return events.some(event => event.data.attributes?.some(attr => attr.attributes['class'] === 'moved'));
22+
});
23+
24+
page.locator('#button-move').click();
25+
26+
const requests = await requestsPromise;
27+
28+
// All transform mutatinos are ignored and not captured
29+
const transformMutations = requests.replayRecordingSnapshots.filter(
30+
item =>
31+
(item.data as mutationData)?.attributes?.some(
32+
attr => attr.attributes['style'] && attr.attributes['class'] !== 'moved',
33+
),
34+
);
35+
36+
// Should capture the final class mutation
37+
const classMutations = requests.replayRecordingSnapshots.filter(
38+
item => (item.data as mutationData)?.attributes?.some(attr => attr.attributes['class']),
39+
);
40+
41+
expect(transformMutations).toEqual([]);
42+
expect(classMutations).toEqual([
43+
{
44+
data: {
45+
adds: [],
46+
attributes: [
47+
{
48+
attributes: {
49+
class: 'moved',
50+
style: {
51+
transform: 'translate(0px, 0px)',
52+
},
53+
},
54+
id: expect.any(Number),
55+
},
56+
],
57+
removes: [],
58+
source: expect.any(Number),
59+
texts: [],
60+
},
61+
timestamp: 0,
62+
type: 3,
63+
},
64+
]);
65+
});

0 commit comments

Comments
 (0)