diff --git a/README.md b/README.md index 172e520c6b..75800292bb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-120.0.6099.56-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-120.0.1-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-17.4-blue.svg?logo=safari)](https://webkit.org/) +[![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-121.0.6167.8-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-120.0.1-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-17.4-blue.svg?logo=safari)](https://webkit.org/) ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright) @@ -8,7 +8,7 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr | | Linux | macOS | Windows | | :--- | :---: | :---: | :---: | -| Chromium 120.0.6099.56 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Chromium 121.0.6167.8 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 17.4 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Firefox 120.0.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: | diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index bbd3879960..87be163608 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -3,15 +3,15 @@ "browsers": [ { "name": "chromium", - "revision": "1093", + "revision": "1094", "installByDefault": true, - "browserVersion": "120.0.6099.56" + "browserVersion": "121.0.6167.8" }, { "name": "chromium-with-symbols", - "revision": "1093", + "revision": "1094", "installByDefault": false, - "browserVersion": "120.0.6099.56" + "browserVersion": "121.0.6167.8" }, { "name": "chromium-tip-of-tree", diff --git a/packages/playwright-core/src/server/chromium/protocol.d.ts b/packages/playwright-core/src/server/chromium/protocol.d.ts index e6115a8e7f..49adee0f8b 100644 --- a/packages/playwright-core/src/server/chromium/protocol.d.ts +++ b/packages/playwright-core/src/server/chromium/protocol.d.ts @@ -675,7 +675,7 @@ may be used by the front-end as additional context. request?: AffectedRequest; } export type MixedContentResolutionStatus = "MixedContentBlocked"|"MixedContentAutomaticallyUpgraded"|"MixedContentWarning"; - export type MixedContentResourceType = "AttributionSrc"|"Audio"|"Beacon"|"CSPReport"|"Download"|"EventSource"|"Favicon"|"Font"|"Form"|"Frame"|"Image"|"Import"|"Manifest"|"Ping"|"PluginData"|"PluginResource"|"Prefetch"|"Resource"|"Script"|"ServiceWorker"|"SharedWorker"|"Stylesheet"|"Track"|"Video"|"Worker"|"XMLHttpRequest"|"XSLT"; + export type MixedContentResourceType = "AttributionSrc"|"Audio"|"Beacon"|"CSPReport"|"Download"|"EventSource"|"Favicon"|"Font"|"Form"|"Frame"|"Image"|"Import"|"Manifest"|"Ping"|"PluginData"|"PluginResource"|"Prefetch"|"Resource"|"Script"|"ServiceWorker"|"SharedWorker"|"SpeculationRules"|"Stylesheet"|"Track"|"Video"|"Worker"|"XMLHttpRequest"|"XSLT"; export interface MixedContentIssueDetails { /** * The type of resource causing the mixed content issue (css, js, iframe, @@ -1367,7 +1367,7 @@ events afterwards if enabled and recording. export type PermissionSetting = "granted"|"denied"|"prompt"; /** * Definition of PermissionDescriptor defined in the Permissions API: -https://w3c.github.io/permissions/#dictdef-permissiondescriptor. +https://w3c.github.io/permissions/#dom-permissiondescriptor. */ export interface PermissionDescriptor { /** @@ -2334,6 +2334,10 @@ A higher number has higher priority in the cascade order. * Font's family name reported by platform. */ familyName: string; + /** + * Font's PostScript name reported by platform. + */ + postScriptName: string; /** * Indicates if the font was downloaded or resolved locally. */ @@ -2464,6 +2468,28 @@ stylesheet rules) this rule came from. inherits: boolean; syntax: string; } + /** + * CSS font-palette-values rule representation. + */ + export interface CSSFontPaletteValuesRule { + /** + * The css style sheet identifier (absent for user agent stylesheet and user-specified +stylesheet rules) this rule came from. + */ + styleSheetId?: StyleSheetId; + /** + * Parent stylesheet's origin. + */ + origin: StyleSheetOrigin; + /** + * Associated font palette name. + */ + fontPaletteName: Value; + /** + * Associated style declaration. + */ + style: CSSStyle; + } /** * CSS property at-rule representation. */ @@ -2749,6 +2775,10 @@ attributes) for a DOM node identified by `nodeId`. * A list of CSS property registrations matching this node. */ cssPropertyRegistrations?: CSSPropertyRegistration[]; + /** + * A font-palette-values rule matching this node. + */ + cssFontPaletteValuesRule?: CSSFontPaletteValuesRule; /** * Id of the first parent element that does not have display: contents. */ @@ -5615,6 +5645,12 @@ A display feature that only splits content will have a 0 mask_length. */ maskLength: number; } + export interface DevicePosture { + /** + * Current posture of the device + */ + type: "continuous"|"folded"; + } export interface MediaFeature { name: string; value: string; @@ -5834,6 +5870,11 @@ change is not observed by the page, e.g. viewport-relative elements do not chang is turned-off. */ displayFeature?: DisplayFeature; + /** + * If set, the posture of a foldable device. If not set the posture is set +to continuous. + */ + devicePosture?: DevicePosture; } export type setDeviceMetricsOverrideReturnValue = { } @@ -6105,7 +6146,7 @@ on Android. */ userAgent: string; /** - * Browser langugage to emulate. + * Browser language to emulate. */ acceptLanguage?: string; /** @@ -8131,6 +8172,9 @@ records. * The reason why Chrome uses a specific transport protocol for HTTP semantics. */ export type AlternateProtocolUsage = "alternativeJobWonWithoutRace"|"alternativeJobWonRace"|"mainJobWonRace"|"mappingMissing"|"broken"|"dnsAlpnH3JobWonWithoutRace"|"dnsAlpnH3JobWonRace"|"unspecifiedReason"; + export interface ServiceWorkerRouterInfo { + ruleIdMatched: number; + } /** * HTTP response data. */ @@ -8195,6 +8239,10 @@ records. * Specifies that the request was served from the prefetch cache. */ fromPrefetchCache?: boolean; + /** + * Infomation about how Service Worker Static Router was used. + */ + serviceWorkerRouterInfo?: ServiceWorkerRouterInfo; /** * Total number of bytes received for this request so far. */ @@ -9957,7 +10005,7 @@ continueInterceptedRequest call. */ userAgent: string; /** - * Browser langugage to emulate. + * Browser language to emulate. */ acceptLanguage?: string; /** @@ -10889,7 +10937,7 @@ as an ad. * All Permissions Policy features. This enum should match the one defined in third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5. */ - export type PermissionsPolicyFeature = "accelerometer"|"ambient-light-sensor"|"attribution-reporting"|"autoplay"|"bluetooth"|"browsing-topics"|"camera"|"ch-dpr"|"ch-device-memory"|"ch-downlink"|"ch-ect"|"ch-prefers-color-scheme"|"ch-prefers-reduced-motion"|"ch-prefers-reduced-transparency"|"ch-rtt"|"ch-save-data"|"ch-ua"|"ch-ua-arch"|"ch-ua-bitness"|"ch-ua-platform"|"ch-ua-model"|"ch-ua-mobile"|"ch-ua-form-factor"|"ch-ua-full-version"|"ch-ua-full-version-list"|"ch-ua-platform-version"|"ch-ua-wow64"|"ch-viewport-height"|"ch-viewport-width"|"ch-width"|"clipboard-read"|"clipboard-write"|"compute-pressure"|"cross-origin-isolated"|"direct-sockets"|"display-capture"|"document-domain"|"encrypted-media"|"execution-while-out-of-viewport"|"execution-while-not-rendered"|"focus-without-user-activation"|"fullscreen"|"frobulate"|"gamepad"|"geolocation"|"gyroscope"|"hid"|"identity-credentials-get"|"idle-detection"|"interest-cohort"|"join-ad-interest-group"|"keyboard-map"|"local-fonts"|"magnetometer"|"microphone"|"midi"|"otp-credentials"|"payment"|"picture-in-picture"|"private-aggregation"|"private-state-token-issuance"|"private-state-token-redemption"|"publickey-credentials-get"|"run-ad-auction"|"screen-wake-lock"|"serial"|"shared-autofill"|"shared-storage"|"shared-storage-select-url"|"smart-card"|"storage-access"|"sync-xhr"|"unload"|"usb"|"vertical-scroll"|"web-share"|"window-management"|"window-placement"|"xr-spatial-tracking"; + export type PermissionsPolicyFeature = "accelerometer"|"ambient-light-sensor"|"attribution-reporting"|"autoplay"|"bluetooth"|"browsing-topics"|"camera"|"ch-dpr"|"ch-device-memory"|"ch-downlink"|"ch-ect"|"ch-prefers-color-scheme"|"ch-prefers-reduced-motion"|"ch-prefers-reduced-transparency"|"ch-rtt"|"ch-save-data"|"ch-ua"|"ch-ua-arch"|"ch-ua-bitness"|"ch-ua-platform"|"ch-ua-model"|"ch-ua-mobile"|"ch-ua-form-factor"|"ch-ua-full-version"|"ch-ua-full-version-list"|"ch-ua-platform-version"|"ch-ua-wow64"|"ch-viewport-height"|"ch-viewport-width"|"ch-width"|"clipboard-read"|"clipboard-write"|"compute-pressure"|"cross-origin-isolated"|"direct-sockets"|"display-capture"|"document-domain"|"encrypted-media"|"execution-while-out-of-viewport"|"execution-while-not-rendered"|"focus-without-user-activation"|"fullscreen"|"frobulate"|"gamepad"|"geolocation"|"gyroscope"|"hid"|"identity-credentials-get"|"idle-detection"|"interest-cohort"|"join-ad-interest-group"|"keyboard-map"|"local-fonts"|"magnetometer"|"microphone"|"midi"|"otp-credentials"|"payment"|"picture-in-picture"|"private-aggregation"|"private-state-token-issuance"|"private-state-token-redemption"|"publickey-credentials-get"|"run-ad-auction"|"screen-wake-lock"|"serial"|"shared-autofill"|"shared-storage"|"shared-storage-select-url"|"smart-card"|"storage-access"|"sync-xhr"|"unload"|"usb"|"usb-unrestricted"|"vertical-scroll"|"web-printing"|"web-share"|"window-management"|"window-placement"|"xr-spatial-tracking"; /** * Reason for a permissions policy feature to be disabled. */ @@ -11988,19 +12036,6 @@ as an ad. Only sent if frame is labelled as an ad and id is available. */ adScriptId?: AdScriptId; } - /** - * Returns all browser cookies for the page and all of its subframes. Depending -on the backend support, will return detailed cookie information in the -`cookies` field. - */ - export type getCookiesParameters = { - } - export type getCookiesReturnValue = { - /** - * Array of cookie objects. - */ - cookies: Network.Cookie[]; - } /** * Returns present frame tree structure. */ @@ -12250,6 +12285,10 @@ in which case the content will be scaled to fit the paper size. * Whether or not to generate tagged (accessible) PDF. Defaults to embedder choice. */ generateTaggedPDF?: boolean; + /** + * Whether or not to embed the document outline into the PDF. + */ + generateDocumentOutline?: boolean; } export type printToPDFReturnValue = { /** @@ -13228,6 +13267,7 @@ For cached script it is the last time the cache entry was validated. scriptResponseTime?: number; controlledClients?: Target.TargetID[]; targetId?: Target.TargetID; + routerRules?: string; } /** * ServiceWorker error message. @@ -13510,6 +13550,14 @@ SharedStorageAccessType.workletSet. */ ends: number[]; } + export interface AttributionReportingTriggerSpec { + /** + * number instead of integer because not all uint32 can be represented by +int + */ + triggerData: number[]; + eventReportWindows: AttributionReportingEventReportWindows; + } export type AttributionReportingTriggerDataMatching = "exact"|"modulus"; export interface AttributionReportingSourceRegistration { time: Network.TimeSinceEpoch; @@ -13517,7 +13565,7 @@ SharedStorageAccessType.workletSet. * duration in seconds */ expiry: number; - eventReportWindows: AttributionReportingEventReportWindows; + triggerSpecs: AttributionReportingTriggerSpec[]; /** * duration in seconds */ @@ -15623,6 +15671,18 @@ Otherwise, they will not be resolved. Defaults to true. Defaults to false. */ isUserVerified?: boolean; + /** + * Credentials created by this authenticator will have the backup +eligibility (BE) flag set to this value. Defaults to false. +https://w3c.github.io/webauthn/#sctn-credential-backup + */ + defaultBackupEligibility?: boolean; + /** + * Credentials created by this authenticator will have the backup state +(BS) flag set to this value. Defaults to false. +https://w3c.github.io/webauthn/#sctn-credential-backup + */ + defaultBackupState?: boolean; } export interface Credential { credentialId: binary; @@ -16093,6 +16153,14 @@ status is shared by prefetchStatusUpdated and prerenderStatusUpdated. filter out the ones that aren't necessary to the developers. */ export type PrefetchStatus = "PrefetchAllowed"|"PrefetchFailedIneligibleRedirect"|"PrefetchFailedInvalidRedirect"|"PrefetchFailedMIMENotSupported"|"PrefetchFailedNetError"|"PrefetchFailedNon2XX"|"PrefetchFailedPerPageLimitExceeded"|"PrefetchEvicted"|"PrefetchHeldback"|"PrefetchIneligibleRetryAfter"|"PrefetchIsPrivacyDecoy"|"PrefetchIsStale"|"PrefetchNotEligibleBrowserContextOffTheRecord"|"PrefetchNotEligibleDataSaverEnabled"|"PrefetchNotEligibleExistingProxy"|"PrefetchNotEligibleHostIsNonUnique"|"PrefetchNotEligibleNonDefaultStoragePartition"|"PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy"|"PrefetchNotEligibleSchemeIsNotHttps"|"PrefetchNotEligibleUserHasCookies"|"PrefetchNotEligibleUserHasServiceWorker"|"PrefetchNotEligibleBatterySaverEnabled"|"PrefetchNotEligiblePreloadingDisabled"|"PrefetchNotFinishedInTime"|"PrefetchNotStarted"|"PrefetchNotUsedCookiesChanged"|"PrefetchProxyNotAvailable"|"PrefetchResponseUsed"|"PrefetchSuccessfulButNotUsed"|"PrefetchNotUsedProbeFailed"; + /** + * Information of headers to be displayed when the header mismatch occurred. + */ + export interface PrerenderMismatchedHeaders { + headerName: string; + initialValue?: string; + activationValue?: string; + } /** * Upsert. Currently, it is only emitted when a rule set added. @@ -16139,6 +16207,7 @@ filter out the ones that aren't necessary to the developers. that is incompatible with prerender and has caused the cancellation of the attempt. */ disallowedMojoInterface?: string; + mismatchedHeaders?: PrerenderMismatchedHeaders[]; } /** * Send a list of sources for all preloading attempts in a document. @@ -16168,9 +16237,13 @@ whether this account has ever been used to sign in to this RP before. */ export type LoginState = "SignIn"|"SignUp"; /** - * Whether the dialog shown is an account chooser or an auto re-authentication dialog. + * The types of FedCM dialogs. */ - export type DialogType = "AccountChooser"|"AutoReauthn"|"ConfirmIdpLogin"; + export type DialogType = "AccountChooser"|"AutoReauthn"|"ConfirmIdpLogin"|"Error"; + /** + * The buttons on the FedCM dialog. + */ + export type DialogButton = "ConfirmIdpLoginContinue"|"ErrorGotIt"|"ErrorMoreDetails"; /** * Corresponds to IdentityRequestAccount */ @@ -16201,6 +16274,13 @@ RP context was used appropriately. title: string; subtitle?: string; } + /** + * Triggered when a dialog is closed, either by user action, JS abort, +or a command below. + */ + export type dialogClosedPayload = { + dialogId: string; + } export type enableParameters = { /** @@ -16222,14 +16302,11 @@ normally happen, if this is unimportant to what's being tested. } export type selectAccountReturnValue = { } - /** - * Only valid if the dialog type is ConfirmIdpLogin. Acts as if the user had -clicked the continue button. - */ - export type confirmIdpLoginParameters = { + export type clickDialogButtonParameters = { dialogId: string; + dialogButton: DialogButton; } - export type confirmIdpLoginReturnValue = { + export type clickDialogButtonReturnValue = { } export type dismissDialogParameters = { dialogId: string; @@ -19044,6 +19121,7 @@ Error was thrown. "Preload.prerenderStatusUpdated": Preload.prerenderStatusUpdatedPayload; "Preload.preloadingAttemptSourcesUpdated": Preload.preloadingAttemptSourcesUpdatedPayload; "FedCm.dialogShown": FedCm.dialogShownPayload; + "FedCm.dialogClosed": FedCm.dialogClosedPayload; "Console.messageAdded": Console.messageAddedPayload; "Debugger.breakpointResolved": Debugger.breakpointResolvedPayload; "Debugger.paused": Debugger.pausedPayload; @@ -19401,7 +19479,6 @@ Error was thrown. "Page.getManifestIcons": Page.getManifestIconsParameters; "Page.getAppId": Page.getAppIdParameters; "Page.getAdScriptId": Page.getAdScriptIdParameters; - "Page.getCookies": Page.getCookiesParameters; "Page.getFrameTree": Page.getFrameTreeParameters; "Page.getLayoutMetrics": Page.getLayoutMetricsParameters; "Page.getNavigationHistory": Page.getNavigationHistoryParameters; @@ -19562,7 +19639,7 @@ Error was thrown. "FedCm.enable": FedCm.enableParameters; "FedCm.disable": FedCm.disableParameters; "FedCm.selectAccount": FedCm.selectAccountParameters; - "FedCm.confirmIdpLogin": FedCm.confirmIdpLoginParameters; + "FedCm.clickDialogButton": FedCm.clickDialogButtonParameters; "FedCm.dismissDialog": FedCm.dismissDialogParameters; "FedCm.resetCooldown": FedCm.resetCooldownParameters; "Console.clearMessages": Console.clearMessagesParameters; @@ -19980,7 +20057,6 @@ Error was thrown. "Page.getManifestIcons": Page.getManifestIconsReturnValue; "Page.getAppId": Page.getAppIdReturnValue; "Page.getAdScriptId": Page.getAdScriptIdReturnValue; - "Page.getCookies": Page.getCookiesReturnValue; "Page.getFrameTree": Page.getFrameTreeReturnValue; "Page.getLayoutMetrics": Page.getLayoutMetricsReturnValue; "Page.getNavigationHistory": Page.getNavigationHistoryReturnValue; @@ -20141,7 +20217,7 @@ Error was thrown. "FedCm.enable": FedCm.enableReturnValue; "FedCm.disable": FedCm.disableReturnValue; "FedCm.selectAccount": FedCm.selectAccountReturnValue; - "FedCm.confirmIdpLogin": FedCm.confirmIdpLoginReturnValue; + "FedCm.clickDialogButton": FedCm.clickDialogButtonReturnValue; "FedCm.dismissDialog": FedCm.dismissDialogReturnValue; "FedCm.resetCooldown": FedCm.resetCooldownReturnValue; "Console.clearMessages": Console.clearMessagesReturnValue; diff --git a/packages/playwright-core/src/server/deviceDescriptorsSource.json b/packages/playwright-core/src/server/deviceDescriptorsSource.json index 0170b59cad..d00a176958 100644 --- a/packages/playwright-core/src/server/deviceDescriptorsSource.json +++ b/packages/playwright-core/src/server/deviceDescriptorsSource.json @@ -110,7 +110,7 @@ "defaultBrowserType": "webkit" }, "Galaxy S5": { - "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -121,7 +121,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -132,7 +132,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S8": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 360, "height": 740 @@ -143,7 +143,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S8 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 740, "height": 360 @@ -154,7 +154,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S9+": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 320, "height": 658 @@ -165,7 +165,7 @@ "defaultBrowserType": "chromium" }, "Galaxy S9+ landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 658, "height": 320 @@ -176,7 +176,7 @@ "defaultBrowserType": "chromium" }, "Galaxy Tab S4": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 712, "height": 1138 @@ -187,7 +187,7 @@ "defaultBrowserType": "chromium" }, "Galaxy Tab S4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 1138, "height": 712 @@ -978,7 +978,7 @@ "defaultBrowserType": "webkit" }, "LG Optimus L70": { - "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 384, "height": 640 @@ -989,7 +989,7 @@ "defaultBrowserType": "chromium" }, "LG Optimus L70 landscape": { - "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 640, "height": 384 @@ -1000,7 +1000,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 550": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 640, "height": 360 @@ -1011,7 +1011,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 550 landscape": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 360, "height": 640 @@ -1022,7 +1022,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 950": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 360, "height": 640 @@ -1033,7 +1033,7 @@ "defaultBrowserType": "chromium" }, "Microsoft Lumia 950 landscape": { - "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36 Edge/14.14263", + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36 Edge/14.14263", "viewport": { "width": 640, "height": 360 @@ -1044,7 +1044,7 @@ "defaultBrowserType": "chromium" }, "Nexus 10": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 800, "height": 1280 @@ -1055,7 +1055,7 @@ "defaultBrowserType": "chromium" }, "Nexus 10 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 1280, "height": 800 @@ -1066,7 +1066,7 @@ "defaultBrowserType": "chromium" }, "Nexus 4": { - "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 384, "height": 640 @@ -1077,7 +1077,7 @@ "defaultBrowserType": "chromium" }, "Nexus 4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 640, "height": 384 @@ -1088,7 +1088,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -1099,7 +1099,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -1110,7 +1110,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5X": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1121,7 +1121,7 @@ "defaultBrowserType": "chromium" }, "Nexus 5X landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1132,7 +1132,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1143,7 +1143,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1154,7 +1154,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6P": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 412, "height": 732 @@ -1165,7 +1165,7 @@ "defaultBrowserType": "chromium" }, "Nexus 6P landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 732, "height": 412 @@ -1176,7 +1176,7 @@ "defaultBrowserType": "chromium" }, "Nexus 7": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 600, "height": 960 @@ -1187,7 +1187,7 @@ "defaultBrowserType": "chromium" }, "Nexus 7 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "viewport": { "width": 960, "height": 600 @@ -1242,7 +1242,7 @@ "defaultBrowserType": "webkit" }, "Pixel 2": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 411, "height": 731 @@ -1253,7 +1253,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 731, "height": 411 @@ -1264,7 +1264,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 XL": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 411, "height": 823 @@ -1275,7 +1275,7 @@ "defaultBrowserType": "chromium" }, "Pixel 2 XL landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 823, "height": 411 @@ -1286,7 +1286,7 @@ "defaultBrowserType": "chromium" }, "Pixel 3": { - "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 393, "height": 786 @@ -1297,7 +1297,7 @@ "defaultBrowserType": "chromium" }, "Pixel 3 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 786, "height": 393 @@ -1308,7 +1308,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4": { - "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 353, "height": 745 @@ -1319,7 +1319,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 745, "height": 353 @@ -1330,7 +1330,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4a (5G)": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "width": 412, "height": 892 @@ -1345,7 +1345,7 @@ "defaultBrowserType": "chromium" }, "Pixel 4a (5G) landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "height": 892, "width": 412 @@ -1360,7 +1360,7 @@ "defaultBrowserType": "chromium" }, "Pixel 5": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "width": 393, "height": 851 @@ -1375,7 +1375,7 @@ "defaultBrowserType": "chromium" }, "Pixel 5 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "width": 851, "height": 393 @@ -1390,7 +1390,7 @@ "defaultBrowserType": "chromium" }, "Pixel 7": { - "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "width": 412, "height": 915 @@ -1405,7 +1405,7 @@ "defaultBrowserType": "chromium" }, "Pixel 7 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "screen": { "width": 915, "height": 412 @@ -1420,7 +1420,7 @@ "defaultBrowserType": "chromium" }, "Moto G4": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 360, "height": 640 @@ -1431,7 +1431,7 @@ "defaultBrowserType": "chromium" }, "Moto G4 landscape": { - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Mobile Safari/537.36", + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Mobile Safari/537.36", "viewport": { "width": 640, "height": 360 @@ -1442,7 +1442,7 @@ "defaultBrowserType": "chromium" }, "Desktop Chrome HiDPI": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "screen": { "width": 1792, "height": 1120 @@ -1457,7 +1457,7 @@ "defaultBrowserType": "chromium" }, "Desktop Edge HiDPI": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36 Edg/120.0.6099.56", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36 Edg/121.0.6167.8", "screen": { "width": 1792, "height": 1120 @@ -1502,7 +1502,7 @@ "defaultBrowserType": "webkit" }, "Desktop Chrome": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36", "screen": { "width": 1920, "height": 1080 @@ -1517,7 +1517,7 @@ "defaultBrowserType": "chromium" }, "Desktop Edge": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36 Edg/120.0.6099.56", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.8 Safari/537.36 Edg/121.0.6167.8", "screen": { "width": 1920, "height": 1080 diff --git a/packages/playwright-core/types/protocol.d.ts b/packages/playwright-core/types/protocol.d.ts index e6115a8e7f..49adee0f8b 100644 --- a/packages/playwright-core/types/protocol.d.ts +++ b/packages/playwright-core/types/protocol.d.ts @@ -675,7 +675,7 @@ may be used by the front-end as additional context. request?: AffectedRequest; } export type MixedContentResolutionStatus = "MixedContentBlocked"|"MixedContentAutomaticallyUpgraded"|"MixedContentWarning"; - export type MixedContentResourceType = "AttributionSrc"|"Audio"|"Beacon"|"CSPReport"|"Download"|"EventSource"|"Favicon"|"Font"|"Form"|"Frame"|"Image"|"Import"|"Manifest"|"Ping"|"PluginData"|"PluginResource"|"Prefetch"|"Resource"|"Script"|"ServiceWorker"|"SharedWorker"|"Stylesheet"|"Track"|"Video"|"Worker"|"XMLHttpRequest"|"XSLT"; + export type MixedContentResourceType = "AttributionSrc"|"Audio"|"Beacon"|"CSPReport"|"Download"|"EventSource"|"Favicon"|"Font"|"Form"|"Frame"|"Image"|"Import"|"Manifest"|"Ping"|"PluginData"|"PluginResource"|"Prefetch"|"Resource"|"Script"|"ServiceWorker"|"SharedWorker"|"SpeculationRules"|"Stylesheet"|"Track"|"Video"|"Worker"|"XMLHttpRequest"|"XSLT"; export interface MixedContentIssueDetails { /** * The type of resource causing the mixed content issue (css, js, iframe, @@ -1367,7 +1367,7 @@ events afterwards if enabled and recording. export type PermissionSetting = "granted"|"denied"|"prompt"; /** * Definition of PermissionDescriptor defined in the Permissions API: -https://w3c.github.io/permissions/#dictdef-permissiondescriptor. +https://w3c.github.io/permissions/#dom-permissiondescriptor. */ export interface PermissionDescriptor { /** @@ -2334,6 +2334,10 @@ A higher number has higher priority in the cascade order. * Font's family name reported by platform. */ familyName: string; + /** + * Font's PostScript name reported by platform. + */ + postScriptName: string; /** * Indicates if the font was downloaded or resolved locally. */ @@ -2464,6 +2468,28 @@ stylesheet rules) this rule came from. inherits: boolean; syntax: string; } + /** + * CSS font-palette-values rule representation. + */ + export interface CSSFontPaletteValuesRule { + /** + * The css style sheet identifier (absent for user agent stylesheet and user-specified +stylesheet rules) this rule came from. + */ + styleSheetId?: StyleSheetId; + /** + * Parent stylesheet's origin. + */ + origin: StyleSheetOrigin; + /** + * Associated font palette name. + */ + fontPaletteName: Value; + /** + * Associated style declaration. + */ + style: CSSStyle; + } /** * CSS property at-rule representation. */ @@ -2749,6 +2775,10 @@ attributes) for a DOM node identified by `nodeId`. * A list of CSS property registrations matching this node. */ cssPropertyRegistrations?: CSSPropertyRegistration[]; + /** + * A font-palette-values rule matching this node. + */ + cssFontPaletteValuesRule?: CSSFontPaletteValuesRule; /** * Id of the first parent element that does not have display: contents. */ @@ -5615,6 +5645,12 @@ A display feature that only splits content will have a 0 mask_length. */ maskLength: number; } + export interface DevicePosture { + /** + * Current posture of the device + */ + type: "continuous"|"folded"; + } export interface MediaFeature { name: string; value: string; @@ -5834,6 +5870,11 @@ change is not observed by the page, e.g. viewport-relative elements do not chang is turned-off. */ displayFeature?: DisplayFeature; + /** + * If set, the posture of a foldable device. If not set the posture is set +to continuous. + */ + devicePosture?: DevicePosture; } export type setDeviceMetricsOverrideReturnValue = { } @@ -6105,7 +6146,7 @@ on Android. */ userAgent: string; /** - * Browser langugage to emulate. + * Browser language to emulate. */ acceptLanguage?: string; /** @@ -8131,6 +8172,9 @@ records. * The reason why Chrome uses a specific transport protocol for HTTP semantics. */ export type AlternateProtocolUsage = "alternativeJobWonWithoutRace"|"alternativeJobWonRace"|"mainJobWonRace"|"mappingMissing"|"broken"|"dnsAlpnH3JobWonWithoutRace"|"dnsAlpnH3JobWonRace"|"unspecifiedReason"; + export interface ServiceWorkerRouterInfo { + ruleIdMatched: number; + } /** * HTTP response data. */ @@ -8195,6 +8239,10 @@ records. * Specifies that the request was served from the prefetch cache. */ fromPrefetchCache?: boolean; + /** + * Infomation about how Service Worker Static Router was used. + */ + serviceWorkerRouterInfo?: ServiceWorkerRouterInfo; /** * Total number of bytes received for this request so far. */ @@ -9957,7 +10005,7 @@ continueInterceptedRequest call. */ userAgent: string; /** - * Browser langugage to emulate. + * Browser language to emulate. */ acceptLanguage?: string; /** @@ -10889,7 +10937,7 @@ as an ad. * All Permissions Policy features. This enum should match the one defined in third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5. */ - export type PermissionsPolicyFeature = "accelerometer"|"ambient-light-sensor"|"attribution-reporting"|"autoplay"|"bluetooth"|"browsing-topics"|"camera"|"ch-dpr"|"ch-device-memory"|"ch-downlink"|"ch-ect"|"ch-prefers-color-scheme"|"ch-prefers-reduced-motion"|"ch-prefers-reduced-transparency"|"ch-rtt"|"ch-save-data"|"ch-ua"|"ch-ua-arch"|"ch-ua-bitness"|"ch-ua-platform"|"ch-ua-model"|"ch-ua-mobile"|"ch-ua-form-factor"|"ch-ua-full-version"|"ch-ua-full-version-list"|"ch-ua-platform-version"|"ch-ua-wow64"|"ch-viewport-height"|"ch-viewport-width"|"ch-width"|"clipboard-read"|"clipboard-write"|"compute-pressure"|"cross-origin-isolated"|"direct-sockets"|"display-capture"|"document-domain"|"encrypted-media"|"execution-while-out-of-viewport"|"execution-while-not-rendered"|"focus-without-user-activation"|"fullscreen"|"frobulate"|"gamepad"|"geolocation"|"gyroscope"|"hid"|"identity-credentials-get"|"idle-detection"|"interest-cohort"|"join-ad-interest-group"|"keyboard-map"|"local-fonts"|"magnetometer"|"microphone"|"midi"|"otp-credentials"|"payment"|"picture-in-picture"|"private-aggregation"|"private-state-token-issuance"|"private-state-token-redemption"|"publickey-credentials-get"|"run-ad-auction"|"screen-wake-lock"|"serial"|"shared-autofill"|"shared-storage"|"shared-storage-select-url"|"smart-card"|"storage-access"|"sync-xhr"|"unload"|"usb"|"vertical-scroll"|"web-share"|"window-management"|"window-placement"|"xr-spatial-tracking"; + export type PermissionsPolicyFeature = "accelerometer"|"ambient-light-sensor"|"attribution-reporting"|"autoplay"|"bluetooth"|"browsing-topics"|"camera"|"ch-dpr"|"ch-device-memory"|"ch-downlink"|"ch-ect"|"ch-prefers-color-scheme"|"ch-prefers-reduced-motion"|"ch-prefers-reduced-transparency"|"ch-rtt"|"ch-save-data"|"ch-ua"|"ch-ua-arch"|"ch-ua-bitness"|"ch-ua-platform"|"ch-ua-model"|"ch-ua-mobile"|"ch-ua-form-factor"|"ch-ua-full-version"|"ch-ua-full-version-list"|"ch-ua-platform-version"|"ch-ua-wow64"|"ch-viewport-height"|"ch-viewport-width"|"ch-width"|"clipboard-read"|"clipboard-write"|"compute-pressure"|"cross-origin-isolated"|"direct-sockets"|"display-capture"|"document-domain"|"encrypted-media"|"execution-while-out-of-viewport"|"execution-while-not-rendered"|"focus-without-user-activation"|"fullscreen"|"frobulate"|"gamepad"|"geolocation"|"gyroscope"|"hid"|"identity-credentials-get"|"idle-detection"|"interest-cohort"|"join-ad-interest-group"|"keyboard-map"|"local-fonts"|"magnetometer"|"microphone"|"midi"|"otp-credentials"|"payment"|"picture-in-picture"|"private-aggregation"|"private-state-token-issuance"|"private-state-token-redemption"|"publickey-credentials-get"|"run-ad-auction"|"screen-wake-lock"|"serial"|"shared-autofill"|"shared-storage"|"shared-storage-select-url"|"smart-card"|"storage-access"|"sync-xhr"|"unload"|"usb"|"usb-unrestricted"|"vertical-scroll"|"web-printing"|"web-share"|"window-management"|"window-placement"|"xr-spatial-tracking"; /** * Reason for a permissions policy feature to be disabled. */ @@ -11988,19 +12036,6 @@ as an ad. Only sent if frame is labelled as an ad and id is available. */ adScriptId?: AdScriptId; } - /** - * Returns all browser cookies for the page and all of its subframes. Depending -on the backend support, will return detailed cookie information in the -`cookies` field. - */ - export type getCookiesParameters = { - } - export type getCookiesReturnValue = { - /** - * Array of cookie objects. - */ - cookies: Network.Cookie[]; - } /** * Returns present frame tree structure. */ @@ -12250,6 +12285,10 @@ in which case the content will be scaled to fit the paper size. * Whether or not to generate tagged (accessible) PDF. Defaults to embedder choice. */ generateTaggedPDF?: boolean; + /** + * Whether or not to embed the document outline into the PDF. + */ + generateDocumentOutline?: boolean; } export type printToPDFReturnValue = { /** @@ -13228,6 +13267,7 @@ For cached script it is the last time the cache entry was validated. scriptResponseTime?: number; controlledClients?: Target.TargetID[]; targetId?: Target.TargetID; + routerRules?: string; } /** * ServiceWorker error message. @@ -13510,6 +13550,14 @@ SharedStorageAccessType.workletSet. */ ends: number[]; } + export interface AttributionReportingTriggerSpec { + /** + * number instead of integer because not all uint32 can be represented by +int + */ + triggerData: number[]; + eventReportWindows: AttributionReportingEventReportWindows; + } export type AttributionReportingTriggerDataMatching = "exact"|"modulus"; export interface AttributionReportingSourceRegistration { time: Network.TimeSinceEpoch; @@ -13517,7 +13565,7 @@ SharedStorageAccessType.workletSet. * duration in seconds */ expiry: number; - eventReportWindows: AttributionReportingEventReportWindows; + triggerSpecs: AttributionReportingTriggerSpec[]; /** * duration in seconds */ @@ -15623,6 +15671,18 @@ Otherwise, they will not be resolved. Defaults to true. Defaults to false. */ isUserVerified?: boolean; + /** + * Credentials created by this authenticator will have the backup +eligibility (BE) flag set to this value. Defaults to false. +https://w3c.github.io/webauthn/#sctn-credential-backup + */ + defaultBackupEligibility?: boolean; + /** + * Credentials created by this authenticator will have the backup state +(BS) flag set to this value. Defaults to false. +https://w3c.github.io/webauthn/#sctn-credential-backup + */ + defaultBackupState?: boolean; } export interface Credential { credentialId: binary; @@ -16093,6 +16153,14 @@ status is shared by prefetchStatusUpdated and prerenderStatusUpdated. filter out the ones that aren't necessary to the developers. */ export type PrefetchStatus = "PrefetchAllowed"|"PrefetchFailedIneligibleRedirect"|"PrefetchFailedInvalidRedirect"|"PrefetchFailedMIMENotSupported"|"PrefetchFailedNetError"|"PrefetchFailedNon2XX"|"PrefetchFailedPerPageLimitExceeded"|"PrefetchEvicted"|"PrefetchHeldback"|"PrefetchIneligibleRetryAfter"|"PrefetchIsPrivacyDecoy"|"PrefetchIsStale"|"PrefetchNotEligibleBrowserContextOffTheRecord"|"PrefetchNotEligibleDataSaverEnabled"|"PrefetchNotEligibleExistingProxy"|"PrefetchNotEligibleHostIsNonUnique"|"PrefetchNotEligibleNonDefaultStoragePartition"|"PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy"|"PrefetchNotEligibleSchemeIsNotHttps"|"PrefetchNotEligibleUserHasCookies"|"PrefetchNotEligibleUserHasServiceWorker"|"PrefetchNotEligibleBatterySaverEnabled"|"PrefetchNotEligiblePreloadingDisabled"|"PrefetchNotFinishedInTime"|"PrefetchNotStarted"|"PrefetchNotUsedCookiesChanged"|"PrefetchProxyNotAvailable"|"PrefetchResponseUsed"|"PrefetchSuccessfulButNotUsed"|"PrefetchNotUsedProbeFailed"; + /** + * Information of headers to be displayed when the header mismatch occurred. + */ + export interface PrerenderMismatchedHeaders { + headerName: string; + initialValue?: string; + activationValue?: string; + } /** * Upsert. Currently, it is only emitted when a rule set added. @@ -16139,6 +16207,7 @@ filter out the ones that aren't necessary to the developers. that is incompatible with prerender and has caused the cancellation of the attempt. */ disallowedMojoInterface?: string; + mismatchedHeaders?: PrerenderMismatchedHeaders[]; } /** * Send a list of sources for all preloading attempts in a document. @@ -16168,9 +16237,13 @@ whether this account has ever been used to sign in to this RP before. */ export type LoginState = "SignIn"|"SignUp"; /** - * Whether the dialog shown is an account chooser or an auto re-authentication dialog. + * The types of FedCM dialogs. */ - export type DialogType = "AccountChooser"|"AutoReauthn"|"ConfirmIdpLogin"; + export type DialogType = "AccountChooser"|"AutoReauthn"|"ConfirmIdpLogin"|"Error"; + /** + * The buttons on the FedCM dialog. + */ + export type DialogButton = "ConfirmIdpLoginContinue"|"ErrorGotIt"|"ErrorMoreDetails"; /** * Corresponds to IdentityRequestAccount */ @@ -16201,6 +16274,13 @@ RP context was used appropriately. title: string; subtitle?: string; } + /** + * Triggered when a dialog is closed, either by user action, JS abort, +or a command below. + */ + export type dialogClosedPayload = { + dialogId: string; + } export type enableParameters = { /** @@ -16222,14 +16302,11 @@ normally happen, if this is unimportant to what's being tested. } export type selectAccountReturnValue = { } - /** - * Only valid if the dialog type is ConfirmIdpLogin. Acts as if the user had -clicked the continue button. - */ - export type confirmIdpLoginParameters = { + export type clickDialogButtonParameters = { dialogId: string; + dialogButton: DialogButton; } - export type confirmIdpLoginReturnValue = { + export type clickDialogButtonReturnValue = { } export type dismissDialogParameters = { dialogId: string; @@ -19044,6 +19121,7 @@ Error was thrown. "Preload.prerenderStatusUpdated": Preload.prerenderStatusUpdatedPayload; "Preload.preloadingAttemptSourcesUpdated": Preload.preloadingAttemptSourcesUpdatedPayload; "FedCm.dialogShown": FedCm.dialogShownPayload; + "FedCm.dialogClosed": FedCm.dialogClosedPayload; "Console.messageAdded": Console.messageAddedPayload; "Debugger.breakpointResolved": Debugger.breakpointResolvedPayload; "Debugger.paused": Debugger.pausedPayload; @@ -19401,7 +19479,6 @@ Error was thrown. "Page.getManifestIcons": Page.getManifestIconsParameters; "Page.getAppId": Page.getAppIdParameters; "Page.getAdScriptId": Page.getAdScriptIdParameters; - "Page.getCookies": Page.getCookiesParameters; "Page.getFrameTree": Page.getFrameTreeParameters; "Page.getLayoutMetrics": Page.getLayoutMetricsParameters; "Page.getNavigationHistory": Page.getNavigationHistoryParameters; @@ -19562,7 +19639,7 @@ Error was thrown. "FedCm.enable": FedCm.enableParameters; "FedCm.disable": FedCm.disableParameters; "FedCm.selectAccount": FedCm.selectAccountParameters; - "FedCm.confirmIdpLogin": FedCm.confirmIdpLoginParameters; + "FedCm.clickDialogButton": FedCm.clickDialogButtonParameters; "FedCm.dismissDialog": FedCm.dismissDialogParameters; "FedCm.resetCooldown": FedCm.resetCooldownParameters; "Console.clearMessages": Console.clearMessagesParameters; @@ -19980,7 +20057,6 @@ Error was thrown. "Page.getManifestIcons": Page.getManifestIconsReturnValue; "Page.getAppId": Page.getAppIdReturnValue; "Page.getAdScriptId": Page.getAdScriptIdReturnValue; - "Page.getCookies": Page.getCookiesReturnValue; "Page.getFrameTree": Page.getFrameTreeReturnValue; "Page.getLayoutMetrics": Page.getLayoutMetricsReturnValue; "Page.getNavigationHistory": Page.getNavigationHistoryReturnValue; @@ -20141,7 +20217,7 @@ Error was thrown. "FedCm.enable": FedCm.enableReturnValue; "FedCm.disable": FedCm.disableReturnValue; "FedCm.selectAccount": FedCm.selectAccountReturnValue; - "FedCm.confirmIdpLogin": FedCm.confirmIdpLoginReturnValue; + "FedCm.clickDialogButton": FedCm.clickDialogButtonReturnValue; "FedCm.dismissDialog": FedCm.dismissDialogReturnValue; "FedCm.resetCooldown": FedCm.resetCooldownReturnValue; "Console.clearMessages": Console.clearMessagesReturnValue;