chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman
, '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

chore: expose browser.bind and browser.unbind APIs - #39972

Merged
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register
Mar 31, 2026
Merged

chore: expose browser.bind and browser.unbind APIs#39972
Pavel Feldman (pavelfeldman) merged 1 commit into
microsoft:mainfrom
pavelfeldman:expose-browser-register

Conversation

@pavelfeldman

Copy link
Copy Markdown
Member

Summary

  • Make _register/_unregister public as register/unregister on Browser
  • Add API declarations in class-browser.md (since v1.52, JS-only)
  • Remove unnecessary as Browser/as any casts at all call sites

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 2 times, most recently from 53c6e5a to 323ac84CompareMarch 31, 2026 19:29
@pavelfeldman
Pavel Feldman (pavelfeldman)force-pushed the expose-browser-register branch 3 times, most recently from 0028493 to c0b1b8dCompareMarch 31, 2026 19:50
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@pavelfeldmanPavel Feldman (pavelfeldman) changed the title chore: expose browser.register and browser.unregister APIschore: expose browser.bind and browser.unbind APIsMar 31, 2026
@github-actions

This comment has been minimized.

Comment threaddocs/src/api/class-browser.md Outdated

Title of the browser server, used for identification.

### option: Browser.register.workspaceDir

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can I register without a workspace dir?

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "tests 1"

10 flaky⚠️ [chromium-library] › library/video.spec.ts:481 › screencast › should capture static page in persistent context Radoslav Kirilov (@smoke) `@ubuntu-22.04-chromium-tip-of-tree`
⚠️ [chromium-library] › library/video.spec.ts:280 › screencast › should capture navigation `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-arm-node20`
⚠️ [chromium-library] › library/popup.spec.ts:261 › should not throw when click closes popup `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node24`
⚠️ [chromium-library] › library/video.spec.ts:118 › screencast › should capture static page `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:652 › screencast › should capture full viewport `@chromium-ubuntu-22.04-node22`
⚠️ [chromium-library] › library/video.spec.ts:724 › screencast › should work with video+trace `@chromium-ubuntu-22.04-node22`
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1080 › cli codegen › should not throw csp directive violation errors `@firefox-ubuntu-22.04-node20`
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104 › should work with strict CSP policy `@firefox-ubuntu-22.04-node20`

39104 passed, 846 skipped


Merge workflow run.

@github-actions

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [msedge] › mcp/files.spec.ts:106 › clicking on download link emits download @mcp-windows-latest

6298 passed, 370 skipped


Merge workflow run.

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.

3 participants

@pavelfeldman@yury-s@dgozman