Version
1.63.0
Steps to reproduce
import { test as base } from '@playwright/test'
declare global {
interface Window {
selectorEngineEnabled?: true | undefined
}
}
export const test = base.extend<{}, { selectorRegistration: void }>({
selectorRegistration: [
async ({ playwright }, use) => {
await playwright.selectors.register('tag', () => ({
queryAll: (root: Element | Document, selector: string) => {
if (typeof window.selectorEngineEnabled === 'boolean') {
return Array.from(root.querySelectorAll(selector))
}
return []
},
query: (root: Element | Document, selector: string) => {
if (typeof window.selectorEngineEnabled === 'boolean') {
return root.querySelector(selector)
}
return []
},
}))
await use()
},
{ scope: 'worker', auto: true },
],
})
test('selector engine test', async ({ page }) => {
await page.evaluate(() => (window.selectorEngineEnabled = true))
await page.setContent('<button>asdf</button>')
const button = page.locator('tag=button')
await button.highlight() // doesn't work
await button.click() // does work
})
Expected behavior
both button.highlight and button.click should work
Actual behavior
only button.click works.
it seems that window.selectorEngineEnabled is undefined when called by locator.highlight, but not when called by locator.click.
my guess is that maybe locator.highlight is incorrectly running the selector inside an isolated content script, even though the selector engine is not being registered with {contentScript: true}?
Additional context
the use case is my playwright-ui5 selector engine. it works by accessing the ui5 api via window.sap.ui.core. when calling locator.highlight with a ui5 selector, it fails because window.sap is not defined for some reason.
Environment
System:
OS: Windows 11 10.0.22631
CPU: (12) x64 11th Gen Intel(R) Core(TM) i5-11500H @ 2.90GHz
Memory: 9.94 GB / 31.20 GB
Binaries:
Node: 26.3.1 - C:\Users\user\AppData\Roaming\node\node.EXE
npm: 11.16.0 - C:\Users\user\AppData\Roaming\node\npm.CMD
IDEs:
VSCode: 1.134.0 - C:\Users\user\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD
npmPackages:
@playwright/test: 1.63.0 => 1.63.0
playwright-core: ^1.43.0 => 1.63.0
Version
1.63.0
Steps to reproduce
Expected behavior
both
button.highlightandbutton.clickshould workActual behavior
only
button.clickworks.it seems that
window.selectorEngineEnabledis undefined when called bylocator.highlight, but not when called bylocator.click.my guess is that maybe
locator.highlightis incorrectly running the selector inside an isolated content script, even though the selector engine is not being registered with{contentScript: true}?Additional context
the use case is my playwright-ui5 selector engine. it works by accessing the ui5 api via
window.sap.ui.core. when callinglocator.highlightwith a ui5 selector, it fails becausewindow.sapis not defined for some reason.Environment
System: OS: Windows 11 10.0.22631 CPU: (12) x64 11th Gen Intel(R) Core(TM) i5-11500H @ 2.90GHz Memory: 9.94 GB / 31.20 GB Binaries: Node: 26.3.1 - C:\Users\user\AppData\Roaming\node\node.EXE npm: 11.16.0 - C:\Users\user\AppData\Roaming\node\npm.CMD IDEs: VSCode: 1.134.0 - C:\Users\user\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD npmPackages: @playwright/test: 1.63.0 => 1.63.0 playwright-core: ^1.43.0 => 1.63.0