test: stabilize relay-core click error snapshots by ensuring connected tab
The three descriptive click-error tests can run after a prior test closes all connected pages, causing MCP execute to fail early with 'No Playwright pages are available' instead of exercising click visibility/interception errors. Add ensureConnectedTabForExecute() and call it before the three snapshot tests so they always have one connected tab context and assert the intended errors.
This commit is contained in:
@@ -40,6 +40,30 @@ describe('Relay Core Tests', () => {
|
|||||||
return testCtx.browserContext
|
return testCtx.browserContext
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ensureConnectedTabForExecute = async (): Promise<void> => {
|
||||||
|
const browserContext = getBrowserContext()
|
||||||
|
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
||||||
|
const connectedTabCount = await serviceWorker.evaluate(async () => {
|
||||||
|
const state = globalThis.getExtensionState()
|
||||||
|
return state.tabs.size
|
||||||
|
})
|
||||||
|
if (connectedTabCount > 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const page = await browserContext.newPage()
|
||||||
|
await page.goto('about:blank')
|
||||||
|
await page.bringToFront()
|
||||||
|
|
||||||
|
await serviceWorker.evaluate(async () => {
|
||||||
|
await globalThis.toggleExtensionForActiveTab()
|
||||||
|
})
|
||||||
|
|
||||||
|
await new Promise((r) => {
|
||||||
|
setTimeout(r, 100)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
it('should inject script via addScriptTag through CDP relay', async () => {
|
it('should inject script via addScriptTag through CDP relay', async () => {
|
||||||
const browserContext = getBrowserContext()
|
const browserContext = getBrowserContext()
|
||||||
const serviceWorker = await withTimeout({
|
const serviceWorker = await withTimeout({
|
||||||
@@ -1020,6 +1044,8 @@ describe('Relay Core Tests', () => {
|
|||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
it('should show descriptive error when clicking a hidden element', async () => {
|
it('should show descriptive error when clicking a hidden element', async () => {
|
||||||
|
await ensureConnectedTabForExecute()
|
||||||
|
|
||||||
// Create a fresh page and set content with a collapsed details element
|
// Create a fresh page and set content with a collapsed details element
|
||||||
await client.callTool({
|
await client.callTool({
|
||||||
name: 'execute',
|
name: 'execute',
|
||||||
@@ -1073,6 +1099,8 @@ describe('Relay Core Tests', () => {
|
|||||||
}, 30000)
|
}, 30000)
|
||||||
|
|
||||||
it('should show descriptive error when clicking an element covered by another', async () => {
|
it('should show descriptive error when clicking an element covered by another', async () => {
|
||||||
|
await ensureConnectedTabForExecute()
|
||||||
|
|
||||||
await client.callTool({
|
await client.callTool({
|
||||||
name: 'execute',
|
name: 'execute',
|
||||||
arguments: {
|
arguments: {
|
||||||
@@ -1130,6 +1158,8 @@ describe('Relay Core Tests', () => {
|
|||||||
}, 30000)
|
}, 30000)
|
||||||
|
|
||||||
it('should show descriptive error when clicking a display:none element', async () => {
|
it('should show descriptive error when clicking a display:none element', async () => {
|
||||||
|
await ensureConnectedTabForExecute()
|
||||||
|
|
||||||
await client.callTool({
|
await client.callTool({
|
||||||
name: 'execute',
|
name: 'execute',
|
||||||
arguments: {
|
arguments: {
|
||||||
|
|||||||
Reference in New Issue
Block a user