Upgrading puppeteer 21 to 22
Breaking21.11.0 → 22.15.0Breaking2New9Changed30Fixed2Other1
BreakingUpgrade verdict
2 breaking changes.
In plain terms
- Remove PUPPETEER_DOWNLOAD_PATH in favor of PUPPETEER_CACHE_DIR.
- Drop support for node16.
Must act 2 items need code or config changes
Node.js requirement changed in 22.0.0: >=16.13.2 → >=18.
Adds devtools-protocol 0.0.1312386.
Installs 101 packages in all (was 105).
What you must change
Breaking2
Remove PUPPETEER_DOWNLOAD_PATH in favor of PUPPETEER_CACHE_DIR.
Drop support for node16.
API changes
Generated by DepDelta from published .d.ts files. Not mixed with prose notes.
- removed:
abstract method Browser.createIncognitoBrowserContext(options?: BrowserContextOptions): Promise<BrowserContext> - removed:
class CustomError extends Error - removed:
const devices: Readonly<Record<'Blackberry PlayBook' | 'Blackberry PlayBook landscape' | 'BlackBerry Z30' | 'BlackBerry Z30 landscape' | 'Galaxy Note 3' | 'Galaxy Note 3 land… - removed:
const enum BrowserContextEmittedEvents - removed:
const enum BrowserEmittedEvents - removed:
const enum PageEmittedEvents - removed:
const errors: PuppeteerErrors - removed:
const networkConditions: Readonly<{ 'Slow 3G': NetworkConditions; 'Fast 3G': NetworkConditions }> - removed:
constructor ConsoleMessage(type: ConsoleMessageType, text: string, args: JSHandle[], stackTraceLocations: ConsoleMessageLocation[]) - removed:
constructor Coverage(client: CDPSession) - removed:
constructor JSCoverage(client: CDPSession) - removed:
enum LocatorEmittedEvents - removed:
export { ProtocolMapping } - removed:
interface LocatorEventObject extends Record<EventType, unknown> - removed:
interface LocatorOptions - removed:
interface PageEventObject extends Record<EventType, unknown> - removed:
interface PuppeteerErrors - removed:
member BrowserContextEmittedEvents.TargetChanged = 'targetchanged' - removed:
member BrowserContextEmittedEvents.TargetCreated = 'targetcreated' - removed:
member BrowserContextEmittedEvents.TargetDestroyed = 'targetdestroyed' - removed:
member BrowserEmittedEvents.Disconnected = 'disconnected' - removed:
member BrowserEmittedEvents.TargetChanged = 'targetchanged' - removed:
member BrowserEmittedEvents.TargetCreated = 'targetcreated' - removed:
member BrowserEmittedEvents.TargetDestroyed = 'targetdestroyed' - removed:
member LocatorEmittedEvents.Action = 'action' - removed:
member PageEmittedEvents.Close = 'close' - removed:
member PageEmittedEvents.Console = 'console' - removed:
member PageEmittedEvents.DOMContentLoaded = 'domcontentloaded' - removed:
member PageEmittedEvents.Dialog = 'dialog' - removed:
member PageEmittedEvents.Error = 'error' - removed:
member PageEmittedEvents.FrameAttached = 'frameattached' - removed:
member PageEmittedEvents.FrameDetached = 'framedetached' - removed:
member PageEmittedEvents.FrameNavigated = 'framenavigated' - removed:
member PageEmittedEvents.Load = 'load' - removed:
member PageEmittedEvents.Metrics = 'metrics' - removed:
member PageEmittedEvents.PageError = 'pageerror' - removed:
member PageEmittedEvents.Popup = 'popup' - removed:
member PageEmittedEvents.Request = 'request' - removed:
member PageEmittedEvents.RequestFailed = 'requestfailed' - removed:
member PageEmittedEvents.RequestFinished = 'requestfinished' - removed:
member PageEmittedEvents.RequestServedFromCache = 'requestservedfromcache' - removed:
member PageEmittedEvents.Response = 'response' - removed:
member PageEmittedEvents.WorkerCreated = 'workercreated' - removed:
member PageEmittedEvents.WorkerDestroyed = 'workerdestroyed' - removed:
method CommonEventEmitter.addListener<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): this - removed:
method CommonEventEmitter.removeListener<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): this - removed:
method ElementHandle.$x(expression: string): Promise<Array<ElementHandle<Node>>> - removed:
method ElementHandle.waitForXPath(xpath: string, options?: { visible?: boolean; hidden?: boolean; timeout?: number }): Promise<ElementHandle<Node> | null> - removed:
method EventEmitter.addListener<Key extends keyof EventsWithWildcard<Events>>(type: Key, handler: Handler<EventsWithWildcard<Events>[Key]>): this - removed:
method EventEmitter.removeListener<Key extends keyof EventsWithWildcard<Events>>(type: Key, handler: Handler<EventsWithWildcard<Events>[Key]>): this - removed:
method Frame.$x(expression: string): Promise<Array<ElementHandle<Node>>> - removed:
method Frame.waitForTimeout(milliseconds: number): Promise<void> - removed:
method Frame.waitForXPath(xpath: string, options?: WaitForSelectorOptions): Promise<ElementHandle<Node> | null> - removed:
method Page.$x(expression: string): Promise<Array<ElementHandle<Node>>> - removed:
method Page.waitForTimeout(milliseconds: number): Promise<void> - removed:
method Page.waitForXPath(xpath: string, options?: WaitForSelectorOptions): Promise<ElementHandle<Node> | null> - removed:
property Configuration.downloadPath?: string - removed:
property LocatorEventObject[LocatorEvent.Action]: undefined - removed:
property LocatorOptions.ensureElementIsInTheViewport: boolean - removed:
property LocatorOptions.timeout: number - removed:
property LocatorOptions.visibility: VisibilityOption - removed:
property LocatorOptions.waitForEnabled: boolean - removed:
property LocatorOptions.waitForStableBoundingBox: boolean - removed:
property PageEventObject[PageEvent.Close]: undefined - removed:
property PageEventObject[PageEvent.Console]: ConsoleMessage - removed:
property PageEventObject[PageEvent.DOMContentLoaded]: undefined - removed:
property PageEventObject[PageEvent.Dialog]: Dialog - removed:
property PageEventObject[PageEvent.Error]: Error - removed:
property PageEventObject[PageEvent.FrameAttached]: Frame - removed:
property PageEventObject[PageEvent.FrameDetached]: Frame - removed:
property PageEventObject[PageEvent.FrameNavigated]: Frame - removed:
property PageEventObject[PageEvent.Load]: undefined - removed:
property PageEventObject[PageEvent.Metrics]: { title: string; metrics: Metrics } - removed:
property PageEventObject[PageEvent.PageError]: Error - removed:
property PageEventObject[PageEvent.Popup]: Page | null - removed:
property PageEventObject[PageEvent.RequestFailed]: HTTPRequest - removed:
property PageEventObject[PageEvent.RequestFinished]: HTTPRequest - removed:
property PageEventObject[PageEvent.RequestServedFromCache]: HTTPRequest - removed:
property PageEventObject[PageEvent.Request]: HTTPRequest - removed:
property PageEventObject[PageEvent.Response]: HTTPResponse - removed:
property PageEventObject[PageEvent.WorkerCreated]: WebWorker - removed:
property PageEventObject[PageEvent.WorkerDestroyed]: WebWorker - removed:
property PuppeteerErrors.ProtocolError: typeof ProtocolError - removed:
property PuppeteerErrors.TimeoutError: typeof TimeoutError - removed:
type InterceptResolutionStrategy = InterceptResolutionAction - changed:
abstract get Page.accessibility(): Accessibility → get Page.accessibility(): Accessibility - changed:
abstract method BrowserContext.waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target> → method BrowserContext.waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target> - changed:
abstract method Frame.goto(url: string, options?: { referer?: string; referrerPolicy?: string; timeout?: number; waitUntil?: PuppeteerLifeCycleEvent | PuppeteerLifeCycleEvent[] }): Promise<HTTPResponse | null> → abstract method Frame.goto(url: string, options?: GoToOptions): Promise<HTTPResponse | null> - changed:
abstract method Frame.setContent(html: string, options?: { timeout?: number; waitUntil?: PuppeteerLifeCycleEvent | PuppeteerLifeCycleEvent[] }): Promise<void> → abstract method Frame.setContent(html: string, options?: WaitForOptions): Promise<void> - changed:
abstract method HTTPRequest.abort(errorCode?: ErrorCode, priority?: number): Promise<void> → method HTTPRequest.abort(errorCode?: ErrorCode, priority?: number): Promise<void> - changed:
abstract method HTTPRequest.abortErrorReason(): Protocol.Network.ErrorReason | null → method HTTPRequest.abortErrorReason(): Protocol.Network.ErrorReason | null - changed:
abstract method HTTPRequest.continue(overrides?: ContinueRequestOverrides, priority?: number): Promise<void> → method HTTPRequest.continue(overrides?: ContinueRequestOverrides, priority?: number): Promise<void> - changed:
abstract method HTTPRequest.continueRequestOverrides(): ContinueRequestOverrides → method HTTPRequest.continueRequestOverrides(): ContinueRequestOverrides - changed:
abstract method HTTPRequest.enqueueInterceptAction(pendingHandler: () => void | PromiseLike<unknown>): void → method HTTPRequest.enqueueInterceptAction(pendingHandler: () => void | PromiseLike<unknown>): void - changed:
abstract method HTTPRequest.finalizeInterceptions(): Promise<void> → method HTTPRequest.finalizeInterceptions(): Promise<void> - changed:
abstract method HTTPRequest.interceptResolutionState(): InterceptResolutionState → method HTTPRequest.interceptResolutionState(): InterceptResolutionState - changed:
abstract method HTTPRequest.isInterceptResolutionHandled(): boolean → method HTTPRequest.isInterceptResolutionHandled(): boolean - changed:
abstract method HTTPRequest.respond(response: Partial<ResponseForRequest>, priority?: number): Promise<void> → method HTTPRequest.respond(response: Partial<ResponseForRequest>, priority?: number): Promise<void> - changed:
abstract method HTTPRequest.responseForRequest(): Partial<ResponseForRequest> | null → method HTTPRequest.responseForRequest(): Partial<ResponseForRequest> | null - changed:
abstract method Page.authenticate(credentials: Credentials): Promise<void> → abstract method Page.authenticate(credentials: Credentials | null): Promise<void> - changed:
abstract method Page.cookies(...urls: string[]): Promise<Protocol.Network.Cookie[]> → abstract method Page.cookies(...urls: string[]): Promise<Cookie[]> - changed:
abstract method Page.createPDFStream(options?: PDFOptions): Promise<Readable> → abstract method Page.createPDFStream(options?: PDFOptions): Promise<ReadableStream<Uint8Array>> - changed:
abstract method Page.deleteCookie(...cookies: Protocol.Network.DeleteCookiesRequest[]): Promise<void> → abstract method Page.deleteCookie(...cookies: DeleteCookiesRequest[]): Promise<void> - changed:
abstract method Page.setCookie(...cookies: Protocol.Network.CookieParam[]): Promise<void> → abstract method Page.setCookie(...cookies: CookieParam[]): Promise<void> - changed:
abstract method Page.setViewport(viewport: Viewport): Promise<void> → abstract method Page.setViewport(viewport: Viewport | null): Promise<void> - changed:
class ProtocolError extends CustomError → class ProtocolError extends PuppeteerError - changed:
class TimeoutError extends CustomError → class TimeoutError extends PuppeteerError - changed:
class UnsupportedOperation extends CustomError → class UnsupportedOperation extends PuppeteerError - changed:
const PredefinedNetworkConditions: Readonly<{ 'Slow 3G': NetworkConditions; 'Fast 3G': NetworkConditions }> → const PredefinedNetworkConditions: Readonly<{ 'Slow 3G': NetworkConditions; 'Fast 3G': NetworkConditions; 'Slow 4G': NetworkConditions; 'Fast 4G': NetworkConditions }> - changed:
method ElementHandle.$$<Selector extends string>(selector: Selector): Promise<Array<ElementHandle<NodeFor<Selector>>>> → method ElementHandle.$$<Selector extends string>(selector: Selector, options?: QueryOptions): Promise<Array<ElementHandle<NodeFor<Selector>>>> - changed:
method Frame.$$<Selector extends string>(selector: Selector): Promise<Array<ElementHandle<NodeFor<Selector>>>> → method Frame.$$<Selector extends string>(selector: Selector, options?: QueryOptions): Promise<Array<ElementHandle<NodeFor<Selector>>>> - changed:
method Page.$$<Selector extends string>(selector: Selector): Promise<Array<ElementHandle<NodeFor<Selector>>>> → method Page.$$<Selector extends string>(selector: Selector, options?: QueryOptions): Promise<Array<ElementHandle<NodeFor<Selector>>>> - changed:
property BrowserLaunchArgumentOptions.headless?: boolean | 'new' → property BrowserLaunchArgumentOptions.headless?: boolean | 'shell' - changed:
property ResponseForRequest.body: string | Buffer → property ResponseForRequest.body: string | Uint8Array - changed:
type ConsoleMessageType = 'log' | 'debug' | 'info' | 'error' | 'warning' | 'dir' | 'dirxml' | 'table' | 'trace' | 'clear' | 'startGroup' | 'startGroupCollapsed' | 'endGroup' | 'assert'… → type ConsoleMessageType = 'log' | 'debug' | 'info' | 'error' | 'warn' | 'dir' | 'dirxml' | 'table' | 'trace' | 'clear' | 'startGroup' | 'startGroupCollapsed' | 'endGroup' | 'assert' | '… - added:
abstract method Browser.createBrowserContext(options?: BrowserContextOptions): Promise<BrowserContext> - added:
class ExtensionTransport implements ConnectionTransport - added:
class PuppeteerError extends Error - added:
interface Cookie - added:
interface CookieParam - added:
interface DeleteCookiesRequest - added:
interface QueryOptions - added:
method ExtensionTransport.close(): void - added:
method ExtensionTransport.send(message: string): void - added:
method Frame.frameElement(): Promise<HandleFor<HTMLIFrameElement> | null> - added:
method SerializedAXNode.elementHandle(): Promise<ElementHandle | null> - added:
method WebWorker.close(): Promise<void> - added:
property Cookie.domain: string - added:
property Cookie.expires: number - added:
property Cookie.httpOnly: boolean - added:
property Cookie.name: string - added:
property Cookie.partitionKey?: string - added:
property Cookie.partitionKeyOpaque?: boolean - added:
property Cookie.path: string - added:
property Cookie.priority?: CookiePriority - added:
property Cookie.sameParty?: boolean - added:
property Cookie.sameSite?: CookieSameSite - added:
property Cookie.secure: boolean - added:
property Cookie.session: boolean - added:
property Cookie.size: number - added:
property Cookie.sourceScheme?: CookieSourceScheme - added:
property Cookie.value: string - added:
property CookieParam.domain?: string - added:
property CookieParam.expires?: number - added:
property CookieParam.httpOnly?: boolean - added:
property CookieParam.name: string - added:
property CookieParam.partitionKey?: string - added:
property CookieParam.path?: string - added:
property CookieParam.priority?: CookiePriority - added:
property CookieParam.sameParty?: boolean - added:
property CookieParam.sameSite?: CookieSameSite - added:
property CookieParam.secure?: boolean - added:
property CookieParam.sourceScheme?: CookieSourceScheme - added:
property CookieParam.url?: string - added:
property CookieParam.value: string - added:
property DeleteCookiesRequest.domain?: string - added:
property DeleteCookiesRequest.name: string - added:
property DeleteCookiesRequest.path?: string - added:
property DeleteCookiesRequest.url?: string - added:
property ExtensionTransport.onclose?: () => void - added:
property ExtensionTransport.onmessage?: (message: string) => void - added:
property PDFOptions.waitForFonts?: boolean - added:
property QueryOptions.isolate: boolean - added:
property WaitForOptions.signal?: AbortSignal - added:
property WaitTimeoutOptions.signal?: AbortSignal - added:
static method ExtensionTransport.connectTab(tabId: number): Promise<ExtensionTransport> - added:
type CookiePriority = 'Low' | 'Medium' | 'High' - added:
type CookieSameSite = 'Strict' | 'Lax' | 'None' - added:
type CookieSourceScheme = 'Unset' | 'NonSecure' | 'Secure'