Skip to content

Commit 5e6658a

Browse files
author
Luca Forstner
authored
Merge pull request #14361 from getsentry/prepare-release/8.39.0
2 parents 6576ec4 + 8659f8d commit 5e6658a

File tree

214 files changed

+5175
-1223
lines changed

Some content is hidden

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

214 files changed

+5175
-1223
lines changed

.github/workflows/build.yml

Lines changed: 41 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ env:
4444
${{ github.workspace }}/packages/*/build
4545
${{ github.workspace }}/packages/ember/*.d.ts
4646
${{ github.workspace }}/packages/gatsby/*.d.ts
47-
${{ github.workspace }}/packages/core/src/version.ts
4847
${{ github.workspace }}/packages/utils/cjs
4948
${{ github.workspace }}/packages/utils/esm
5049
@@ -801,7 +800,15 @@ jobs:
801800
needs: [job_get_metadata, job_build, job_compile_bindings_profiling_node]
802801
runs-on: ubuntu-20.04-large-js
803802
timeout-minutes: 15
803+
outputs:
804+
matrix: ${{ steps.matrix.outputs.matrix }}
805+
matrix-optional: ${{ steps.matrix-optional.outputs.matrix }}
804806
steps:
807+
- name: Check out base commit (${{ github.event.pull_request.base.sha }})
808+
uses: actions/checkout@v4
809+
if: github.event_name == 'pull_request'
810+
with:
811+
ref: ${{ github.event.pull_request.base.sha }}
805812
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
806813
uses: actions/checkout@v4
807814
with:
@@ -851,11 +858,21 @@ jobs:
851858
path: ${{ github.workspace }}/packages/*/*.tgz
852859
key: ${{ env.BUILD_CACHE_TARBALL_KEY }}
853860

