fix: return valid browser from context.browser() when connect over CDP (#7155)

This commit is contained in:
Yury Semikhatsky 2021-06-15 16:06:38 -07:00 committed by GitHub
parent 312fd3ed4e
commit e5d0a535a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 3 deletions

View file

@ -41,9 +41,10 @@ export class BrowserTypeDispatcher extends Dispatcher<BrowserType, channels.Brow
async connectOverCDP(params: channels.BrowserTypeConnectOverCDPParams, metadata: CallMetadata): Promise<channels.BrowserTypeConnectOverCDPResult> {
const browser = await this._object.connectOverCDP(metadata, params.endpointURL, params, params.timeout);
const browserDispatcher = new BrowserDispatcher(this._scope, browser);
return {
browser: new BrowserDispatcher(this._scope, browser),
defaultContext: browser._defaultContext ? new BrowserContextDispatcher(this._scope, browser._defaultContext) : undefined,
browser: browserDispatcher,
defaultContext: browser._defaultContext ? new BrowserContextDispatcher(browserDispatcher._scope, browser._defaultContext) : undefined,
};
}
}

View file

@ -201,7 +201,7 @@ playwrightTest('should connect over a ws endpoint', async ({browserType, browser
const cdpBrowser2 = await browserType.connectOverCDP({
wsEndpoint: JSON.parse(json).webSocketDebuggerUrl,
});
const contexts2 = cdpBrowser.contexts();
const contexts2 = cdpBrowser2.contexts();
expect(contexts2.length).toBe(1);
await cdpBrowser2.close();
} finally {
@ -285,3 +285,26 @@ playwrightTest('should report all pages in an existing browser', async ({ browse
await browserServer.close();
}
});
playwrightTest('should return valid browser from context.browser()', async ({ browserType, browserOptions }, testInfo) => {
const port = 9339 + testInfo.workerIndex;
const browserServer = await browserType.launch({
...browserOptions,
args: ['--remote-debugging-port=' + port]
});
try {
const cdpBrowser = await browserType.connectOverCDP({
endpointURL: `http://localhost:${port}/`,
});
const contexts = cdpBrowser.contexts();
expect(contexts.length).toBe(1);
expect(contexts[0].browser()).toBe(cdpBrowser);
const context2 = await cdpBrowser.newContext();
expect(context2.browser()).toBe(cdpBrowser);
await cdpBrowser.close();
} finally {
await browserServer.close();
}
});