From 7e2cc77524e1dc7c7f603d53e936ac37851274f4 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Fri, 7 Aug 2020 15:40:46 -0700 Subject: [PATCH] test: add a test for newCDPSession rejecting on non-pages (#3353) --- src/chromium/crBrowser.ts | 2 ++ test/chromium/session.spec.js | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/chromium/crBrowser.ts b/src/chromium/crBrowser.ts index 12218570dd..7e7389ee79 100644 --- a/src/chromium/crBrowser.ts +++ b/src/chromium/crBrowser.ts @@ -463,6 +463,8 @@ export class CRBrowserContext extends BrowserContextBase { } async newCDPSession(page: Page): Promise { + if (!(page instanceof Page)) + throw new Error('page: expected Page'); const targetId = (page._delegate as CRPage)._targetId; const rootSession = await this._browser._clientRootSession(); const { sessionId } = await rootSession.send('Target.attachToTarget', { targetId, flatten: true }); diff --git a/test/chromium/session.spec.js b/test/chromium/session.spec.js index b31783f7bb..60558021b9 100644 --- a/test/chromium/session.spec.js +++ b/test/chromium/session.spec.js @@ -36,6 +36,11 @@ it.skip(!CHROMIUM)('should send events', async function({page, server}) { expect(events.length).toBe(1); }); +it.skip(!CHROMIUM)('should only accept a page', async function({page}) { + const error = await page.context().newCDPSession(page.context()).catch(e => e); + expect(error.message).toContain('page: expected Page'); +}); + it.skip(!CHROMIUM)('should enable and disable domains independently', async function({page}) { const client = await page.context().newCDPSession(page); await client.send('Runtime.enable');