Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
0ffc262
Merge pull request #20359 from getsentry/master
github-actions[bot] Apr 16, 2026
e818fcb
fix(core): handle stateless MCP wrapper transport correlation (#20293)
logaretm Apr 16, 2026
104b64e
fix(browser): filter implausible LCP values (#20338)
logaretm Apr 16, 2026
361fbf3
test(nextjs): Unskip blocked cf tests (#20356)
chargome Apr 17, 2026
2137d1a
feat(deps): Bump protobufjs from 7.5.4 to 7.5.5 (#20372)
dependabot[bot] Apr 17, 2026
313cf82
chore(tests): Use verdaccio as node process instead of docker image (…
mydea Apr 17, 2026
e9ab83a
feat(browser): Add support for streamed spans in `cultureContextInteg…
Lms24 Apr 17, 2026
9ee1f77
fix(browser): Enrich graphqlClient spans for relative URLs (#20370)
logaretm Apr 17, 2026
fa9fea2
feat(opentelemetry): Add tracingChannel utility for context propagati…
logaretm Apr 17, 2026
d37d6e4
feat(hono): Add `@sentry/hono/bun` for Bun runtime (#20355)
s1gr1d Apr 20, 2026
be13537
feat(core): Emit `no_parent_span` client outcomes for discarded spans…
Lms24 Apr 20, 2026
6284aff
feat(replay): Add replayStart/replayEnd client lifecycle hooks (#20369)
logaretm Apr 20, 2026
5d0d145
test(node): Refactor integration tests for `honoIntegration` (#20397)
s1gr1d Apr 20, 2026
a87183e
fix(node-core): Pass rejection reason instead of Promise as originalE…
logaretm Apr 20, 2026
403391e
chore: Update size-limit (#20412)
JPeer264 Apr 21, 2026
fe4428e
fix(core): Correct GoogleGenAIIstrumentedMethod typo in type name
alwx Apr 21, 2026
2fd74e9
Merge pull request #20416 from getsentry/fix/google-genai-instrumente…
alwx Apr 21, 2026
e4e6c01
test(hono): Add E2E test for Hono on Cloudflare, Node and Bun (#20406)
s1gr1d Apr 21, 2026
69f0bbc
test(effect): Rename effect e2e tests to a versioned folder (#20390)
JPeer264 Apr 20, 2026
57d6012
feat(effect): Support v4 beta (#20394)
JPeer264 Apr 21, 2026
29604aa
feat(core): Export `spanStreamingIntegration` from CDN bundles (#20400)
nicohrubec Apr 21, 2026
617fede
chore: prevent test from creating zombie process (#20392)
isaacs Apr 17, 2026
215c16e
chore(e2e-tests): Use tarball symlinks for E2E tests instead of verda…
mydea Apr 22, 2026
ceadf2f
ref(node): Vendor undici instrumentation (#20190)
mydea Apr 22, 2026
738bd42
feat(hono): Add runtime packages as optional peer dependencies (#20423)
s1gr1d Apr 22, 2026
4d8baea
fix(console): Re-patch console in AWS Lambda runtimes (#20337)
s1gr1d Apr 22, 2026
7b9ce98
docs(readme): Update usage instructions for binary scripts (#20426)
s1gr1d Apr 22, 2026
a01d6a8
test(node-core): Fix minute-boundary race in session-aggregate tests …
nicohrubec Apr 22, 2026
b038417
fix(hono): Remove undefined from options type (#20419)
s1gr1d Apr 22, 2026
b2033c0
chore(lint): Remove lint warnings (#20413)
s1gr1d Apr 22, 2026
6d2942c
test(node): Use docker-compose healthchecks for service readiness (#2…
nicohrubec Apr 22, 2026
c2cf58f
chore(test): Remove empty variant tests (#20443)
mydea Apr 22, 2026
2798666
test(browser): Fix flaky sessions route-lifecycle test + upgrade axio…
Copilot Apr 22, 2026
14719e3
test(aws-serverless): Ensure aws-serverless E2E tests run locally (#2…
mydea Apr 22, 2026
7fb817e
test(nuxt): Fix flaky database error test (#20447)
nicohrubec Apr 22, 2026
ff23846
chore: Ignore claude worktrees (#20440)
JPeer264 Apr 22, 2026
a4c9686
test(hono): Add E2E tests for middleware spans (#20451)
s1gr1d Apr 22, 2026
7569b10
fix(cloudflare): Use TransformStream to keep track of streams (#20452)
JPeer264 Apr 22, 2026
4b4ac76
fix(node): Guard against null `httpVersion` in outgoing request span …
logaretm Apr 22, 2026
f97076d
chore(dev-deps): Bump nx from 22.5.0 to 22.6.5 (#20458)
mydea Apr 23, 2026
c741030
test(aws-serverless): Split npm & layer tests (#20442)
mydea Apr 23, 2026
39740da
test(cloudflare): Use .makeRequestAndWaitForEnvelope to wait for enve…
JPeer264 Apr 23, 2026
7b584c4
meta(changelog): Update changelog for 10.50.0
JPeer264 Apr 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .agents/skills/e2e/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ All tests completed successfully. Your SDK changes work correctly with this test

- **No tarballs found**: Run `yarn build && yarn build:tarball` at repository root
- **Test app not found**: List available apps and ask user to clarify
- **Verdaccio not running**: Tests should start Verdaccio automatically, but if issues occur, check Docker
- **Packed tarballs missing**: Run `yarn build:tarball` at the repo root, then `yarn test:prepare` in `dev-packages/e2e-tests`
- **Build failures**: Fix build errors before running tests

## Common Test Applications
Expand Down
1 change: 1 addition & 0 deletions .cursor/BUGBOT.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Do not flag the issues below if they appear in tests.
- Race conditions when waiting on multiple requests. Ensure that waiting checks are unique enough and don't depend on a hard order when there's a chance that telemetry can be sent in arbitrary order.
- Timeouts or sleeps in tests. Instead suggest concrete events or other signals to wait on.
- Flag usage of `getFirstEnvelope*`, `getMultipleEnvelope*` or related test helpers. These are NOT reliable anymore. Instead suggest helpers like `waitForTransaction`, `waitForError`, `waitForSpans`, etc.
- Flag any new or modified `docker-compose.yml` under `dev-packages/node-integration-tests/suites/` or `dev-packages/node-core-integration-tests/suites/` where a service does not define a `healthcheck:`. The runner uses `docker compose up --wait` and relies on healthchecks to know when services are actually ready; without one the test will race the service's startup.

## Platform-safe code

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/install-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ runs:
shell: bash

- name: Check dependency cache
uses: actions/cache@v4
uses: actions/cache@v5
id: cache_dependencies
with:
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
Expand Down
34 changes: 24 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -930,10 +930,12 @@ jobs:
with:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'
- name: Set up Bun
if: contains(fromJSON('["node-exports-test-app","nextjs-16-bun", "elysia-bun"]'), matrix.test-application)
if:
contains(fromJSON('["node-exports-test-app","nextjs-16-bun", "elysia-bun", "hono-4"]'),
matrix.test-application)
uses: oven-sh/setup-bun@v2
- name: Set up AWS SAM
if: matrix.test-application == 'aws-serverless'
if: matrix.test-application == 'aws-serverless' || matrix.test-application == 'aws-serverless-layer'
uses: aws-actions/setup-sam@v2
with:
use-installer: true
Expand All @@ -959,18 +961,24 @@ jobs:
if: steps.restore-tarball-cache.outputs.cache-hit != 'true'
run: yarn build:tarball

- name: Validate Verdaccio
run: yarn test:validate
- name: Prepare e2e tests
run: yarn test:prepare
working-directory: dev-packages/e2e-tests

- name: Prepare Verdaccio
run: yarn test:prepare
- name: Validate e2e tests setup
run: yarn test:validate
working-directory: dev-packages/e2e-tests

- name: Copy to temp
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
working-directory: dev-packages/e2e-tests

- name: Add pnpm overrides
run:
yarn ci:pnpm-overrides ${{ runner.temp }}/test-application ${{ github.workspace
}}/dev-packages/e2e-tests/packed
working-directory: dev-packages/e2e-tests

- name: Build E2E app
working-directory: ${{ runner.temp }}/test-application
timeout-minutes: 7
Expand Down Expand Up @@ -1069,18 +1077,24 @@ jobs:
if: steps.restore-tarball-cache.outputs.cache-hit != 'true'
run: yarn build:tarball

- name: Validate Verdaccio
run: yarn test:validate
- name: Prepare E2E tests
run: yarn test:prepare
working-directory: dev-packages/e2e-tests

- name: Prepare Verdaccio
run: yarn test:prepare
- name: Validate test setup
run: yarn test:validate
working-directory: dev-packages/e2e-tests

- name: Copy to temp
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
working-directory: dev-packages/e2e-tests

- name: Add pnpm overrides
run:
yarn ci:pnpm-overrides ${{ runner.temp }}/test-application ${{ github.workspace
}}/dev-packages/e2e-tests/packed
working-directory: dev-packages/e2e-tests

- name: Build E2E app
working-directory: ${{ runner.temp }}/test-application
timeout-minutes: 7
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,18 +140,24 @@ jobs:
path: ${{ env.CACHED_BUILD_PATHS }}
key: canary-${{ env.HEAD_COMMIT }}

- name: Validate Verdaccio
run: yarn test:validate
- name: Prepare e2e tests
run: yarn test:prepare
working-directory: dev-packages/e2e-tests

- name: Prepare Verdaccio
run: yarn test:prepare
- name: Validate test setup
run: yarn test:validate
working-directory: dev-packages/e2e-tests

- name: Copy to temp
run: yarn ci:copy-to-temp ./test-applications/${{ matrix.test-application }} ${{ runner.temp }}/test-application
working-directory: dev-packages/e2e-tests

- name: Add pnpm overrides
run:
yarn ci:pnpm-overrides ${{ runner.temp }}/test-application ${{ github.workspace
}}/dev-packages/e2e-tests/packed
working-directory: dev-packages/e2e-tests

- name: Build E2E app
working-directory: ${{ runner.temp }}/test-application
timeout-minutes: 7
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ packages/**/*.junit.xml

# Local Claude Code settings that should not be committed
.claude/settings.local.json
.claude/worktrees

# Triage report
**/triage_report.md
Expand Down
13 changes: 13 additions & 0 deletions .oxlintrc.base.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,19 @@
"max-lines": "off"
}
},
{
"files": ["**/integrations/node-fetch/vendored/**/*.ts"],
"rules": {
"typescript/consistent-type-imports": "off",
"typescript/no-unnecessary-type-assertion": "off",
"typescript/no-unsafe-member-access": "off",
"typescript/no-explicit-any": "off",
"typescript/prefer-for-of": "off",
"max-lines": "off",
"complexity": "off",
"no-param-reassign": "off"
}
},
{
"files": [
"**/scenarios/**",
Expand Down
32 changes: 16 additions & 16 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ module.exports = [
import: createImport('init', 'ErrorBoundary', 'reactRouterV6BrowserTracingIntegration'),
ignore: ['react/jsx-runtime'],
gzip: true,
limit: '46 KB',
limit: '47 KB',
},
// Vue SDK (ESM)
{
Expand Down Expand Up @@ -191,7 +191,7 @@ module.exports = [
name: 'CDN Bundle (incl. Tracing)',
path: createCDNPath('bundle.tracing.min.js'),
gzip: true,
limit: '45 KB',
limit: '46.5 KB',
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Browser bundle size limits increased across multiple packages

Low Severity

Multiple browser package bundle size limits were increased: gzipped CDN bundles grew by 1–1.5 KB (e.g., tracing bundle 45→46.5 KB), and uncompressed bundles grew by up to 4.5 KB (e.g., tracing+replay 251→255.5 KB). The review rules require flagging large bundle size increases in browser packages even when unavoidable. This is flagged because it was mentioned in the rules file.

Additional Locations (2)
Fix in Cursor Fix in Web

Triggered by project rule: PR Review Guidelines for Cursor Bot

Reviewed by Cursor Bugbot for commit 7b584c4. Configure here.

},
{
name: 'CDN Bundle (incl. Logs, Metrics)',
Expand All @@ -203,7 +203,7 @@ module.exports = [
name: 'CDN Bundle (incl. Tracing, Logs, Metrics)',
path: createCDNPath('bundle.tracing.logs.metrics.min.js'),
gzip: true,
limit: '46 KB',
limit: '47.5 KB',
},
{
name: 'CDN Bundle (incl. Replay, Logs, Metrics)',
Expand All @@ -215,40 +215,40 @@ module.exports = [
name: 'CDN Bundle (incl. Tracing, Replay)',
path: createCDNPath('bundle.tracing.replay.min.js'),
gzip: true,
limit: '82 KB',
limit: '83.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Logs, Metrics)',
path: createCDNPath('bundle.tracing.replay.logs.metrics.min.js'),
gzip: true,
limit: '83 KB',
limit: '84.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback)',
path: createCDNPath('bundle.tracing.replay.feedback.min.js'),
gzip: true,
limit: '88 KB',
limit: '89 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)',
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
gzip: true,
limit: '89 KB',
limit: '90 KB',
},
// browser CDN bundles (non-gzipped)
{
name: 'CDN Bundle - uncompressed',
path: createCDNPath('bundle.min.js'),
gzip: false,
brotli: false,
limit: '83.5 KB',
limit: '84 KB',
},
{
name: 'CDN Bundle (incl. Tracing) - uncompressed',
path: createCDNPath('bundle.tracing.min.js'),
gzip: false,
brotli: false,
limit: '134 KB',
limit: '138 KB',
},
{
name: 'CDN Bundle (incl. Logs, Metrics) - uncompressed',
Expand All @@ -262,42 +262,42 @@ module.exports = [
path: createCDNPath('bundle.tracing.logs.metrics.min.js'),
gzip: false,
brotli: false,
limit: '138 KB',
limit: '141.5 KB',
},
{
name: 'CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed',
path: createCDNPath('bundle.replay.logs.metrics.min.js'),
gzip: false,
brotli: false,
limit: '211 KB',
limit: '212 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay) - uncompressed',
path: createCDNPath('bundle.tracing.replay.min.js'),
gzip: false,
brotli: false,
limit: '251 KB',
limit: '255.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed',
path: createCDNPath('bundle.tracing.replay.logs.metrics.min.js'),
gzip: false,
brotli: false,
limit: '255 KB',
limit: '258.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed',
path: createCDNPath('bundle.tracing.replay.feedback.min.js'),
gzip: false,
brotli: false,
limit: '264 KB',
limit: '268 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed',
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
gzip: false,
brotli: false,
limit: '268 KB',
limit: '271.5 KB',
},
// Next.js SDK (ESM)
{
Expand All @@ -324,7 +324,7 @@ module.exports = [
import: createImport('init'),
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
gzip: true,
limit: '59 KB',
limit: '60 KB',
},
// Node SDK (ESM)
{
Expand Down
62 changes: 62 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,68 @@

## Unreleased

## 10.50.0

### Important Changes

- **feat(effect): Support v4 beta ([#20394](https://github.com/getsentry/sentry-javascript/pull/20394))**

The `@sentry/effect` integration now supports Effect v4 beta, enabling Sentry instrumentation for the latest Effect framework version.
Read more in the [Effect SDK readme](https://github.com/getsentry/sentry-javascript/blob/39740da9e46de76f4b03bb7ae11849ea761dac14/packages/effect/README.md).

- **feat(hono): Add `@sentry/hono/bun` for Bun runtime ([#20355](https://github.com/getsentry/sentry-javascript/pull/20355))**

A new `@sentry/hono/bun` entry point adds first-class support for running Hono applications instrumented with Sentry on the Bun runtime.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can point them to the package docs here for explanation and people can also see it's still alpha

Read more in the [Hono SDK readme](https://github.com/getsentry/sentry-javascript/blob/39740da9e46de76f4b03bb7ae11849ea761dac14/packages/hono/README.md).

- **feat(replay): Add replayStart/replayEnd client lifecycle hooks ([#20369](https://github.com/getsentry/sentry-javascript/pull/20369))**

New `replayStart` and `replayEnd` client lifecycle hooks let you react to replay session start and end events in your application.

### Other Changes

- feat(core): Emit `no_parent_span` client outcomes for discarded spans requiring a parent ([#20350](https://github.com/getsentry/sentry-javascript/pull/20350))
- feat(deps): Bump protobufjs from 7.5.4 to 7.5.5 ([#20372](https://github.com/getsentry/sentry-javascript/pull/20372))
- feat(hono): Add runtime packages as optional peer dependencies ([#20423](https://github.com/getsentry/sentry-javascript/pull/20423))
- feat(opentelemetry): Add tracingChannel utility for context propagation ([#20358](https://github.com/getsentry/sentry-javascript/pull/20358))
- fix(browser): Enrich graphqlClient spans for relative URLs ([#20370](https://github.com/getsentry/sentry-javascript/pull/20370))
- fix(browser): Filter implausible LCP values ([#20338](https://github.com/getsentry/sentry-javascript/pull/20338))
- fix(cloudflare): Use TransformStream to keep track of streams ([#20452](https://github.com/getsentry/sentry-javascript/pull/20452))
- fix(console): Re-patch console in AWS Lambda runtimes ([#20337](https://github.com/getsentry/sentry-javascript/pull/20337))
- fix(core): Correct `GoogleGenAIIstrumentedMethod` typo in type name
- fix(core): Handle stateless MCP wrapper transport correlation ([#20293](https://github.com/getsentry/sentry-javascript/pull/20293))
- fix(hono): Remove undefined from options type ([#20419](https://github.com/getsentry/sentry-javascript/pull/20419))
- fix(node): Guard against null `httpVersion` in outgoing request span attributes ([#20430](https://github.com/getsentry/sentry-javascript/pull/20430))
- fix(node-core): Pass rejection reason instead of Promise as originalException ([#20366](https://github.com/getsentry/sentry-javascript/pull/20366))

<details>
<summary> <strong>Internal Changes</strong> </summary>

- chore: Ignore claude worktrees ([#20440](https://github.com/getsentry/sentry-javascript/pull/20440))
- chore: Prevent test from creating zombie process ([#20392](https://github.com/getsentry/sentry-javascript/pull/20392))
- chore: Update size-limit ([#20412](https://github.com/getsentry/sentry-javascript/pull/20412))
- chore(dev-deps): Bump nx from 22.5.0 to 22.6.5 ([#20458](https://github.com/getsentry/sentry-javascript/pull/20458))
- chore(e2e-tests): Use tarball symlinks for E2E tests instead of verdaccio ([#20386](https://github.com/getsentry/sentry-javascript/pull/20386))
- chore(lint): Remove lint warnings ([#20413](https://github.com/getsentry/sentry-javascript/pull/20413))
- chore(test): Remove empty variant tests ([#20443](https://github.com/getsentry/sentry-javascript/pull/20443))
- chore(tests): Use verdaccio as node process instead of docker image ([#20336](https://github.com/getsentry/sentry-javascript/pull/20336))
- docs(readme): Update usage instructions for binary scripts ([#20426](https://github.com/getsentry/sentry-javascript/pull/20426))
- ref(node): Vendor undici instrumentation ([#20190](https://github.com/getsentry/sentry-javascript/pull/20190))
- test(aws-serverless): Ensure aws-serverless E2E tests run locally ([#20441](https://github.com/getsentry/sentry-javascript/pull/20441))
- test(aws-serverless): Split npm & layer tests ([#20442](https://github.com/getsentry/sentry-javascript/pull/20442))
- test(browser): Fix flaky sessions route-lifecycle test + upgrade axios ([#20197](https://github.com/getsentry/sentry-javascript/pull/20197))
- test(cloudflare): Use `.makeRequestAndWaitForEnvelope` to wait for envelopes ([#20208](https://github.com/getsentry/sentry-javascript/pull/20208))
- test(effect): Rename effect e2e tests to a versioned folder ([#20390](https://github.com/getsentry/sentry-javascript/pull/20390))
- test(hono): Add E2E test for Hono on Cloudflare, Node and Bun ([#20406](https://github.com/getsentry/sentry-javascript/pull/20406))
- test(hono): Add E2E tests for middleware spans ([#20451](https://github.com/getsentry/sentry-javascript/pull/20451))
- test(nextjs): Unskip blocked cf tests ([#20356](https://github.com/getsentry/sentry-javascript/pull/20356))
- test(node): Refactor integration tests for `honoIntegration` ([#20397](https://github.com/getsentry/sentry-javascript/pull/20397))
- test(node): Use docker-compose healthchecks for service readiness ([#20429](https://github.com/getsentry/sentry-javascript/pull/20429))
- test(node-core): Fix minute-boundary race in session-aggregate tests ([#20437](https://github.com/getsentry/sentry-javascript/pull/20437))
- test(nuxt): Fix flaky database error test ([#20447](https://github.com/getsentry/sentry-javascript/pull/20447))

</details>

## 10.49.0

### Important Changes
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [Sentry.spanStreamingIntegration(), Sentry.browserTracingIntegration()],
tracesSampleRate: 1.0,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { expect } from '@playwright/test';
import { sentryTest } from '../../../utils/fixtures';
import { getSpanOp, waitForStreamedSpans } from '../../../utils/spanUtils';
import { shouldSkipTracingTest } from '../../../utils/helpers';

sentryTest('cultureContextIntegration captures locale, timezone, and calendar', async ({ getLocalTestUrl, page }) => {
sentryTest.skip(shouldSkipTracingTest());
const url = await getLocalTestUrl({ testDir: __dirname });

const spansPromise = waitForStreamedSpans(page, spans => spans.some(s => getSpanOp(s) === 'pageload'));

await page.goto(url);

const spans = await spansPromise;

const pageloadSpan = spans.find(s => getSpanOp(s) === 'pageload');

expect(pageloadSpan!.attributes?.['culture.locale']).toEqual({ type: 'string', value: expect.any(String) });
expect(pageloadSpan!.attributes?.['culture.timezone']).toEqual({ type: 'string', value: expect.any(String) });
expect(pageloadSpan!.attributes?.['culture.calendar']).toEqual({ type: 'string', value: expect.any(String) });
});
Loading
Loading