Skip to content

Commit 3677818

Browse files
authored
fix(api): browser.serviceWorker -> target.serviceWorker (#1076)
1 parent 1f8508d commit 3677818

File tree

4 files changed

+23
-29
lines changed

4 files changed

+23
-29
lines changed

docs/api.md

+16-18
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ If URLs are specified, only cookies that affect those URLs are returned.
331331
Creates a new page in the browser context.
332332

333333
#### browserContext.pages()
334-
- returns: <[Promise]<[Array]<[Page]>>> Promise which resolves to an array of all open pages. Non visible pages, such as `"background_page"`, will not be listed here. You can find them using [target.page()](#targetpage).
334+
- returns: <[Promise]<[Array]<[Page]>>> Promise which resolves to an array of all open pages. Non visible pages, such as `"background_page"`, will not be listed here. You can find them using [chromiumTarget.page()](#chromiumtargetpage).
335335

336336
An array of all pages inside the browser context.
337337

@@ -3537,7 +3537,6 @@ await browser.stopTracing();
35373537
- [event: 'targetdestroyed'](#event-targetdestroyed)
35383538
- [chromiumBrowser.browserTarget()](#chromiumbrowserbrowsertarget)
35393539
- [chromiumBrowser.pageTarget(page)](#chromiumbrowserpagetargetpage)
3540-
- [chromiumBrowser.serviceWorker(target)](#chromiumbrowserserviceworkertarget)
35413540
- [chromiumBrowser.startTracing(page, [options])](#chromiumbrowserstarttracingpage-options)
35423541
- [chromiumBrowser.stopTracing()](#chromiumbrowserstoptracing)
35433542
- [chromiumBrowser.targets(context)](#chromiumbrowsertargetscontext)
@@ -3553,41 +3552,35 @@ await browser.stopTracing();
35533552
<!-- GEN:stop -->
35543553

35553554
#### event: 'targetchanged'
3556-
- <[Target]>
3555+
- <[ChromiumTarget]>
35573556

35583557
Emitted when the url of a target changes.
35593558

35603559
> **NOTE** This includes target changes in incognito browser contexts.
35613560
35623561

35633562
#### event: 'targetcreated'
3564-
- <[Target]>
3563+
- <[ChromiumTarget]>
35653564

35663565
Emitted when a target is created, for example when a new page is opened by [`window.open`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) or [`browserContext.newPage`](#browsercontextnewpage).
35673566

35683567
> **NOTE** This includes target creations in incognito browser contexts.
35693568
35703569
#### event: 'targetdestroyed'
3571-
- <[Target]>
3570+
- <[ChromiumTarget]>
35723571

35733572
Emitted when a target is destroyed, for example when a page is closed.
35743573

35753574
> **NOTE** This includes target destructions in incognito browser contexts.
35763575
35773576
#### chromiumBrowser.browserTarget()
3578-
- returns: <[Target]>
3577+
- returns: <[ChromiumTarget]>
35793578

35803579
Returns browser target.
35813580

35823581
#### chromiumBrowser.pageTarget(page)
35833582
- `page` <[Page]> Page to return target for.
3584-
- returns: <[Target]> a target given page was created from.
3585-
3586-
#### chromiumBrowser.serviceWorker(target)
3587-
- `target` <[ChromiumTarget]> Target to treat as a service worker
3588-
- returns: <[Promise]<[ChromiumWorker]>>
3589-
3590-
Attaches to the service worker target.
3583+
- returns: <[ChromiumTarget]> a target given page was created from.
35913584

35923585
#### chromiumBrowser.startTracing(page, [options])
35933586
- `page` <[Page]> Optional, if specified, tracing includes screenshots of the given page.
@@ -3604,16 +3597,16 @@ Only one trace can be active at a time per browser.
36043597

36053598
#### chromiumBrowser.targets(context)
36063599
- `context` <[BrowserContext]> Optional, if specified, only targets from this context are returned.
3607-
- returns: <[Array]<[Target]>>
3600+
- returns: <[Array]<[ChromiumTarget]>>
36083601

36093602
An array of all active targets inside the Browser. In case of multiple browser contexts,
36103603
the method will return an array with all the targets in all browser contexts.
36113604

36123605
#### chromiumBrowser.waitForTarget(predicate[, options])
3613-
- `predicate` <[function]\([Target]\):[boolean]> A function to be run for every target
3606+
- `predicate` <[function]\([ChromiumTarget]\):[boolean]> A function to be run for every target
36143607
- `options` <[Object]>
36153608
- `timeout` <[number]> Maximum wait time in milliseconds. Pass `0` to disable the timeout. Defaults to 30 seconds.
3616-
- returns: <[Promise]<[Target]>> Promise which resolves to the first target found that matches the `predicate` function.
3609+
- returns: <[Promise]<[ChromiumTarget]>> Promise which resolves to the first target found that matches the `predicate` function.
36173610

36183611
This searches for a target in all browser contexts.
36193612

@@ -3735,6 +3728,7 @@ to send messages.
37353728
- [chromiumTarget.createCDPSession()](#chromiumtargetcreatecdpsession)
37363729
- [chromiumTarget.opener()](#chromiumtargetopener)
37373730
- [chromiumTarget.page()](#chromiumtargetpage)
3731+
- [chromiumTarget.serviceWorker()](#chromiumtargetserviceworker)
37383732
- [chromiumTarget.type()](#chromiumtargettype)
37393733
- [chromiumTarget.url()](#chromiumtargeturl)
37403734
<!-- GEN:stop -->
@@ -3751,7 +3745,7 @@ The browser context the target belongs to.
37513745
Creates a Chrome Devtools Protocol session attached to the target.
37523746

37533747
#### chromiumTarget.opener()
3754-
- returns: <?[Target]>
3748+
- returns: <?[ChromiumTarget]>
37553749

37563750
Get the target that opened this target. Top-level targets return `null`.
37573751

@@ -3760,6 +3754,11 @@ Get the target that opened this target. Top-level targets return `null`.
37603754

37613755
If the target is not of type `"page"` or `"background_page"`, returns `null`.
37623756

3757+
#### chromiumTarget.serviceWorker()
3758+
- returns: <[Promise]<?[Worker]>>
3759+
3760+
Attaches to the service worker target. If the target is not of type `"service_worker"`, returns `null`.
3761+
37633762
#### chromiumTarget.type()
37643763
- returns: <"page"|"background_page"|"service_worker"|"shared_worker"|"other"|"browser">
37653764

@@ -3901,7 +3900,6 @@ const { chromium } = require('playwright');
39013900
[Response]: #class-response "Response"
39023901
[Selectors]: #class-selectors "Selectors"
39033902
[Serializable]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Description "Serializable"
3904-
[Target]: #class-target "Target"
39053903
[TimeoutError]: #class-timeouterror "TimeoutError"
39063904
[UIEvent.detail]: https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail "UIEvent.detail"
39073905
[URL]: https://nodejs.org/api/url.html

src/chromium/crBrowser.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { Events as CommonEvents } from '../events';
2020
import { assert, helper } from '../helper';
2121
import { BrowserContext, BrowserContextOptions } from '../browserContext';
2222
import { CRConnection, ConnectionEvents, CRSession } from './crConnection';
23-
import { Page, Worker } from '../page';
23+
import { Page } from '../page';
2424
import { CRTarget } from './crTarget';
2525
import { Protocol } from './protocol';
2626
import { CRPage } from './crPage';
@@ -248,10 +248,6 @@ export class CRBrowser extends platform.EventEmitter implements Browser {
248248
return [...this._targets.values()].find(t => t.type() === 'browser')!;
249249
}
250250

251-
serviceWorker(target: CRTarget): Promise<Worker | null> {
252-
return target._worker();
253-
}
254-
255251
async startTracing(page: Page | undefined, options: { path?: string; screenshots?: boolean; categories?: string[]; } = {}) {
256252
assert(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
257253
this._tracingClient = page ? (page._delegate as CRPage)._client : this._client;

src/chromium/crTarget.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ export class CRTarget {
9191
return this._pagePromise;
9292
}
9393

94-
async _worker(): Promise<Worker | null> {
95-
if (this._targetInfo.type !== 'service_worker' && this._targetInfo.type !== 'shared_worker')
94+
async serviceWorker(): Promise<Worker | null> {
95+
if (this._targetInfo.type !== 'service_worker')
9696
return null;
9797
if (!this._workerPromise) {
9898
// TODO(einbinder): Make workers send their console logs.

test/chromium/chromium.spec.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROMI
8282
await page.goto(server.PREFIX + '/serviceworkers/empty/sw.html');
8383

8484
const target = await browser.waitForTarget(target => target.type() === 'service_worker');
85-
const worker = await browser.serviceWorker(target);
85+
const worker = await target.serviceWorker();
8686
expect(await worker.evaluate(() => self.toString())).toBe('[object ServiceWorkerGlobalScope]');
8787
});
88-
it('should create a worker from a shared worker', async({browser, page, server, context}) => {
88+
it('should not create a worker from a shared worker', async({browser, page, server, context}) => {
8989
await page.goto(server.EMPTY_PAGE);
9090
await page.evaluate(() => {
9191
new SharedWorker('data:text/javascript,console.log("hi")');
9292
});
9393
const target = await browser.waitForTarget(target => target.type() === 'shared_worker');
94-
const worker = await browser.serviceWorker(target);
95-
expect(await worker.evaluate(() => self.toString())).toBe('[object SharedWorkerGlobalScope]');
94+
const worker = await target.serviceWorker();
95+
expect(worker).toBe(null);
9696
});
9797
it('should report when a target url changes', async({browser, page, server, context}) => {
9898
await page.goto(server.EMPTY_PAGE);

0 commit comments

Comments
 (0)