Skip to content

Commit d592355

Browse files
andreiborzagithub-actions[bot]RulaKhaledchargomeLms24
authored
meta(changelog): Update changelog for 9.23.0 (#16411)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Rola Abuhasna <rola.abuhasna@sentry.io> Co-authored-by: Charly Gomez <charly.gomez@sentry.io> Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io> Co-authored-by: Francesco Gringl-Novy <francesco.novy@sentry.io> Co-authored-by: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Co-authored-by: Tim Fish <tim@timfish.uk> Co-authored-by: Abhijeet Prasad <aprasad@sentry.io> Co-authored-by: Burak Yigit Kaya <byk@sentry.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Benjamin E. Coe <benjamin.coe@sentry.io> Co-authored-by: Ivan Pešić <ivan.t.pesic@gmail.com> Co-authored-by: Ivan Pesic <pesic.ivan@feg.eu> Co-authored-by: Daniel Griesser <daniel.griesser.86@gmail.com>
2 parents a79ca7e + 5eca427 commit d592355

File tree

103 files changed

+2108
-515
lines changed

Some content is hidden

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

103 files changed

+2108
-515
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,13 @@ jobs:
886886
- uses: pnpm/action-setup@v4
887887
with:
888888
version: 9.4.0
889+
- name: Set up Node for Angular 20
890+
if: matrix.test-application == 'angular-20'
891+
uses: actions/setup-node@v4
892+
with:
893+
node-version: '20.19.2'
889894
- name: Set up Node
895+
if: matrix.test-application != 'angular-20'
890896
uses: actions/setup-node@v4
891897
with:
892898
node-version-file: 'dev-packages/e2e-tests/package.json'

CHANGELOG.md

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

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

13+
## 9.23.0
14+
15+
### Important changes
16+
17+
- **feat(browser): option to ignore certain resource types ([#16389](https://github.com/getsentry/sentry-javascript/pull/16389))**
18+
19+
Adds an option to opt out of certain `resource.*` spans via `ignoreResourceSpans`.
20+
21+
For example, to opt out of `resource.script` spans:
22+
23+
```js
24+
Sentry.browserTracingIntegration({
25+
ignoreResourceSpans: ['resource.script'],
26+
}),
27+
```
28+
29+
### Other changes
30+
31+
- feat: Export `isEnabled` from all SDKs ([#16405](https://github.com/getsentry/sentry-javascript/pull/16405))
32+
- feat(browser): Disable client when browser extension is detected in `init()` ([#16354](https://github.com/getsentry/sentry-javascript/pull/16354))
33+
- feat(core): Allow re-use of `captureLog` ([#16352](https://github.com/getsentry/sentry-javascript/pull/16352))
34+
- feat(core): Export `_INTERNAL_captureSerializedLog` ([#16387](https://github.com/getsentry/sentry-javascript/pull/16387))
35+
- feat(deps): bump @opentelemetry/semantic-conventions from 1.32.0 to 1.34.0 ([#16393](https://github.com/getsentry/sentry-javascript/pull/16393))
36+
- feat(deps): bump @prisma/instrumentation from 6.7.0 to 6.8.2 ([#16392](https://github.com/getsentry/sentry-javascript/pull/16392))
37+
- feat(deps): bump @sentry/cli from 2.43.0 to 2.45.0 ([#16395](https://github.com/getsentry/sentry-javascript/pull/16395))
38+
- feat(deps): bump @sentry/webpack-plugin from 3.3.1 to 3.5.0 ([#16394](https://github.com/getsentry/sentry-javascript/pull/16394))
39+
- feat(nextjs): Include `static/chunks/main-*` files for `widenClientFileUpload` ([#16406](https://github.com/getsentry/sentry-javascript/pull/16406))
40+
- feat(node): Do not add HTTP & fetch span instrumentation if tracing is disabled ([#15730](https://github.com/getsentry/sentry-javascript/pull/15730))
41+
- feat(nuxt): Added support for nuxt layers ([#16372](https://github.com/getsentry/sentry-javascript/pull/16372))
42+
- fix(browser): Ensure logs are flushed when sendClientReports=false ([#16351](https://github.com/getsentry/sentry-javascript/pull/16351))
43+
- fix(browser): Move `browserTracingIntegration` code to `setup` hook ([#16386](https://github.com/getsentry/sentry-javascript/pull/16386))
44+
- fix(cloudflare): Capture exceptions thrown in hono ([#16355](https://github.com/getsentry/sentry-javascript/pull/16355))
45+
- fix(node): Don't warn about Spotlight on empty NODE_ENV ([#16381](https://github.com/getsentry/sentry-javascript/pull/16381))
46+
- fix(node): Suppress Spotlight calls ([#16380](https://github.com/getsentry/sentry-javascript/pull/16380))
47+
- fix(nuxt): Add `@sentry/nuxt` as external in Rollup ([#16407](https://github.com/getsentry/sentry-javascript/pull/16407))
48+
- fix(opentelemetry): Ensure `withScope` keeps span active & `_getTraceInfoFromScope` works ([#16385](https://github.com/getsentry/sentry-javascript/pull/16385))
49+
50+
Work in this release was contributed by @Xenossolitarius. Thank you for your contribution!
51+
1352
## 9.22.0
1453

1554
### Important changes

dev-packages/browser-integration-tests/suites/manual-client/skip-init-browser-extension/test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ sentryTest(
1818
return !!(window as any).Sentry.isInitialized();
1919
});
2020

21-
expect(isInitialized).toEqual(false);
21+
const isEnabled = await page.evaluate(() => {
22+
return !!(window as any).Sentry.getClient()?.getOptions().enabled;
23+
});
24+
25+
expect(isInitialized).toEqual(true);
26+
expect(isEnabled).toEqual(false);
2227

2328
if (hasDebugLogs()) {
2429
expect(errorLogs.length).toEqual(1);

dev-packages/browser-integration-tests/suites/manual-client/skip-init-chrome-extension/test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ sentryTest('should not initialize when inside a Chrome browser extension', async
1616
return !!(window as any).Sentry.isInitialized();
1717
});
1818

19-
expect(isInitialized).toEqual(false);
19+
const isEnabled = await page.evaluate(() => {
20+
return !!(window as any).Sentry.getClient()?.getOptions().enabled;
21+
});
22+
23+
expect(isInitialized).toEqual(true);
24+
expect(isEnabled).toEqual(false);
2025

2126
if (hasDebugLogs()) {
2227
expect(errorLogs.length).toEqual(1);

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/multiple-integrations/test.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(() => {
2+
// I do nothing.
3+
})();
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ window.Sentry = Sentry;
44

55
Sentry.init({
66
dsn: 'https://public@dsn.ingest.sentry.io/1337',
7-
integrations: [Sentry.browserTracingIntegration(), Sentry.browserTracingIntegration()],
7+
integrations: [
8+
Sentry.browserTracingIntegration({
9+
ignoreResourceSpans: ['resource.script'],
10+
idleTimeout: 9000,
11+
}),
12+
],
813
tracesSampleRate: 1,
914
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { Route } from '@playwright/test';
2+
import { expect } from '@playwright/test';
3+
import type { Event } from '@sentry/core';
4+
import { sentryTest } from '../../../../utils/fixtures';
5+
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';
6+
7+
sentryTest('should allow specific types of resource spans to be ignored.', async ({ getLocalTestUrl, page }) => {
8+
if (shouldSkipTracingTest()) {
9+
sentryTest.skip();
10+
}
11+
12+
await page.route('**/path/to/script.js', (route: Route) => route.fulfill({ path: `${__dirname}/assets/script.js` }));
13+
14+
const url = await getLocalTestUrl({ testDir: __dirname });
15+
16+
const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
17+
const allSpans = eventData.spans?.filter(({ op }) => op?.startsWith('resource.script'));
18+
19+
expect(allSpans?.length).toBe(0);
20+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
Sentry.init({
6+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
7+
integrations: [Sentry.browserTracingIntegration()],
8+
tracePropagationTargets: ['http://sentry-test-site.example'],
9+
tracesSampleRate: 1,
10+
autoSessionTracking: false,
11+
});
12+
13+
// fetch directly after init
14+
fetch('http://sentry-test-site.example/0');
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { expect } from '@playwright/test';
2+
import { sentryTest } from '../../../../utils/fixtures';
3+
import {
4+
envelopeRequestParser,
5+
shouldSkipTracingTest,
6+
waitForTransactionRequestOnUrl,
7+
} from '../../../../utils/helpers';
8+
9+
sentryTest('should create spans for fetch requests called directly after init', async ({ getLocalTestUrl, page }) => {
10+
if (shouldSkipTracingTest()) {
11+
sentryTest.skip();
12+
}
13+
14+
await page.route('http://sentry-test-site.example/*', route => route.fulfill({ body: 'ok' }));
15+
16+
const url = await getLocalTestUrl({ testDir: __dirname });
17+
18+
const req = await waitForTransactionRequestOnUrl(page, url);
19+
const tracingEvent = envelopeRequestParser(req);
20+
21+
const requestSpans = tracingEvent.spans?.filter(({ op }) => op === 'http.client');
22+
23+
expect(requestSpans).toHaveLength(1);
24+
25+
expect(requestSpans![0]).toMatchObject({
26+
description: 'GET http://sentry-test-site.example/0',
27+
parent_span_id: tracingEvent.contexts?.trace?.span_id,
28+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
29+
start_timestamp: expect.any(Number),
30+
timestamp: expect.any(Number),
31+
trace_id: tracingEvent.contexts?.trace?.trace_id,
32+
data: {
33+
'http.method': 'GET',
34+
'http.url': 'http://sentry-test-site.example/0',
35+
url: 'http://sentry-test-site.example/0',
36+
'server.address': 'sentry-test-site.example',
37+
type: 'fetch',
38+
},
39+
});
40+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Editor configuration, see https://editorconfig.org
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
indent_style = space
7+
indent_size = 2
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.ts]
12+
quote_type = single
13+
ij_typescript_use_double_quotes = false
14+
15+
[*.md]
16+
max_line_length = off
17+
trim_trailing_whitespace = false
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
2+
3+
# Compiled output
4+
/dist
5+
/tmp
6+
/out-tsc
7+
/bazel-out
8+
9+
# Node
10+
/node_modules
11+
npm-debug.log
12+
yarn-error.log
13+
14+
# IDEs and editors
15+
.idea/
16+
.project
17+
.classpath
18+
.c9/
19+
*.launch
20+
.settings/
21+
*.sublime-workspace
22+
23+
# Visual Studio Code
24+
.vscode/*
25+
!.vscode/settings.json
26+
!.vscode/tasks.json
27+
!.vscode/launch.json
28+
!.vscode/extensions.json
29+
.history/*
30+
31+
# Miscellaneous
32+
/.angular/cache
33+
.sass-cache/
34+
/connect.lock
35+
/coverage
36+
/libpeerconnection.log
37+
testem.log
38+
/typings
39+
40+
# System files
41+
.DS_Store
42+
Thumbs.db
43+
44+
test-results
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@sentry:registry=http://127.0.0.1:4873
2+
@sentry-internal:registry=http://127.0.0.1:4873
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Angular 20
2+
3+
E2E test app for Angular 20 and `@sentry/angular`.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3+
"version": 1,
4+
"newProjectRoot": "projects",
5+
"projects": {
6+
"angular-20": {
7+
"projectType": "application",
8+
"schematics": {},
9+
"root": "",
10+
"sourceRoot": "src",
11+
"prefix": "app",
12+
"architect": {
13+
"build": {
14+
"builder": "@angular-devkit/build-angular:application",
15+
"options": {
16+
"outputPath": "dist/angular-20",
17+
"index": "src/index.html",
18+
"browser": "src/main.ts",
19+
"polyfills": ["zone.js"],
20+
"tsConfig": "tsconfig.app.json",
21+
"assets": [
22+
{
23+
"glob": "**/*",
24+
"input": "public"
25+
}
26+
],
27+
"styles": ["src/styles.css"],
28+
"scripts": []
29+
},
30+
"configurations": {
31+
"production": {
32+
"budgets": [
33+
{
34+
"type": "initial",
35+
"maximumWarning": "500kB",
36+
"maximumError": "1MB"
37+
},
38+
{
39+
"type": "anyComponentStyle",
40+
"maximumWarning": "4kB",
41+
"maximumError": "8kB"
42+
}
43+
],
44+
"outputHashing": "all"
45+
},
46+
"development": {
47+
"optimization": false,
48+
"extractLicenses": false,
49+
"sourceMap": true
50+
}
51+
},
52+
"defaultConfiguration": "production"
53+
},
54+
"serve": {
55+
"builder": "@angular-devkit/build-angular:dev-server",
56+
"configurations": {
57+
"production": {
58+
"buildTarget": "angular-20:build:production"
59+
},
60+
"development": {
61+
"buildTarget": "angular-20:build:development"
62+
}
63+
},
64+
"defaultConfiguration": "development"
65+
},
66+
"extract-i18n": {
67+
"builder": "@angular-devkit/build-angular:extract-i18n"
68+
},
69+
"test": {
70+
"builder": "@angular-devkit/build-angular:karma",
71+
"options": {
72+
"polyfills": ["zone.js", "zone.js/testing"],
73+
"tsConfig": "tsconfig.spec.json",
74+
"assets": [
75+
{
76+
"glob": "**/*",
77+
"input": "public"
78+
}
79+
],
80+
"styles": ["src/styles.css"],
81+
"scripts": []
82+
}
83+
}
84+
}
85+
}
86+
}
87+
}

0 commit comments

Comments
 (0)