Skip to content

ci: shard Node integration tests and increase browser Playwright workers - #24676

Draft
nicohrubec wants to merge 10 commits into
developfrom
feat/node-integration-timings
Draft

nicohrubec wants to merge 10 commits into
developfrom
feat/node-integration-timings

Conversation

@nicohrubec

@nicohrubec nicohrubec commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Reduce CI wall time with three shards for every Node integration configuration and six CI workers for browser Playwright. Loader and framework E2E worker settings remain unchanged. Bundle sharding and timing-report additions are removed.

CI experiment comparisons

Compare CI wall time from workflow start until the required-check gate finishes, including queueing and setup. The Node column is the longest individual Node integration job, including setup; the bundle column is the actual Build bundles step, excluding runner setup and artifact handling.

Configuration GitHub run CI wall time Slowest Node job Bundle step Result
Unsharded baseline 35974612681, attempt 1 16m03s 13m29s — Passed
Two Node shards 35977843117, attempt 1 11m57s 8m11s 2m30s Passed
Two shards, reproducibility rerun 35977843117, attempt 2 16m27s 9m11s 1m59s Cloudflare D1 failed; all Node shards passed
Three Node shards 35992080631, attempt 1 11m28s 7m31s 2m16s Passed
Three Node shards + parallel bundles 35996761140, attempt 1 11m13s 8m06s 1m33s Passed; bundle parallelism subsequently reverted
Three Node shards, serial bundles restored 35999747036, attempt 1 11m40s 7m39s 2m16s Passed
Three Node shards + shared debug build (reverted) 36003641478, attempt 1 15m26s 6m14s 1m59s Chromium Playwright and optional E2E failed; all Node shards passed
Three Node shards + six browser workers (original bundling) 36006150096, attempt 1 11m45s 8m02s 2m26s Passed; all 18 browser jobs and 15 Node shards passed
Three Node shards + six browser workers + parallel bundles (reverted) 36009013153, attempt 1 16m43s 9m18s 1m41s Passed; Nuxt spent 11m01s installing Playwright
Three Node shards + six workers for all Playwright (reverted) 36012174746, attempt 1 — — 1m51s Reverted after widespread framework E2E failures

Workloads differ: the parallel-bundle run included 171 framework E2E jobs, the restored-serial run included none, and the shared-helper change triggered 256. These total durations are not controlled comparisons. The two-shard rerun also had a six-minute gap before the last Playwright job started, despite unchanged 4m01s test execution.

The shared-debug-build and parallel-bundle experiments are reverted. The final configuration keeps three Node shards and six workers only for browser Playwright, matching the previously passing 36006150096 run. Timing-report additions remain removed.

Six workers reduced heavy Chromium test execution from 4m20s to 2m14s (tracing/replay) and 4m31s to 2m20s (tracing/replay/logs); WebKit fell from 3m42s to 2m05s. Total CI wall time was 11m45s versus 11m40s for the comparable three-worker run: WebKit started 69s after bundles were ready and its Playwright installation took 2m13s versus 41s previously. The last Node shard finished at 10m23s; WebKit determined the final finish time. This single run passed without test failures.

In the second parallel-bundle run, bundles were ready at 5m00s (previously 5m29s), all browser tests finished at 9m44s (11m39s), and all Node shards finished at 11m49s (10m23s). Excluding the Nuxt sourcemaps job, the last required job finished at 11m49s; about 11m55s including the gate is an estimate, not a measured workflow duration. The last Node/TS5 shard spent 4m07s installing TypeScript versus 3m07s previously. The bundle step saved 45s, but Node setup determined the finish time when excluding Nuxt. The run also includes 171 framework E2E jobs absent from the preceding run. Nuxt eventually passed after 11m01s installing Playwright; the measured total was 16m43s.

The all-Playwright experiment caused widespread framework E2E failures, including mismatched trace IDs when concurrent test files consumed events from the same app. That expansion is reverted; loader and framework E2E configs retain their original worker settings.

Co-Authored-By: GPT-6 <codex@openai.com>

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Comment thread .github/workflows/build.yml Outdated
name: node-integration-timings-node-${{ matrix.node }}-ts-${{ matrix.typescript || 'default' }}
path: dev-packages/node-integration-tests/vitest.junit.xml
retention-days: 7
if-no-files-found: warn

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Artifact upload fails on job rerun

Medium Severity

