speed up slow debugger tests (~74s → ~38s)
Two tests were taking 30s and 10s respectively due to avoidable waits: 1. 'should pause on all exceptions with setPauseOnExceptions' (30.6s → 0.5s) - Was awaiting page.evaluate() while debugger was paused - Playwright's evaluate has 30s timeout, so it sat there waiting - Fix: use Runtime.evaluate via CDP session (don't await until after resume) 2. 'should manage breakpoints with Debugger class' (10.6s → 0.4s) - Was connecting over CDP and scanning all pages with waitForLoadState - Each page waited up to 5s for domcontentloaded + content check - Fix: use getCDPSessionForPage directly on the page we just created
This commit is contained in:
@@ -219,28 +219,8 @@ describe('CDP Session Tests', () => {
|
|||||||
})
|
})
|
||||||
await new Promise(r => setTimeout(r, 100))
|
await new Promise(r => setTimeout(r, 100))
|
||||||
|
|
||||||
const browser = await chromium.connectOverCDP(getCdpUrl({ port: TEST_PORT }))
|
|
||||||
let cdpPage
|
|
||||||
for (const p of browser.contexts()[0].pages()) {
|
|
||||||
if (p.isClosed()) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
await p.waitForLoadState('domcontentloaded', { timeout: 5000 }).catch(() => {})
|
|
||||||
let html = ''
|
|
||||||
try {
|
|
||||||
html = await p.content()
|
|
||||||
} catch {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (html.includes('testFunc')) {
|
|
||||||
cdpPage = p
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
expect(cdpPage).toBeDefined()
|
|
||||||
|
|
||||||
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
const wsUrl = getCdpUrl({ port: TEST_PORT })
|
||||||
const cdpSession = await getCDPSessionForPage({ page: cdpPage!, wsUrl })
|
const cdpSession = await getCDPSessionForPage({ page, wsUrl })
|
||||||
const dbg = new Debugger({ cdp: cdpSession })
|
const dbg = new Debugger({ cdp: cdpSession })
|
||||||
|
|
||||||
await dbg.enable()
|
await dbg.enable()
|
||||||
@@ -260,7 +240,6 @@ describe('CDP Session Tests', () => {
|
|||||||
expect(dbg.listBreakpoints()).toHaveLength(0)
|
expect(dbg.listBreakpoints()).toHaveLength(0)
|
||||||
|
|
||||||
cdpSession.close()
|
cdpSession.close()
|
||||||
await browser.close()
|
|
||||||
await page.close()
|
await page.close()
|
||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
@@ -607,15 +586,15 @@ describe('CDP Session Tests', () => {
|
|||||||
cdpSession.on('Debugger.paused', () => resolve())
|
cdpSession.on('Debugger.paused', () => resolve())
|
||||||
})
|
})
|
||||||
|
|
||||||
await cdpPage!.evaluate(`
|
const evalPromise = cdpSession.send('Runtime.evaluate', {
|
||||||
(function() {
|
expression: `(function() {
|
||||||
try {
|
try {
|
||||||
throw new Error('Caught test error');
|
throw new Error('Caught test error');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// caught but should still pause with state 'all'
|
// caught but should still pause with state 'all'
|
||||||
}
|
}
|
||||||
})()
|
})()`
|
||||||
`).catch(() => {})
|
})
|
||||||
|
|
||||||
await Promise.race([
|
await Promise.race([
|
||||||
pausedPromise,
|
pausedPromise,
|
||||||
@@ -628,6 +607,7 @@ describe('CDP Session Tests', () => {
|
|||||||
expect(location.sourceContext).toContain('throw')
|
expect(location.sourceContext).toContain('throw')
|
||||||
|
|
||||||
await dbg.resume()
|
await dbg.resume()
|
||||||
|
await evalPromise
|
||||||
|
|
||||||
await dbg.setPauseOnExceptions({ state: 'none' })
|
await dbg.setPauseOnExceptions({ state: 'none' })
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user