Skip to content

Commit e214d08

Browse files
authored
Merge branch 'develop' into timfish/feat/reporting-api
2 parents ca35199 + 81b1f9f commit e214d08

File tree

321 files changed

+4148
-6451
lines changed

Some content is hidden

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

321 files changed

+4148
-6451
lines changed

.github/dependabot.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,10 @@ updates:
1313
schedule:
1414
interval: 'weekly'
1515
allow:
16-
- dependency-name: "@sentry/cli"
17-
- dependency-name: "@sentry/vite-plugin"
18-
- dependency-name: "@sentry/webpack-plugin"
19-
- dependency-name: "@sentry/rollup-plugin"
20-
- dependency-name: "@sentry/esbuild-plugin"
16+
- dependency-name: "@sentry/*"
2117
- dependency-name: "@opentelemetry/*"
2218
- dependency-name: "@prisma/instrumentation"
19+
- dependency-name: "opentelemetry-instrumentation-remix"
2320
versioning-strategy: increase
2421
commit-message:
2522
prefix: feat
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fail-on-severity: 'high'
2+
allow-ghsas:
3+
# dependency review does not allow specific file exclusions
4+
# we use an older version of NextJS in our tests and thus need to
5+
# exclude this
6+
# once our minimum supported version is over 14.1.1 this can be removed
7+
- GHSA-fr5h-rqp8-mj6g

.github/workflows/build.yml

Lines changed: 39 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ jobs:
437437
with:
438438
node-version-file: 'package.json'
439439
- name: Set up Deno
440-
uses: denoland/setup-deno@v1.5.1
440+
uses: denoland/setup-deno@v2.0.1
441441
with:
442442
deno-version: v1.38.5
443443
- name: Restore caches
@@ -858,7 +858,7 @@ jobs:
858858
if: always() && needs.job_e2e_prepare.result == 'success'
859859
needs: [job_get_metadata, job_build, job_e2e_prepare]
860860
runs-on: ubuntu-20.04
861-
timeout-minutes: 10
861+
timeout-minutes: 15
862862
env:
863863
# We just use a dummy DSN here, only send to the tunnel anyhow
864864
E2E_TEST_DSN: 'https://username@domain/123'
@@ -904,6 +904,7 @@ jobs:
904904
'nextjs-13',
905905
'nextjs-14',
906906
'nextjs-15',
907+
'nextjs-turbo',
907908
'nextjs-t3',
908909
'react-17',
909910
'react-19',
@@ -1018,12 +1019,12 @@ jobs:
10181019

10191020
- name: Build E2E app
10201021
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1021-
timeout-minutes: 5
1022+
timeout-minutes: 7
10221023
run: pnpm ${{ matrix.build-command || 'test:build' }}
10231024

10241025
- name: Run E2E test
10251026
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1026-
timeout-minutes: 5
1027+
timeout-minutes: 10
10271028
run: pnpm test:assert
10281029

10291030
- name: Upload Playwright Traces
@@ -1035,14 +1036,20 @@ jobs:
10351036
overwrite: true
10361037
retention-days: 7
10371038

1039+
- name: Pre-process E2E Test Dumps
1040+
if: always()
1041+
run: |
1042+
node ./scripts/normalize-e2e-test-dump-transaction-events.js
1043+
10381044
- name: Upload E2E Test Event Dumps
10391045
uses: actions/upload-artifact@v4
10401046
if: always()
10411047
with:
1042-
name: playwright-event-dumps-job_e2e_playwright_tests-${{ matrix.test-application }}
1048+
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
10431049
path: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/event-dumps
10441050
overwrite: true
10451051
retention-days: 7
1052+
if-no-files-found: ignore
10461053

10471054
- name: Upload test results to Codecov
10481055
if: cancelled() == false
@@ -1063,7 +1070,7 @@ jobs:
10631070
github.actor != 'dependabot[bot]'
10641071
needs: [job_get_metadata, job_build, job_e2e_prepare]
10651072
runs-on: ubuntu-20.04
1066-
timeout-minutes: 10
1073+
timeout-minutes: 15
10671074
env:
10681075
E2E_TEST_AUTH_TOKEN: ${{ secrets.E2E_TEST_AUTH_TOKEN }}
10691076
E2E_TEST_DSN: ${{ secrets.E2E_TEST_DSN }}
@@ -1083,10 +1090,6 @@ jobs:
10831090
'react-send-to-sentry',
10841091
'node-express-send-to-sentry',
10851092
'debug-id-sourcemaps',
1086-
'nextjs-app-dir',
1087-
'nextjs-13',
1088-
'nextjs-14',
1089-
'nextjs-15',
10901093
]
10911094
build-command:
10921095
- false
@@ -1125,6 +1128,12 @@ jobs:
11251128
- test-application: 'nextjs-15'
11261129
build-command: 'test:build-latest'
11271130
label: 'nextjs-15 (latest)'
1131+
- test-application: 'nextjs-turbo'
1132+
build-command: 'test:build-canary'
1133+
label: 'nextjs-turbo (canary)'
1134+
- test-application: 'nextjs-turbo'
1135+
build-command: 'test:build-latest'
1136+
label: 'nextjs-turbo (latest)'
11281137