The timing upload omits overwrite, so a job rerun conflicts after the prior attempt already stored the same artifact name. That fails the rerun even when tests pass, because this step also runs after a failed first attempt.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit c27d965. Configure here.

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 29.24 kB - -
@sentry/browser - with treeshaking flags 27.5 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.4 kB - -
@sentry/browser (incl. Tracing) 51.15 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 51.17 kB - -
@sentry/browser (incl. Tracing, Profiling) 54.18 kB - -
@sentry/browser (incl. Tracing, Replay) 90.76 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 79.86 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 95.46 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 108.41 kB - -
@sentry/browser (incl. Feedback) 46.76 kB - -
@sentry/browser (incl. sendFeedback) 34.3 kB - -
@sentry/browser (incl. FeedbackAsync) 39.41 kB - -
@sentry/browser (incl. Metrics) 30.25 kB - -
@sentry/browser (incl. Logs) 30.51 kB - -
@sentry/browser (incl. Metrics & Logs) 31.18 kB - -
@sentry/react 31 kB - -
@sentry/react (incl. Tracing) 53.45 kB - -
@sentry/vue 36.74 kB - -
@sentry/vue (incl. Tracing) 53.7 kB - -
@sentry/svelte 29.26 kB - -
CDN Bundle 30.93 kB - -
CDN Bundle (incl. Tracing) 51.69 kB - -
CDN Bundle (incl. Logs, Metrics) 33.2 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 53.66 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 73.92 kB - -
CDN Bundle (incl. Tracing, Replay) 89.28 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 91.25 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 95.45 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 97.42 kB - -
CDN Bundle - uncompressed 91.4 kB - -
CDN Bundle (incl. Tracing) - uncompressed 153.77 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 97.97 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 159.73 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 227.54 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 273.5 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 279.44 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 287.2 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 293.13 kB - -
@sentry/nextjs (client) 55.77 kB - -
@sentry/sveltekit (client) 51.59 kB - -
@sentry/core/server 39.95 kB - -
@sentry/core/browser 13.63 kB - -
@sentry/node 133.88 kB +0.01% +6 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 82.4 kB - -
@sentry/node - without tracing 90.43 kB +0.02% +16 B 🔺
@sentry/node - without channel injection 112.41 kB +0.01% +10 B 🔺
@sentry/aws-serverless 98.7 kB +0.01% +8 B 🔺
@sentry/cloudflare (withSentry) - minified 206.49 kB - -
@sentry/cloudflare (withSentry) 513.73 kB - -

View base workflow run

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: collect Node integration test timings ci: shard Node integration tests and collect timings Sep 24, 2026
nicohrubec and others added 2 commits September 24, 2026 13:13
Co-Authored-By: GPT-6 <codex@openai.com>
Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: shard Node integration tests and collect timings ci: parallelize browser bundles and shard Node integration tests Sep 24, 2026
Restore serial browser bundling while retaining the Node integration test shards.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: parallelize browser bundles and shard Node integration tests ci: shard Node integration tests across three runners Sep 24, 2026
Generate unminified and minified debug bundles from one Rollup build, retaining a separate production build and the existing output plugin order.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: shard Node integration tests across three runners ci: shard Node integration tests and reuse debug bundle builds Sep 24, 2026
Increase browser Playwright CI workers to six. Remove Node timing reports and restore the original bundle build, retaining three shards for every Node integration configuration.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: shard Node integration tests and reuse debug bundle builds ci: shard Node integration tests and increase browser Playwright workers Sep 24, 2026
Restore three Rollup processes on the existing bundle runner to measure their effect alongside the current test parallelism.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: shard Node integration tests and increase browser Playwright workers ci: parallelize Node integration tests, browser tests, and bundles Sep 24, 2026
Restore serial browser bundling and retain three Node integration shards.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: parallelize Node integration tests, browser tests, and bundles ci: shard Node integration tests and increase Playwright workers Sep 24, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit cda6116. Configure here.

return {
...config,
...overwriteConfig,
workers: process.env.CI ? 6 : (overwriteConfig?.workers ?? 1),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Parallel workers race E2E events

Medium Severity

Forcing workers to 6 on CI runs multiple E2E files against one app and event proxy. Helpers such as waitForError and waitForStreamedSpan accept the first matching event, so concurrent tests can claim each other's telemetry and fail intermittently. The helper also ignores any overwriteConfig.workers value on CI.

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 cda6116. Configure here.

// Use 3 workers on CI, else use defaults (based on available CPU cores)
// Note that 3 is a random number selected to work well with our CI setup
workers: process.env.CI ? 3 : undefined,
workers: process.env.CI ? 6 : undefined,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Loader tests inherit extra workers

Low Severity

playwright.loader.config.ts spreads this shared config, so loader jobs now use 6 CI workers. The worker bump was meant for browser suite tests on large runners; loader jobs stay on standard runners and were supposed to keep their existing worker count.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit cda6116. Configure here.

Restore the previously passing configuration with three Node integration shards and original bundling.

Co-Authored-By: GPT-6 <codex@openai.com>
@nicohrubec nicohrubec changed the title ci: shard Node integration tests and increase Playwright workers ci: shard Node integration tests and increase browser Playwright workers Sep 24, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant