From beceeaf6a1a411c822e936d236c89ea8dd7804f9 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Mon, 14 Sep 2020 16:50:47 +0200 Subject: [PATCH] feat(browserContext): add BrowserContext.browser() (#3849) --- docs/api.md | 6 ++++++ src/client/browserContext.ts | 6 +++++- src/client/download.ts | 2 +- src/client/video.ts | 2 +- test/browsercontext-basic.spec.ts | 2 ++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/api.md b/docs/api.md index 692a292ca2..081355885e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -309,6 +309,7 @@ await context.close(); - [event: 'page'](#event-page) - [browserContext.addCookies(cookies)](#browsercontextaddcookiescookies) - [browserContext.addInitScript(script[, arg])](#browsercontextaddinitscriptscript-arg) +- [browserContext.browser()](#browsercontextbrowser) - [browserContext.clearCookies()](#browsercontextclearcookies) - [browserContext.clearPermissions()](#browsercontextclearpermissions) - [browserContext.close()](#browsercontextclose) @@ -398,6 +399,10 @@ await browserContext.addInitScript({ ``` > **NOTE** The order of evaluation of multiple scripts installed via [browserContext.addInitScript(script[, arg])](#browsercontextaddinitscriptscript-arg) and [page.addInitScript(script[, arg])](#pageaddinitscriptscript-arg) is not defined. + +#### browserContext.browser() +- returns: <[null]|[Browser]> Returns the browser instance of the context. If it was launched as a persistent context null gets returned. + #### browserContext.clearCookies() - returns: <[Promise]> @@ -4430,6 +4435,7 @@ const backgroundPage = await context.waitForEvent('backgroundpage'); - [event: 'page'](#event-page) - [browserContext.addCookies(cookies)](#browsercontextaddcookiescookies) - [browserContext.addInitScript(script[, arg])](#browsercontextaddinitscriptscript-arg) +- [browserContext.browser()](#browsercontextbrowser) - [browserContext.clearCookies()](#browsercontextclearcookies) - [browserContext.clearPermissions()](#browsercontextclearpermissions) - [browserContext.close()](#browsercontextclose) diff --git a/src/client/browserContext.ts b/src/client/browserContext.ts index bddc1b8205..fb5b6c5d46 100644 --- a/src/client/browserContext.ts +++ b/src/client/browserContext.ts @@ -31,7 +31,7 @@ import { isUnderTest, headersObjectToArray } from '../utils/utils'; export class BrowserContext extends ChannelOwner { _pages = new Set(); private _routes: { url: URLMatch, handler: network.RouteHandler }[] = []; - readonly _browser: Browser | undefined; + readonly _browser: Browser | null = null; readonly _browserName: string; readonly _bindings = new Map(); _timeoutSettings = new TimeoutSettings(); @@ -92,6 +92,10 @@ export class BrowserContext extends ChannelOwner { - private _browser: Browser | undefined; + private _browser: Browser | null; static from(download: channels.DownloadChannel): Download { return (download as any)._object; diff --git a/src/client/video.ts b/src/client/video.ts index ffc4e2c0de..96f47f021a 100644 --- a/src/client/video.ts +++ b/src/client/video.ts @@ -20,7 +20,7 @@ import { BrowserContext } from './browserContext'; import { ChannelOwner } from './channelOwner'; export class Video extends ChannelOwner { - private _browser: Browser | undefined; + private _browser: Browser | null; static from(channel: channels.VideoChannel): Video { return (channel as any)._object; diff --git a/test/browsercontext-basic.spec.ts b/test/browsercontext-basic.spec.ts index 8a87c6b524..4c43c25752 100644 --- a/test/browsercontext-basic.spec.ts +++ b/test/browsercontext-basic.spec.ts @@ -24,8 +24,10 @@ it('should create new context', async function({browser}) { const context = await browser.newContext(); expect(browser.contexts().length).toBe(1); expect(browser.contexts().indexOf(context) !== -1).toBe(true); + expect(browser).toBe(context.browser()); await context.close(); expect(browser.contexts().length).toBe(0); + expect(browser).toBe(context.browser()); }); it('window.open should use parent tab context', async function({browser, server}) {