11291138
steps:
11301139
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
@@ -1176,14 +1185,29 @@ jobs:
11761185

11771186
- name: Build E2E app
11781187
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1179-
timeout-minutes: 5
1188+
timeout-minutes: 7
11801189
run: pnpm ${{ matrix.build-command || 'test:build' }}
11811190

11821191
- name: Run E2E test
11831192
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1184-
timeout-minutes: 5
1193+
timeout-minutes: 10
11851194
run: pnpm ${{ matrix.assert-command || 'test:assert' }}
11861195

1196+
- name: Pre-process E2E Test Dumps
1197+
if: always()
1198+
run: |
1199+
node ./scripts/normalize-e2e-test-dump-transaction-events.js
1200+
1201+
- name: Upload E2E Test Event Dumps
1202+
uses: actions/upload-artifact@v4
1203+
if: always()
1204+
with:
1205+
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
1206+
path: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/event-dumps
1207+
overwrite: true
1208+
retention-days: 7
1209+
if-no-files-found: ignore
1210+
11871211
- name: Deploy Astro to Cloudflare
11881212
uses: cloudflare/pages-action@v1
11891213
if: matrix.test-application == 'cloudflare-astro'
@@ -1210,7 +1234,7 @@ jobs:
12101234
)
12111235
needs: [job_get_metadata, job_build, job_e2e_prepare]
12121236
runs-on: ubuntu-20.04
1213-
timeout-minutes: 10
1237+
timeout-minutes: 15
12141238
env:
12151239
E2E_TEST_AUTH_TOKEN: ${{ secrets.E2E_TEST_AUTH_TOKEN }}
12161240
E2E_TEST_DSN: ${{ secrets.E2E_TEST_DSN }}
@@ -1282,12 +1306,12 @@ jobs:
12821306

12831307
- name: Build E2E app
12841308
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1285-
timeout-minutes: 5
1309+
timeout-minutes: 7
12861310
run: yarn ${{ matrix.build-command || 'test:build' }}
12871311

12881312
- name: Run E2E test
12891313
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1290-
timeout-minutes: 5
1314+
timeout-minutes: 10
12911315
run: yarn test:assert
12921316

12931317
job_required_jobs_passed:
@@ -1321,48 +1345,6 @@ jobs:
13211345
run: |
13221346
echo "One of the dependent jobs have failed. You may need to re-run it." && exit 1
13231347
1324-
overhead_metrics:
1325-
name: Overhead metrics
1326-
needs: [job_get_metadata, job_build]
1327-
runs-on: ubuntu-20.04
1328-
timeout-minutes: 30
1329-
if: |
1330-
contains(github.event.pull_request.labels.*.name, 'ci-overhead-measurements')
1331-
steps:
1332-
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
1333-
uses: actions/checkout@v4
1334-
with:
1335-
ref: ${{ env.HEAD_COMMIT }}
1336-
- name: Set up Node
1337-
uses: actions/setup-node@v4
1338-
with:
1339-
node-version-file: 'package.json'
1340-
- name: Restore caches
1341-
uses: ./.github/actions/restore-cache
1342-
with:
1343-
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}
1344-
1345-
- name: Collect
1346-
run: yarn ci:collect
1347-
working-directory: dev-packages/overhead-metrics
1348-
1349-
- name: Process
1350-
id: process
1351-
run: yarn ci:process
1352-
working-directory: dev-packages/overhead-metrics
1353-
# Don't run on forks - the PR comment cannot be added.
1354-
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
1355-
env:
1356-
GITHUB_TOKEN: ${{ github.token }}
1357-
1358-
- name: Upload results
1359-
uses: actions/upload-artifact@v4
1360-
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
1361-
with:
1362-
name: ${{ steps.process.outputs.artifactName }}
1363-
path: ${{ steps.process.outputs.artifactPath }}
1364-
retention-days: 7
1365-
13661348
job_compile_bindings_profiling_node:
13671349
name: Compile & Test Profiling Bindings (v${{ matrix.node }}) ${{ matrix.target_platform || matrix.os }}, ${{ matrix.node || matrix.container }}, ${{ matrix.arch || matrix.container }}, ${{ contains(matrix.container, 'alpine') && 'musl' || 'glibc' }}
13681350
needs: [job_get_metadata, job_build]