861+
- name: Determine which E2E test applications should be run
862+
id: matrix
863+
run: yarn --silent ci:build-matrix --base=${{ (github.event_name == 'pull_request' && github.event.pull_request.base.sha) || '' }} >> $GITHUB_OUTPUT
864+
working-directory: dev-packages/e2e-tests
865+
866+
- name: Determine which optional E2E test applications should be run
867+
id: matrix-optional
868+
run: yarn --silent ci:build-matrix-optional --base=${{ (github.event_name == 'pull_request' && github.event.pull_request.base.sha) || '' }} >> $GITHUB_OUTPUT
869+
working-directory: dev-packages/e2e-tests
870+
854871
job_e2e_tests:
855872
name: E2E ${{ matrix.label || matrix.test-application }} Test
856873
# We need to add the `always()` check here because the previous step has this as well :(
857874
# See: https://github.com/actions/runner/issues/2205
858-
if: always() && needs.job_e2e_prepare.result == 'success'
875+
if: always() && needs.job_e2e_prepare.result == 'success' && needs.job_e2e_prepare.outputs.matrix != '{"include":[]}'
859876
needs: [job_get_metadata, job_build, job_e2e_prepare]
860877
runs-on: ubuntu-20.04
861878
timeout-minutes: 15
@@ -870,103 +887,7 @@ jobs:
870887
E2E_TEST_SENTRY_PROJECT: 'sentry-javascript-e2e-tests'
871888
strategy:
872889
fail-fast: false
873-
matrix:
874-
is_dependabot:
875-
- ${{ github.actor == 'dependabot[bot]' }}
876-
test-application:
877-
[
878-
'angular-17',
879-
'angular-18',
880-
'astro-4',
881-
'aws-lambda-layer-cjs',
882-
'aws-serverless-esm',
883-
'node-express',
884-
'create-react-app',
885-
'create-next-app',
886-
'create-remix-app',
887-
'create-remix-app-legacy',
888-
'create-remix-app-v2',
889-
'create-remix-app-v2-legacy',
890-
'create-remix-app-express',
891-
'create-remix-app-express-legacy',
892-
'create-remix-app-express-vite-dev',
893-
'default-browser',
894-
'node-express-esm-loader',
895-
'node-express-esm-preload',
896-
'node-express-esm-without-loader',
897-
'node-express-cjs-preload',
898-
'node-otel-sdk-node',
899-
'node-otel-custom-sampler',
900-
'node-otel-without-tracing',
901-
'ember-classic',
902-
'ember-embroider',
903-
'nextjs-app-dir',
904-
'nextjs-13',
905-
'nextjs-14',
906-
'nextjs-15',
907-
'nextjs-turbo',
908-
'nextjs-t3',
909-
'react-17',
910-
'react-19',
911-
'react-create-hash-router',
912-
'react-router-6-use-routes',
913-
'react-router-5',
914-
'react-router-6',
915-
'solid',
916-
'solidstart',
917-
'solidstart-spa',
918-
'svelte-5',
919-
'sveltekit',
920-
'sveltekit-2',
921-
'sveltekit-2-svelte-5',
922-
'sveltekit-2-twp',
923-
'tanstack-router',
924-
'generic-ts3.8',
925-
'node-fastify',
926-
'node-fastify-5',
927-
'node-hapi',
928-
'node-nestjs-basic',
929-
'node-nestjs-distributed-tracing',
930-
'nestjs-basic',
931-
'nestjs-distributed-tracing',
932-
'nestjs-with-submodules',
933-
'nestjs-with-submodules-decorator',
934-
'nestjs-basic-with-graphql',
935-
'nestjs-graphql',
936-
'node-exports-test-app',
937-
'node-koa',
938-
'node-connect',
939-
'nuxt-3',
940-
'nuxt-4',
941-
'vue-3',
942-
'webpack-4',
943-
'webpack-5'
944-
]
945-
build-command:
946-
- false
947-
label:
948-
- false
949-
# Add any variations of a test app here
950-
# You should provide an alternate build-command as well as a matching label
951-
include:
952-
- test-application: 'create-react-app'
953-
build-command: 'test:build-ts3.8'
954-
label: 'create-react-app (TS 3.8)'
955-
- test-application: 'react-router-6'
956-
build-command: 'test:build-ts3.8'
957-
label: 'react-router-6 (TS 3.8)'
958-
- test-application: 'create-next-app'
959-
build-command: 'test:build-13'
960-
label: 'create-next-app (next@13)'
961-
- test-application: 'nextjs-app-dir'
962-
build-command: 'test:build-13'
963-
label: 'nextjs-app-dir (next@13)'
964-
exclude:
965-
- is_dependabot: true
966-
test-application: 'cloudflare-astro'
967-
- is_dependabot: true
968-
test-application: 'cloudflare-workers'
969-
890+
matrix: ${{ fromJson(needs.job_e2e_prepare.outputs.matrix) }}
970891
steps:
971892
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
972893
uses: actions/checkout@v4
@@ -1067,6 +988,7 @@ jobs:
1067988
# See: https://github.com/actions/runner/issues/2205
1068989
if:
1069990
always() && needs.job_e2e_prepare.result == 'success' &&
991+
needs.job_e2e_prepare.outputs.matrix-optional != '{"include":[]}' &&
1070992
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
1071993
github.actor != 'dependabot[bot]'
1072994
needs: [job_get_metadata, job_build, job_e2e_prepare]
@@ -1083,58 +1005,7 @@ jobs:
10831005
E2E_TEST_SENTRY_PROJECT: 'sentry-javascript-e2e-tests'
10841006
strategy:
10851007
fail-fast: false
1086-
matrix:
1087-
test-application:
1088-
[
1089-
'cloudflare-astro',
1090-
'cloudflare-workers',
1091-
'react-send-to-sentry',
1092-
'node-express-send-to-sentry',
1093-
'debug-id-sourcemaps',
1094-
]
1095-
build-command:
1096-
- false
1097-
assert-command:
1098-
- false
1099-
label:
1100-
- false
1101-
include:
1102-
- test-application: 'create-remix-app'
1103-
assert-command: 'test:assert-sourcemaps'
1104-
label: 'create-remix-app (sourcemaps)'
1105-
- test-application: 'create-remix-app-legacy'
1106-
assert-command: 'test:assert-sourcemaps'
1107-
label: 'create-remix-app-legacy (sourcemaps)'
1108-
- test-application: 'nextjs-app-dir'
1109-
build-command: 'test:build-canary'
1110-
label: 'nextjs-app-dir (canary)'
1111-
- test-application: 'nextjs-app-dir'
1112-
build-command: 'test:build-latest'
1113-
label: 'nextjs-app-dir (latest)'
1114-
- test-application: 'nextjs-13'
1115-
build-command: 'test:build-canary'
1116-
label: 'nextjs-13 (canary)'
1117-
- test-application: 'nextjs-13'
1118-
build-command: 'test:build-latest'
1119-
label: 'nextjs-13 (latest)'
1120-
- test-application: 'nextjs-14'
1121-
build-command: 'test:build-canary'
1122-
label: 'nextjs-14 (canary)'
1123-
- test-application: 'nextjs-14'
1124-
build-command: 'test:build-latest'
1125-
label: 'nextjs-14 (latest)'
1126-
- test-application: 'nextjs-15'
1127-
build-command: 'test:build-canary'
1128-
label: 'nextjs-15 (canary)'
1129-
- test-application: 'nextjs-15'
1130-
build-command: 'test:build-latest'
1131-
label: 'nextjs-15 (latest)'
1132-
- test-application: 'nextjs-turbo'
1133-
build-command: 'test:build-canary'
1134-
label: 'nextjs-turbo (canary)'
1135-
- test-application: 'nextjs-turbo'
1136-
build-command: 'test:build-latest'
1137-
label: 'nextjs-turbo (latest)'
1008+
matrix: ${{ fromJson(needs.job_e2e_prepare.outputs.matrix-optional) }}
11381009

