Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); test(node-integration): Skip flaky tedious tests by Lms24 · Pull Request #15798 · getsentry/sentry-javascript · GitHub
Skip to content

test(node-integration): Skip flaky tedious tests - #15798

Merged
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests
Mar 24, 2025
Merged

test(node-integration): Skip flaky tedious tests#15798
Lms24 merged 1 commit into
developfrom
lms/test-skip-tedious-tests

Conversation

@Lms24

@Lms24Lms24 commented Mar 24, 2025

Copy link
Copy Markdown
Member

This test now failed twice in a row for me and I've seen it fail in countless PRs. Skipping it for now but we should prioritize #15579 to eventually unflake and unskip them again.

@Lms24
Lms24 marked this pull request as ready for review March 24, 2025 13:03
@Lms24
Lms24 requested review from lforst and mydeaMarch 24, 2025 13:04
@Lms24Lms24 self-assigned this Mar 24, 2025
@Lms24
Lms24 enabled auto-merge (squash) March 24, 2025 13:07
@lforst

Copy link
Copy Markdown
Contributor

you could say the tests were ... tedious 👉😎👉

@Lms24
Lms24 merged commit c622c8a into developMar 24, 2025
@Lms24
Lms24 deleted the lms/test-skip-tedious-tests branch March 24, 2025 13:11
mydea added a commit that referenced this pull request May 18, 2026
…s` (#20961)
## Summary
Migrates the remaining integration-specific tracing tests under
`dev-packages/node-integration-tests/suites/tracing/` to use the
`createEsmAndCjsTests` helper, which auto-runs each scenario in both ESM
and CJS mode from a single `.mjs` source.
For each folder:
- `scenario*.js` → `scenario*.mjs` (ESM imports)
- Sentry.init extracted into a separate `instrument.mjs`
- `test.ts` switched to `createEsmAndCjsTests(__dirname, scenarioPath,
instrumentPath, callback, options?)`
- `failsOnEsm: true` added only where CJS passed and ESM legitimately
fails (i.e. instrumentation only patches the CJS module shape)
## Migrated folders
| Folder | Notes |
|---|---|
| `lru-memoizer` | `failsOnEsm: true` — OTel
`instrumentation-lru-memoizer` only patches the CJS function-shaped
export. |
| `mongodb` | mongodb v3 is CJS-only and has no named ESM exports — uses
`import mongodb from 'mongodb'` + destructure. |
| `mongoose` | Straight migration. |
| `mysql2` | Straight migration (docker). |
| `mysql` | `failsOnEsm: true` on all 3 scenarios — mysql v2 is
CJS-only. Three scenarios kept (`withConnect`, `withoutCallback`,
`withoutConnect`). |
| `postgres` | 3 scenarios. `ignoreConnectSpans` reuses the default
scenario but with a separate `instrument-ignoreConnect.mjs`. `pg-native`
scenario migrated as-is (still relies on local `setupCommand: 'yarn'` to
build the native bindings). |
| `postgresjs` | Consolidated previously-parallel `.cjs`/`.mjs`
scenarios into a single `.mjs` each. The `wait-for-postgres.js` helper
is still required from the scenarios via
`createRequire(import.meta.url)` (revert of the .mjs-helper conversion
approach — see notes below). The error stacktrace assertion uses
`expect.stringMatching(/postgres(\.cjs)?\.src:connection/)` so the same
expectation matches both modes. |
| `redis` | Straight migration (docker). |
| `redis-cache` | 2 scenarios (`ioredis`, `redis-4`). Each scenario has
its own `instrument-*.mjs` because they pass different `cachePrefixes`
to `redisIntegration`. |
| `redis-dc` | Uses `await import('redis-5')` inside `run()` to preserve
the comment-documented ordering where the DC subscriber must be
registered (via `Promise.resolve().then`) before node-redis eagerly
creates its native TracingChannels on require/import. |
| `tedious` | Migrated but kept `describe.skip` (the test was previously
skipped as flaky in #15798). Manually verified both modes pass when
un-skipped. |
| `apollo-graphql` | 3 scenarios (query, mutation, error). Shared
`apollo-server.mjs` helper copied into the tmp dir via `copyPaths:
['apollo-server.mjs']` and loaded with `await
import('./apollo-server.mjs')` from each scenario. |
| `apollo-graphql/useOperationNameForRootSpan` | 6 scenarios. Reuses the
parent `apollo-server.mjs` via `../../apollo-server.mjs` (the scenarios
run from `useOperationNameForRootSpan/tmp_xxx/`, so this resolves back
to the apollo-graphql folder). Scenarios use `Sentry.getClient().tracer`
instead of capturing the client returned by `Sentry.init` (since init
now lives in `instrument.mjs`). |
## Out of scope
The following folders under `tracing/` are still using `createRunner`
directly — they are not integrations for a specific package but general
tracing-behavior tests, so they're intentionally left alone:
- `meta-tags*`, `meta-tags-twp*`
- `sample-rate-propagation/*`, `sample-rand-propagation`
- `tracePropagationTargets/*`
- `traceid-recycling*`
- `dsc-txn-name-update`
- `http-client-spans/*`
- `maxSpans`, `envelope-header/*`, `linking`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@Lms24@lforst