Skip to content

Upgrading puppeteer 21 to 22

Breaking21.11.0 → 22.15.0Breaking2New9Changed30Fixed2Other1

BreakingUpgrade verdict

2 breaking changes.

  • Remove PUPPETEER_DOWNLOAD_PATH in favor of PUPPETEER_CACHE_DIR.
  • Drop support for node16.
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).

Breaking2
Remove PUPPETEER_DOWNLOAD_PATH in favor of PUPPETEER_CACHE_DIR.
Drop support for node16.

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'