11391010
steps:
11401011
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
@@ -1234,7 +1105,7 @@ jobs:
12341105
(needs.job_get_metadata.outputs.is_release == 'true')
12351106
)
12361107
needs: [job_get_metadata, job_build, job_e2e_prepare]
1237-
runs-on: ubuntu-20.04
1108+
runs-on: ubuntu-22.04
12381109
timeout-minutes: 15
12391110
env:
12401111
E2E_TEST_AUTH_TOKEN: ${{ secrets.E2E_TEST_AUTH_TOKEN }}
@@ -1254,19 +1125,24 @@ jobs:
12541125
uses: actions/checkout@v4
12551126
with:
12561127
ref: ${{ env.HEAD_COMMIT }}
1128+
12571129
- uses: pnpm/action-setup@v4
12581130
with:
12591131
version: 9.4.0
1132+
12601133
- name: Set up Node
12611134
uses: actions/setup-node@v4
12621135
with:
12631136
node-version: 22
1137+
12641138
- name: Restore caches
12651139
uses: ./.github/actions/restore-cache
12661140
with:
12671141
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}
1142+
12681143
- name: Build Profiling Node
12691144
run: yarn lerna run build:lib --scope @sentry/profiling-node
1145+
12701146
- name: Extract Profiling Node Prebuilt Binaries
12711147
uses: actions/download-artifact@v4
12721148
with:
@@ -1305,6 +1181,18 @@ jobs:
13051181
env:
13061182
E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION: ${{ steps.versions.outputs.node }}
13071183

1184+
- name: Setup xvfb and update ubuntu dependencies
1185+
run: |
1186+
sudo apt-get install xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic x11-apps
1187+
sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
1188+
libnotify-dev libgconf2-dev \
1189+
libasound2-dev libcap-dev libcups2-dev libxtst-dev \
1190+
libxss1 libnss3-dev gcc-multilib g++-multilib
1191+
1192+
- name: Install dependencies
1193+
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1194+
run: yarn install --ignore-engines --frozen-lockfile
1195+
13081196
- name: Build E2E app
13091197
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
13101198
timeout-minutes: 7
@@ -1313,7 +1201,7 @@ jobs:
13131201
- name: Run E2E test
13141202
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
13151203
timeout-minutes: 10
1316-
run: yarn test:assert
1204+
run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:assert
13171205

13181206
job_required_jobs_passed:
13191207
name: All required jobs passed or were skipped

