replace slow external sites with example.com/org and use domcontentloaded
This commit is contained in:
+40
-28
@@ -202,7 +202,7 @@ describe('MCP Server Tests', () => {
|
|||||||
name: 'execute',
|
name: 'execute',
|
||||||
arguments: {
|
arguments: {
|
||||||
code: js`
|
code: js`
|
||||||
await state.page.goto('https://news.ycombinator.com');
|
await state.page.goto('https://example.com');
|
||||||
const title = await state.page.title();
|
const title = await state.page.title();
|
||||||
console.log('Page title:', title);
|
console.log('Page title:', title);
|
||||||
return { url: state.page.url(), title };
|
return { url: state.page.url(), title };
|
||||||
@@ -213,12 +213,12 @@ describe('MCP Server Tests', () => {
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"text": "Console output:
|
"text": "Console output:
|
||||||
[log] Page title: Hacker News
|
[log] Page title: Example Domain
|
||||||
|
|
||||||
Return value:
|
Return value:
|
||||||
{
|
{
|
||||||
"url": "https://news.ycombinator.com/",
|
\"url\": \"https://example.com/\",
|
||||||
"title": "Hacker News"
|
\"title\": \"Example Domain\"
|
||||||
}",
|
}",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
},
|
},
|
||||||
@@ -550,19 +550,19 @@ describe('MCP Server Tests', () => {
|
|||||||
// We use a loop to check if it's still connected because reload might cause temporary disconnect/reconnect events
|
// We use a loop to check if it's still connected because reload might cause temporary disconnect/reconnect events
|
||||||
// that Playwright handles natively if the session ID stays valid.
|
// that Playwright handles natively if the session ID stays valid.
|
||||||
await connectedPage?.reload()
|
await connectedPage?.reload()
|
||||||
await connectedPage?.waitForLoadState('networkidle')
|
await connectedPage?.waitForLoadState('domcontentloaded')
|
||||||
expect(await connectedPage?.title()).toBe('Example Domain')
|
expect(await connectedPage?.title()).toBe('Example Domain')
|
||||||
|
|
||||||
// Verify execution after reload
|
// Verify execution after reload
|
||||||
expect(await connectedPage?.evaluate(() => 2 + 2)).toBe(4)
|
expect(await connectedPage?.evaluate(() => 2 + 2)).toBe(4)
|
||||||
|
|
||||||
// 5. Navigate to new URL
|
// 5. Navigate to new URL
|
||||||
const newUrl = 'https://news.ycombinator.com/'
|
const newUrl = 'https://example.org/'
|
||||||
await connectedPage?.goto(newUrl)
|
await connectedPage?.goto(newUrl)
|
||||||
await connectedPage?.waitForLoadState('networkidle')
|
await connectedPage?.waitForLoadState('domcontentloaded')
|
||||||
|
|
||||||
expect(connectedPage?.url()).toBe(newUrl)
|
expect(connectedPage?.url()).toBe(newUrl)
|
||||||
expect(await connectedPage?.title()).toContain('Hacker News')
|
expect(await connectedPage?.title()).toContain('Example Domain')
|
||||||
|
|
||||||
// Verify execution after navigation
|
// Verify execution after navigation
|
||||||
expect(await connectedPage?.evaluate(() => 3 + 3)).toBe(6)
|
expect(await connectedPage?.evaluate(() => 3 + 3)).toBe(6)
|
||||||
@@ -667,7 +667,7 @@ describe('MCP Server Tests', () => {
|
|||||||
await page.bringToFront()
|
await page.bringToFront()
|
||||||
|
|
||||||
// Wait for load
|
// Wait for load
|
||||||
await page.waitForLoadState('networkidle')
|
await page.waitForLoadState('domcontentloaded')
|
||||||
|
|
||||||
// 2. Enable extension for this page
|
// 2. Enable extension for this page
|
||||||
await serviceWorker.evaluate(async () => {
|
await serviceWorker.evaluate(async () => {
|
||||||
@@ -697,7 +697,7 @@ describe('MCP Server Tests', () => {
|
|||||||
const page = pages[0]
|
const page = pages[0]
|
||||||
|
|
||||||
await page.goto('https://example.com/disconnect-test')
|
await page.goto('https://example.com/disconnect-test')
|
||||||
await page.waitForLoadState('networkidle')
|
await page.waitForLoadState('domcontentloaded')
|
||||||
await page.bringToFront()
|
await page.bringToFront()
|
||||||
|
|
||||||
// Enable extension on this page
|
// Enable extension on this page
|
||||||
@@ -1877,7 +1877,14 @@ describe('CDP Session Tests', () => {
|
|||||||
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
const serviceWorker = await getExtensionServiceWorker(browserContext)
|
||||||
|
|
||||||
const page = await browserContext.newPage()
|
const page = await browserContext.newPage()
|
||||||
await page.goto('https://news.ycombinator.com/')
|
await page.setContent(`
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="data:text/javascript,function testScript() { return 42; }"></script>
|
||||||
|
</head>
|
||||||
|
<body><h1>Script Test</h1></body>
|
||||||
|
</html>
|
||||||
|
`)
|
||||||
await page.bringToFront()
|
await page.bringToFront()
|
||||||
|
|
||||||
await serviceWorker.evaluate(async () => {
|
await serviceWorker.evaluate(async () => {
|
||||||
@@ -1886,7 +1893,14 @@ describe('CDP Session Tests', () => {
|
|||||||
await new Promise(r => setTimeout(r, 200))
|
await new Promise(r => setTimeout(r, 200))
|
||||||
|
|
||||||
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
||||||
const cdpPage = browser.contexts()[0].pages().find(p => p.url().includes('news.ycombinator.com'))
|
let cdpPage
|
||||||
|
for (const p of browser.contexts()[0].pages()) {
|
||||||
|
const html = await p.content()
|
||||||
|
if (html.includes('Script Test')) {
|
||||||
|
cdpPage = p
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
expect(cdpPage).toBeDefined()
|
expect(cdpPage).toBeDefined()
|
||||||
|
|
||||||
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
||||||
@@ -1895,8 +1909,6 @@ describe('CDP Session Tests', () => {
|
|||||||
|
|
||||||
await dbg.enable()
|
await dbg.enable()
|
||||||
|
|
||||||
await cdpPage!.reload({ waitUntil: 'networkidle' })
|
|
||||||
|
|
||||||
for (let i = 0; i < 20; i++) {
|
for (let i = 0; i < 20; i++) {
|
||||||
if (dbg.listScripts().length > 0) break
|
if (dbg.listScripts().length > 0) break
|
||||||
await new Promise(r => setTimeout(r, 100))
|
await new Promise(r => setTimeout(r, 100))
|
||||||
@@ -1907,8 +1919,8 @@ describe('CDP Session Tests', () => {
|
|||||||
expect(scripts[0]).toHaveProperty('scriptId')
|
expect(scripts[0]).toHaveProperty('scriptId')
|
||||||
expect(scripts[0]).toHaveProperty('url')
|
expect(scripts[0]).toHaveProperty('url')
|
||||||
|
|
||||||
const hnScripts = dbg.listScripts({ search: 'hn' })
|
const dataScripts = dbg.listScripts({ search: 'data:' })
|
||||||
expect(hnScripts.length).toBeGreaterThan(0)
|
expect(dataScripts.length).toBeGreaterThan(0)
|
||||||
|
|
||||||
cdpSession.close()
|
cdpSession.close()
|
||||||
await browser.close()
|
await browser.close()
|
||||||
@@ -2123,8 +2135,8 @@ describe('CDP Session Tests', () => {
|
|||||||
const initialPageTarget = initialTargets.targetInfos.find(t => t.type === 'page' && t.url.includes('example.com'))
|
const initialPageTarget = initialTargets.targetInfos.find(t => t.type === 'page' && t.url.includes('example.com'))
|
||||||
expect(initialPageTarget?.url).toBe('https://example.com/')
|
expect(initialPageTarget?.url).toBe('https://example.com/')
|
||||||
|
|
||||||
await cdpPage!.goto('https://news.ycombinator.com/', { waitUntil: 'networkidle' })
|
await cdpPage!.goto('https://example.org/', { waitUntil: 'domcontentloaded' })
|
||||||
await new Promise(r => setTimeout(r, 500))
|
await new Promise(r => setTimeout(r, 300))
|
||||||
|
|
||||||
const afterNavTargets = await cdpSession.send('Target.getTargets')
|
const afterNavTargets = await cdpSession.send('Target.getTargets')
|
||||||
const allPageTargets = afterNavTargets.targetInfos.filter(t => t.type === 'page')
|
const allPageTargets = afterNavTargets.targetInfos.filter(t => t.type === 'page')
|
||||||
@@ -2135,8 +2147,8 @@ describe('CDP Session Tests', () => {
|
|||||||
const exampleComTargets = allPageTargets.filter(t => t.url.includes('example.com'))
|
const exampleComTargets = allPageTargets.filter(t => t.url.includes('example.com'))
|
||||||
expect(exampleComTargets).toHaveLength(0)
|
expect(exampleComTargets).toHaveLength(0)
|
||||||
|
|
||||||
const hnTargets = allPageTargets.filter(t => t.url.includes('news.ycombinator.com'))
|
const exampleOrgTargets = allPageTargets.filter(t => t.url.includes('example.org'))
|
||||||
expect(hnTargets).toHaveLength(1)
|
expect(exampleOrgTargets).toHaveLength(1)
|
||||||
|
|
||||||
cdpSession.close()
|
cdpSession.close()
|
||||||
await browser.close()
|
await browser.close()
|
||||||
@@ -2155,7 +2167,7 @@ describe('CDP Session Tests', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const page2 = await browserContext.newPage()
|
const page2 = await browserContext.newPage()
|
||||||
await page2.goto('https://news.ycombinator.com/')
|
await page2.goto('https://example.org/')
|
||||||
await page2.bringToFront()
|
await page2.bringToFront()
|
||||||
await serviceWorker.evaluate(async () => {
|
await serviceWorker.evaluate(async () => {
|
||||||
await globalThis.toggleExtensionForActiveTab()
|
await globalThis.toggleExtensionForActiveTab()
|
||||||
@@ -2188,7 +2200,7 @@ describe('CDP Session Tests', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "page",
|
"type": "page",
|
||||||
"url": "https://news.ycombinator.com/",
|
"url": "https://example.org/",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
`)
|
`)
|
||||||
@@ -2212,11 +2224,11 @@ describe('CDP Session Tests', () => {
|
|||||||
})
|
})
|
||||||
await new Promise(r => setTimeout(r, 200))
|
await new Promise(r => setTimeout(r, 200))
|
||||||
|
|
||||||
await page.goto('https://news.ycombinator.com/', { waitUntil: 'networkidle' })
|
await page.goto('https://example.org/', { waitUntil: 'domcontentloaded' })
|
||||||
await new Promise(r => setTimeout(r, 200))
|
await new Promise(r => setTimeout(r, 200))
|
||||||
|
|
||||||
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
||||||
const cdpPage = browser.contexts()[0].pages().find(p => p.url().includes('news.ycombinator.com'))
|
const cdpPage = browser.contexts()[0].pages().find(p => p.url().includes('example.org'))
|
||||||
expect(cdpPage).toBeDefined()
|
expect(cdpPage).toBeDefined()
|
||||||
|
|
||||||
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
||||||
@@ -2226,7 +2238,7 @@ describe('CDP Session Tests', () => {
|
|||||||
expression: 'document.title',
|
expression: 'document.title',
|
||||||
returnByValue: true,
|
returnByValue: true,
|
||||||
})
|
})
|
||||||
expect(evalResult.result.value).toContain('Hacker News')
|
expect(evalResult.result.value).toContain('Example Domain')
|
||||||
|
|
||||||
cdpSession.close()
|
cdpSession.close()
|
||||||
await browser.close()
|
await browser.close()
|
||||||
@@ -2260,8 +2272,8 @@ describe('CDP Session Tests', () => {
|
|||||||
})
|
})
|
||||||
expect(initialEvalResult.result.value).toBe('Example Domain')
|
expect(initialEvalResult.result.value).toBe('Example Domain')
|
||||||
|
|
||||||
const newUrl = 'https://news.ycombinator.com/'
|
const newUrl = 'https://example.org/'
|
||||||
await cdpPage!.goto(newUrl, { waitUntil: 'networkidle' })
|
await cdpPage!.goto(newUrl, { waitUntil: 'domcontentloaded' })
|
||||||
|
|
||||||
expect(cdpPage!.url()).toBe(newUrl)
|
expect(cdpPage!.url()).toBe(newUrl)
|
||||||
|
|
||||||
@@ -2273,7 +2285,7 @@ describe('CDP Session Tests', () => {
|
|||||||
expression: 'document.title',
|
expression: 'document.title',
|
||||||
returnByValue: true,
|
returnByValue: true,
|
||||||
})
|
})
|
||||||
expect(afterNavEvalResult.result.value).toContain('Hacker News')
|
expect(afterNavEvalResult.result.value).toContain('Example Domain')
|
||||||
|
|
||||||
const locationResult = await cdpSession.send('Runtime.evaluate', {
|
const locationResult = await cdpSession.send('Runtime.evaluate', {
|
||||||
expression: 'window.location.href',
|
expression: 'window.location.href',
|
||||||
|
|||||||
Reference in New Issue
Block a user