Skip to content

Commit

Permalink
feat(browserContext): add BrowserContext.browser()
Browse files Browse the repository at this point in the history
  • Loading branch information
mxschmitt committed Sep 11, 2020
1 parent 38ed8de commit dbd503a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
6 changes: 6 additions & 0 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,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)
Expand Down Expand Up @@ -396,6 +397,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: <[Browser]> Returns the browser instance of the context.

#### browserContext.clearCookies()
- returns: <[Promise]>

Expand Down Expand Up @@ -4426,6 +4431,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)
Expand Down
12 changes: 8 additions & 4 deletions src/client/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ import { Events } from './events';
import { TimeoutSettings } from '../utils/timeoutSettings';
import { Waiter } from './waiter';
import { URLMatch, Headers, WaitForEventOptions } from './types';
import { isUnderTest, headersObjectToArray } from '../utils/utils';
import { isUnderTest, headersObjectToArray, assert } from '../utils/utils';

export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel, channels.BrowserContextInitializer> {
_pages = new Set<Page>();
private _routes: { url: URLMatch, handler: network.RouteHandler }[] = [];
readonly _browser: Browser | undefined;
readonly _browser: Browser;
readonly _browserName: string;
readonly _bindings = new Map<string, frames.FunctionWithSource>();
_timeoutSettings = new TimeoutSettings();
Expand All @@ -49,8 +49,8 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel,

constructor(parent: ChannelOwner, type: string, guid: string, initializer: channels.BrowserContextInitializer, browserName: string) {
super(parent, type, guid, initializer);
if (parent instanceof Browser)
this._browser = parent;
assert(!(parent instanceof Browser), 'BrowserContext parent is no Browser instance');
this._browser = parent as Browser;
this._browserName = browserName;

this._channel.on('bindingCall', ({binding}) => this._onBinding(BindingCall.from(binding)));
Expand Down Expand Up @@ -92,6 +92,10 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel,
this._channel.setDefaultTimeoutNoReply({ timeout });
}

browser(): Browser {
return this._browser;
}

pages(): Page[] {
return [...this._pages];
}
Expand Down
2 changes: 2 additions & 0 deletions test/browsercontext-basic.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}) {
Expand Down

0 comments on commit dbd503a

Please sign in to comment.