.github/workflows/canary.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ jobs:
9696
- test-application: 'nextjs-15'
9797
build-command: 'test:build-latest'
9898
label: 'nextjs-15 (latest)'
99+
- test-application: 'nextjs-turbo'
100+
build-command: 'test:build-canary'
101+
label: 'nextjs-turbo (canary)'
102+
- test-application: 'nextjs-turbo'
103+
build-command: 'test:build-latest'
104+
label: 'nextjs-turbo (latest)'
99105
- test-application: 'react-create-hash-router'
100106
build-command: 'test:build-canary'
101107
label: 'react-create-hash-router (canary)'
@@ -140,7 +146,7 @@ jobs:
140146

141147
- name: Build E2E app
142148
working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
143-
timeout-minutes: 5
149+
timeout-minutes: 7
144150
run: yarn ${{ matrix.build-command }}
145151

146152
- name: Run E2E test

.github/workflows/codeql-analysis.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ jobs:
3333
analyze:
3434
name: Analyze
3535
runs-on: ubuntu-latest
36+
# Skip for pushes from dependabot, which is not supported
37+
if: github.event_name == 'pull_request' || github.actor != 'dependabot[bot]'
3638

3739
strategy:
3840
fail-fast: false
@@ -48,7 +50,7 @@ jobs:
4850

4951
# Initializes the CodeQL tools for scanning.
5052
- name: Initialize CodeQL
51-
uses: github/codeql-action/init@v2
53+
uses: github/codeql-action/init@v3
5254
with:
5355
config-file: ./.github/codeql/codeql-config.yml
5456
queries: security-extended
@@ -61,7 +63,7 @@ jobs:
6163
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
6264
# If this step fails, then you should remove it and run the build manually (see below)
6365
- name: Autobuild
64-
uses: github/codeql-action/autobuild@v2
66+
uses: github/codeql-action/autobuild@v3
6567

6668
# ℹ️ Command-line programs to run using the OS shell.
6769
# 📚 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
@@ -75,4 +77,4 @@ jobs:
7577
# make release
7678

7779
- name: Perform CodeQL Analysis
78-
uses: github/codeql-action/analyze@v2
80+
uses: github/codeql-action/analyze@v3

.size-limit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ module.exports = [
224224
import: createImport('init'),
225225
ignore: ['next/router', 'next/constants'],
226226
gzip: true,
227-
limit: '39 KB',
227+
limit: '39.1 KB',
228228
},
229229
// SvelteKit SDK (ESM)
230230
{

dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/replay/test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,6 @@ sentryTest('should capture a replay', async ({ getLocalTestUrl, page }) => {
1111
sentryTest.skip();
1212
}
1313

14-
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
15-
return route.fulfill({
16-
status: 200,
17-
contentType: 'application/json',
18-
body: JSON.stringify({ id: 'test-id' }),
19-
});
20-
});
21-
2214
const req = waitForReplayRequest(page);
2315

2416
const url = await getLocalTestUrl({ testDir: __dirname });

dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/replayError/test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ sentryTest('should capture a replay & attach an error', async ({ getLocalTestUrl
99
sentryTest.skip();
1010
}
1111

12-
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
13-
return route.fulfill({
14-
status: 200,
15-
contentType: 'application/json',
16-
body: JSON.stringify({ id: 'test-id' }),
17-
});
18-
});
19-
2012
const req = waitForReplayRequest(page);
2113

2214
const url = await getLocalTestUrl({ testDir: __dirname });

dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/sdkLoadedInMeanwhile/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ sentryTest('it does not download the SDK if the SDK was loaded in the meanwhile'
2828
});
2929
});
3030

31-
const tmpDir = await getLocalTestUrl({ testDir: __dirname, skipRouteHandler: true });
31+
const tmpDir = await getLocalTestUrl({ testDir: __dirname, skipRouteHandler: true, skipDsnRouteHandler: true });
3232

3333
await page.route(`${TEST_HOST}/*.*`, route => {
3434
const file = route.request().url().split('/').pop();

dev-packages/browser-integration-tests/loader-suites/loader/onLoad/captureExceptionInOnLoad/test.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ import { sentryTest } from '../../../../utils/fixtures';
44
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';
55

66
sentryTest('captureException works inside of onLoad', async ({ getLocalTestUrl, page }) => {
7-
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
8-
return route.fulfill({
9-
status: 200,
10-
contentType: 'application/json',
11-
body: JSON.stringify({ id: 'test-id' }),
12-
});
13-
});
14-
157
const url = await getLocalTestUrl({ testDir: __dirname });
168
const req = await waitForErrorRequestOnUrl(page, url);
179

@@ -21,14 +13,6 @@ sentryTest('captureException works inside of onLoad', async ({ getLocalTestUrl,
2113
});
2214

2315
sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
24-
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
25-
return route.fulfill({
26-
status: 200,
27-
contentType: 'application/json',
28-
body: JSON.stringify({ id: 'test-id' }),
29-
});
30-
});
31-
3216
const url = await getLocalTestUrl({ testDir: __dirname });
3317
const req = await waitForErrorRequestOnUrl(page, url);
3418

0 commit comments

Comments
 (0)