fix: test helpers extension timeout (#154)

This commit is contained in:
Nikhil
2026-01-02 16:29:05 -08:00
committed by GitHub
parent f66fdae2c1
commit 3a370ce27d
2 changed files with 16 additions and 7 deletions

View File

@@ -20,6 +20,7 @@ export interface TestEnvironmentConfig {
cdpPort: number cdpPort: number
serverPort: number serverPort: number
extensionPort: number extensionPort: number
skipExtension?: boolean
} }
const DEFAULT_CONFIG: TestEnvironmentConfig = { const DEFAULT_CONFIG: TestEnvironmentConfig = {
@@ -95,9 +96,10 @@ export async function ensureBrowserOS(
cdpPort: options?.cdpPort ?? DEFAULT_CONFIG.cdpPort, cdpPort: options?.cdpPort ?? DEFAULT_CONFIG.cdpPort,
serverPort: options?.serverPort ?? DEFAULT_CONFIG.serverPort, serverPort: options?.serverPort ?? DEFAULT_CONFIG.serverPort,
extensionPort: options?.extensionPort ?? DEFAULT_CONFIG.extensionPort, extensionPort: options?.extensionPort ?? DEFAULT_CONFIG.extensionPort,
skipExtension: options?.skipExtension ?? false,
} }
// Fast path: already running with same config and extension connected // Fast path: already running with same config
const serverState = getServerState() const serverState = getServerState()
const browserState = getBrowserState() const browserState = getBrowserState()
if ( if (
@@ -106,7 +108,10 @@ export async function ensureBrowserOS(
configsMatch(serverState.config, config) && configsMatch(serverState.config, config) &&
configsMatch(browserState.config, config) configsMatch(browserState.config, config)
) { ) {
if (await isExtensionConnected(config.serverPort)) { if (
config.skipExtension ||
(await isExtensionConnected(config.serverPort))
) {
console.log('Reusing existing test environment') console.log('Reusing existing test environment')
return config return config
} }
@@ -130,10 +135,14 @@ export async function ensureBrowserOS(
} }
await spawnBrowser(browserConfig) await spawnBrowser(browserConfig)
// 4. Wait for extension to connect // 4. Wait for extension to connect (unless skipped for CDP-only tests)
console.log('Waiting for extension to connect...') if (!config.skipExtension) {
await waitForExtensionConnection(config.serverPort) console.log('Waiting for extension to connect...')
console.log('Extension connected') await waitForExtensionConnection(config.serverPort)
console.log('Extension connected')
} else {
console.log('Skipping extension connection (CDP-only mode)')
}
console.log('=== Test environment ready ===\n') console.log('=== Test environment ready ===\n')
return config return config

View File

@@ -80,7 +80,7 @@ export async function withBrowser(
_options: { debug?: boolean } = {}, _options: { debug?: boolean } = {},
): Promise<void> { ): Promise<void> {
return await browserMutex.runExclusive(async () => { return await browserMutex.runExclusive(async () => {
const config = await ensureBrowserOS() const config = await ensureBrowserOS({ skipExtension: true })
if (!cachedBrowser || !cachedBrowser.connected) { if (!cachedBrowser || !cachedBrowser.connected) {
cachedBrowser = await puppeteer.connect({ cachedBrowser = await puppeteer.connect({