fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

@la14-1@louisgv
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

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

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

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

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

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

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

@la14-1@louisgv
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

@la14-1@louisgv
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

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

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak - #3358

Closed
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak
Closed

fix(tests): disable telemetry in afterEach to prevent cross-file fetch leak#3358
la14-1 wants to merge 1 commit into
mainfrom
fix-telemetry-test-leak

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: 2 tests fail on every bun test run (hetzner-cov, digitalocean-token) because the telemetry test enables _enabled = true globally and never resets it — every subsequent logWarn/logError triggers fire-and-forget fetch() calls that corrupt other tests' callCount-based mocks.

Root cause

telemetry.test.ts deletes BUN_ENV/NODE_ENV and calls initTelemetry() to enable telemetry for testing. Once _enabled is true, it stays true for the entire process. Any logWarn() or logError() in concurrent test files (hetzner, digitalocean) fires sendEvent()fetch() through the calling test's mock, consuming callCounts.

Fix (2 lines of real change)

  1. Export _testHelpers.enabled getter/setter from telemetry.ts
  2. Set telemetryTestHelpers.enabled = false in telemetry.test.tsafterEach

This fixes the leak at the source rather than patching each affected test to filter PostHog URLs.

Relationship to #3341 and #3353

Both existing PRs work around the symptom (patching individual test mocks to ignore telemetry URLs). This PR fixes the root cause — once merged, those workarounds become unnecessary and no future test can be affected by telemetry fetch leaks.

Test plan

  • bun test passes with 0 failures (2108 pass, 5376 expect() calls)
  • Verified on 2 consecutive runs — no flakiness
  • biome check passes on changed files

-- spawn-refactor/test-engineer

@la14-1
la14-1 marked this pull request as ready for review April 25, 2026 03:15
@la14-1
la14-1force-pushed the fix-telemetry-test-leak branch from 96a40ca to 874fd8aCompareApril 26, 2026 05:04
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Overlap note: This PR fixes the root cause (telemetry _enabled leaking across test files) of the same 2 flaky tests addressed by #3353 and #3365.

Recommended merge order: this PR first (root cause), then optionally #3365 (defense in depth). #3353 can likely be closed if both land.

All CI checks passing. No merge conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

This PR has been open for 3+ days with all CI checks passing (ShellCheck, Biome Lint, Unit Tests, Mock Tests, macOS Compatibility — all SUCCESS). It is mergeable with no conflicts.

This is the root-cause fix for the flaky test issue (telemetry leak). Recommended merge order: this PR first, then #3365 (defense in depth). #3353 can be closed after both land.

Requesting human review when convenient.

-- spawn-refactor/pr-maintainer

…test files
The telemetry test enables telemetry globally by deleting BUN_ENV/NODE_ENV
and calling initTelemetry(). Once enabled, every logWarn/logError in the
process fires sendEvent() → fetch(), which consumes mock callCounts in
concurrent test files (hetzner-cov, digitalocean-token), causing 2
consistent test failures.
Add _testHelpers.enabled to telemetry.ts and reset it in afterEach so
telemetry is disabled before other test files' mocks can be affected.
Agent: test-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Dedup update:#3376 (opened Apr 30) supersedes this PR — it also modifies telemetry.ts with a root-cause fix (runtime env-var guard in sendEvent()) plus adds SPAWN_TELEMETRY=0 in preload.ts for defense-in-depth. Both PRs fix the same leak but #3376 is more comprehensive and will conflict with this one on telemetry.ts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Closing as superseded by #3376, which provides a more comprehensive fix for the same telemetry singleton leak (runtime env-var guard in sendEvent() + SPAWN_TELEMETRY=0 in test preload).

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #3376.

@la14-1la14-1 closed this May 1, 2026
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

@la14-1@louisgv