diff --git a/docs/api/puppeteer.browser.isconnected.md b/docs/api/puppeteer.browser.isconnected.md
index d618a252d1fe4..95d1cc51b05e1 100644
--- a/docs/api/puppeteer.browser.isconnected.md
+++ b/docs/api/puppeteer.browser.isconnected.md
@@ -4,13 +4,17 @@ sidebar_label: Browser.isConnected
# Browser.isConnected() method
+> Warning: This API is now obsolete.
+>
+> Use [Browser.connected](./puppeteer.browser.connected.md).
+
Whether Puppeteer is connected to this [browser](./puppeteer.browser.md).
#### Signature:
```typescript
class Browser {
- abstract isConnected(): boolean;
+ isConnected(): boolean;
}
```
diff --git a/docs/api/puppeteer.browser.md b/docs/api/puppeteer.browser.md
index 21111eee96a6d..c32ab0f0a5927 100644
--- a/docs/api/puppeteer.browser.md
+++ b/docs/api/puppeteer.browser.md
@@ -54,6 +54,12 @@ const browser2 = await puppeteer.connect({browserWSEndpoint});
await browser2.close();
```
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --------- | --------------------- | ------- | ------------------------------------------------------------------------- |
+| connected | readonly
| boolean | Whether Puppeteer is connected to this [browser](./puppeteer.browser.md). |
+
## Methods
| Method | Modifiers | Description |
diff --git a/packages/puppeteer-core/src/api/Browser.ts b/packages/puppeteer-core/src/api/Browser.ts
index 7c1ca47db7b92..8c3b22b99f611 100644
--- a/packages/puppeteer-core/src/api/Browser.ts
+++ b/packages/puppeteer-core/src/api/Browser.ts
@@ -473,10 +473,19 @@ export abstract class Browser extends EventEmitter {
throw new Error('Not implemented');
}
+ /**
+ * Whether Puppeteer is connected to this {@link Browser | browser}.
+ *
+ * @deprecated Use {@link Browser.connected}.
+ */
+ isConnected(): boolean {
+ return this.connected;
+ }
+
/**
* Whether Puppeteer is connected to this {@link Browser | browser}.
*/
- abstract isConnected(): boolean;
+ abstract get connected(): boolean;
/** @internal */
[Symbol.dispose](): void {
diff --git a/packages/puppeteer-core/src/bidi/Browser.ts b/packages/puppeteer-core/src/bidi/Browser.ts
index e5fc15d6bf1c4..b331b0cbc24bc 100644
--- a/packages/puppeteer-core/src/bidi/Browser.ts
+++ b/packages/puppeteer-core/src/bidi/Browser.ts
@@ -250,7 +250,7 @@ export class BidiBrowser extends Browser {
await this.#closeCallback?.call(null);
}
- override isConnected(): boolean {
+ override get connected(): boolean {
return !this.#connection.closed;
}
@@ -274,10 +274,6 @@ export class BidiBrowser extends Browser {
return `${this.#browserName}/${this.#browserVersion}`;
}
- /**
- * Returns an array of all open browser contexts. In a newly created browser, this will
- * return a single instance of {@link BidiBrowserContext}.
- */
override browserContexts(): BidiBrowserContext[] {
// TODO: implement incognito context https://github.com/w3c/webdriver-bidi/issues/289.
return this.#contexts;
@@ -295,9 +291,6 @@ export class BidiBrowser extends Browser {
}
}
- /**
- * Returns the default browser context. The default browser context cannot be closed.
- */
override defaultBrowserContext(): BidiBrowserContext {
return this.#defaultContext;
}
diff --git a/packages/puppeteer-core/src/cdp/Browser.ts b/packages/puppeteer-core/src/cdp/Browser.ts
index f34a0a9600892..207600b7675a1 100644
--- a/packages/puppeteer-core/src/cdp/Browser.ts
+++ b/packages/puppeteer-core/src/cdp/Browser.ts
@@ -195,10 +195,6 @@ export class CdpBrowser extends BrowserBase {
);
}
- /**
- * The spawned browser process. Returns `null` if the browser instance was created with
- * {@link Puppeteer.connect}.
- */
override process(): ChildProcess | null {
return this.#process ?? null;
}
@@ -223,24 +219,6 @@ export class CdpBrowser extends BrowserBase {
return this.#isPageTargetCallback;
}
- /**
- * Creates a new incognito browser context. This won't share cookies/cache with other
- * browser contexts.
- *
- * @example
- *
- * ```ts
- * (async () => {
- * const browser = await puppeteer.launch();
- * // Create a new incognito browser context.
- * const context = await browser.createIncognitoBrowserContext();
- * // Create a new page in a pristine context.
- * const page = await context.newPage();
- * // Do stuff
- * await page.goto('https://example.com');
- * })();
- * ```
- */
override async createIncognitoBrowserContext(
options: BrowserContextOptions = {}
): Promise {
@@ -262,17 +240,10 @@ export class CdpBrowser extends BrowserBase {
return context;
}
- /**
- * Returns an array of all open browser contexts. In a newly created browser, this will
- * return a single instance of {@link BrowserContext}.
- */
override browserContexts(): CdpBrowserContext[] {
return [this.#defaultContext, ...Array.from(this.#contexts.values())];
}
- /**
- * Returns the default browser context. The default browser context cannot be closed.
- */
override defaultBrowserContext(): CdpBrowserContext {
return this.#defaultContext;
}
@@ -387,31 +358,10 @@ export class CdpBrowser extends BrowserBase {
this.emit(BrowserEvent.TargetDiscovered, targetInfo);
};
- /**
- * The browser websocket endpoint which can be used as an argument to
- * {@link Puppeteer.connect}.
- *
- * @returns The Browser websocket url.
- *
- * @remarks
- *
- * The format is `ws://${host}:${port}/devtools/browser/`.
- *
- * You can find the `webSocketDebuggerUrl` from `http://${host}:${port}/json/version`.
- * Learn more about the
- * {@link https://chromedevtools.github.io/devtools-protocol | devtools protocol} and
- * the {@link
- * https://chromedevtools.github.io/devtools-protocol/#how-do-i-access-the-browser-target
- * | browser endpoint}.
- */
override wsEndpoint(): string {
return this.#connection.url();
}
- /**
- * Promise which resolves to a new {@link Page} object. The Page is created in
- * a default browser context.
- */
override async newPage(): Promise {
return await this.#defaultContext.newPage();
}
@@ -442,10 +392,6 @@ export class CdpBrowser extends BrowserBase {
return page;
}
- /**
- * All active targets inside the Browser. In case of multiple browser contexts, returns
- * an array with all the targets in all browser contexts.
- */
override targets(): CdpTarget[] {
return Array.from(
this.#targetManager.getAvailableTargets().values()
@@ -456,9 +402,6 @@ export class CdpBrowser extends BrowserBase {
});
}
- /**
- * The target associated with the browser.
- */
override target(): CdpTarget {
const browserTarget = this.targets().find(target => {
return target.type() === 'browser';
@@ -474,10 +417,6 @@ export class CdpBrowser extends BrowserBase {
return version.product;
}
- /**
- * The browser's original user agent. Pages can override the browser user agent with
- * {@link Page.setUserAgent}.
- */
override async userAgent(): Promise {
const version = await this.#getVersion();
return version.userAgent;
@@ -494,10 +433,7 @@ export class CdpBrowser extends BrowserBase {
this._detach();
}
- /**
- * Indicates that the browser is connected.
- */
- override isConnected(): boolean {
+ override get connected(): boolean {
return !this.#connection._closed;
}
@@ -525,35 +461,12 @@ export class CdpBrowserContext extends BrowserContext {
return this.#id;
}
- /**
- * An array of all active targets inside the browser context.
- */
override targets(): CdpTarget[] {
return this.#browser.targets().filter(target => {
return target.browserContext() === this;
});
}
- /**
- * This searches for a target in this specific browser context.
- *
- * @example
- * An example of finding a target for a page opened via `window.open`:
- *
- * ```ts
- * await page.evaluate(() => window.open('https://www.example.com/'));
- * const newWindowTarget = await browserContext.waitForTarget(
- * target => target.url() === 'https://www.example.com/'
- * );
- * ```
- *
- * @param predicate - A function to be run for every target
- * @param options - An object of options. Accepts a timeout,
- * which is the maximum wait time in milliseconds.
- * Pass `0` to disable the timeout. Defaults to 30 seconds.
- * @returns Promise which resolves to the first target found
- * that matches the `predicate` function.
- */
override waitForTarget(
predicate: (x: Target) => boolean | Promise,
options: {timeout?: number} = {}
@@ -563,13 +476,6 @@ export class CdpBrowserContext extends BrowserContext {
}, options);
}
- /**
- * An array of all pages inside the browser context.
- *
- * @returns 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 {@link Target.page | the target page}.
- */
override async pages(): Promise {
const pages = await Promise.all(
this.targets()
@@ -589,31 +495,10 @@ export class CdpBrowserContext extends BrowserContext {
});
}
- /**
- * Returns whether BrowserContext is incognito.
- * The default browser context is the only non-incognito browser context.
- *
- * @remarks
- * The default browser context cannot be closed.
- */
override isIncognito(): boolean {
return !!this.#id;
}
- /**
- * @example
- *
- * ```ts
- * const context = browser.defaultBrowserContext();
- * await context.overridePermissions('https://html5demos.com', [
- * 'geolocation',
- * ]);
- * ```
- *
- * @param origin - The origin to grant permissions to, e.g. "https://example.com".
- * @param permissions - An array of permissions to grant.
- * All permissions that are not listed here will be automatically denied.
- */
override async overridePermissions(
origin: string,
permissions: Permission[]
@@ -633,45 +518,20 @@ export class CdpBrowserContext extends BrowserContext {
});
}
- /**
- * Clears all permission overrides for the browser context.
- *
- * @example
- *
- * ```ts
- * const context = browser.defaultBrowserContext();
- * context.overridePermissions('https://example.com', ['clipboard-read']);
- * // do stuff ..
- * context.clearPermissionOverrides();
- * ```
- */
override async clearPermissionOverrides(): Promise {
await this.#connection.send('Browser.resetPermissions', {
browserContextId: this.#id || undefined,
});
}
- /**
- * Creates a new page in the browser context.
- */
override newPage(): Promise {
return this.#browser._createPageInContext(this.#id);
}
- /**
- * The browser this browser context belongs to.
- */
override browser(): CdpBrowser {
return this.#browser;
}
- /**
- * Closes the browser context. All the targets that belong to the browser context
- * will be closed.
- *
- * @remarks
- * Only incognito browser contexts can be closed.
- */
override async close(): Promise {
assert(this.#id, 'Non-incognito profiles cannot be closed!');
await this.#browser._disposeContext(this.#id);