.size-limit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ module.exports = [
139139
path: 'packages/vue/build/esm/index.js',
140140
import: createImport('init', 'browserTracingIntegration'),
141141
gzip: true,
142-
limit: '38 KB',
142+
limit: '38.5 KB',
143143
},
144144
// Svelte SDK (ESM)
145145
{

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,31 @@
1010

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

13+
## 8.39.0
14+
15+
### Important Changes
16+
17+
- **feat(nestjs): Instrument event handlers ([#14307](https://github.com/getsentry/sentry-javascript/pull/14307))**
18+
19+
The `@sentry/nestjs` SDK will now capture performance data for [NestJS Events (`@nestjs/event-emitter`)](https://docs.nestjs.com/techniques/events)
20+
21+
### Other Changes
22+
23+
- feat(nestjs): Add alias `@SentryExceptionCaptured` for `@WithSentry` ([#14322](https://github.com/getsentry/sentry-javascript/pull/14322))
24+
- feat(nestjs): Duplicate `SentryService` behaviour into `@sentry/nestjs` SDK `init()` ([#14321](https://github.com/getsentry/sentry-javascript/pull/14321))
25+
- feat(nestjs): Handle GraphQL contexts in `SentryGlobalFilter` ([#14320](https://github.com/getsentry/sentry-javascript/pull/14320))
26+
- feat(node): Add alias `childProcessIntegration` for `processThreadBreadcrumbIntegration` and deprecate it ([#14334](https://github.com/getsentry/sentry-javascript/pull/14334))
27+
- feat(node): Ensure request bodies are reliably captured for http requests ([#13746](https://github.com/getsentry/sentry-javascript/pull/13746))
28+
- feat(replay): Upgrade rrweb packages to 2.29.0 ([#14160](https://github.com/getsentry/sentry-javascript/pull/14160))
29+
- fix(cdn): Ensure `_sentryModuleMetadata` is not mangled ([#14344](https://github.com/getsentry/sentry-javascript/pull/14344))
30+
- fix(core): Set `sentry.source` attribute to `custom` when calling `span.updateName` on `SentrySpan` ([#14251](https://github.com/getsentry/sentry-javascript/pull/14251))
31+
- fix(mongo): rewrite Buffer as ? during serialization ([#14071](https://github.com/getsentry/sentry-javascript/pull/14071))
32+
- fix(replay): Remove replay id from DSC on expired sessions ([#14342](https://github.com/getsentry/sentry-javascript/pull/14342))
33+
- ref(profiling) Fix electron crash ([#14216](https://github.com/getsentry/sentry-javascript/pull/14216))
34+
- ref(types): Deprecate `Request` type in favor of `RequestEventData` ([#14317](https://github.com/getsentry/sentry-javascript/pull/14317))
35+
- ref(utils): Stop setting `transaction` in `requestDataIntegration` ([#14306](https://github.com/getsentry/sentry-javascript/pull/14306))
36+
- ref(vue): Reduce bundle size for starting application render span ([#14275](https://github.com/getsentry/sentry-javascript/pull/14275))
37+
1338
## 8.38.0
1439

1540
- docs: Improve docstrings for node otel integrations ([#14217](https://github.com/getsentry/sentry-javascript/pull/14217))

dev-packages/browser-integration-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"dependencies": {
4343
"@babel/preset-typescript": "^7.16.7",
4444
"@playwright/test": "^1.44.1",
45-
"@sentry-internal/rrweb": "2.11.0",
45+
"@sentry-internal/rrweb": "2.29.0",
4646
"@sentry/browser": "8.38.0",
4747
"axios": "1.7.7",
4848
"babel-loader": "^8.2.2",
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
window.addEventListener('error', function (event) {
2-
Sentry.captureException(event);
3-
});
4-
5-
window.thisDoesNotExist();
1+
Sentry.captureException(new ErrorEvent('something', { message: 'test error' }));

dev-packages/browser-integration-tests/suites/public-api/captureException/errorEvent/test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import type { Event } from '@sentry/types';
44
import { sentryTest } from '../../../../utils/fixtures';
55
import { getFirstSentryEnvelopeRequest } from '../../../../utils/helpers';
66

7-
sentryTest('should capture an ErrorEvent', async ({ getLocalTestPath, page }) => {
8-
const url = await getLocalTestPath({ testDir: __dirname });
7+
sentryTest('should capture an ErrorEvent', async ({ getLocalTestUrl, page }) => {
8+
const url = await getLocalTestUrl({ testDir: __dirname });
99

1010
const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
1111

1212
expect(eventData.exception?.values).toHaveLength(1);
1313
expect(eventData.exception?.values?.[0]).toMatchObject({
1414
type: 'ErrorEvent',
15-
value: 'Event `ErrorEvent` captured as exception with message `Script error.`',
15+
value: 'Event `ErrorEvent` captured as exception with message `test error`',
1616
mechanism: {
1717
type: 'generic',
1818
handled: true,

dev-packages/browser-integration-tests/suites/public-api/instrumentation/xhr/onreadystatechange/subject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
window.calls = {};
22
const xhr = new XMLHttpRequest();
3-
xhr.open('GET', 'test');
3+
xhr.open('GET', 'http://example.com');
44
xhr.onreadystatechange = function wat() {
55
window.calls[xhr.readyState] = window.calls[xhr.readyState] ? window.calls[xhr.readyState] + 1 : 1;
66
};

0 commit comments

Comments
 (0)