diff --git a/README.md b/README.md index ec48c5c919..a13bb09e43 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg?style=flat)](https://www.npmjs.com/package/playwright) [![Join Slack](https://img.shields.io/badge/join-slack-infomational)](https://join.slack.com/t/playwright/shared_invite/enQtOTEyMTUxMzgxMjIwLThjMDUxZmIyNTRiMTJjNjIyMzdmZDA3MTQxZWUwZTFjZjQwNGYxZGM5MzRmNzZlMWI5ZWUyOTkzMjE5Njg1NDg) [![Chromium version](https://img.shields.io/badge/chromium-85.0.4182.0-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-78.0b5-blue.svg?logo=mozilla-firefox)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-14.0-blue.svg?logo=safari)](https://webkit.org/) +[![npm version](https://img.shields.io/npm/v/playwright.svg?style=flat)](https://www.npmjs.com/package/playwright) [![Join Slack](https://img.shields.io/badge/join-slack-infomational)](https://join.slack.com/t/playwright/shared_invite/enQtOTEyMTUxMzgxMjIwLThjMDUxZmIyNTRiMTJjNjIyMzdmZDA3MTQxZWUwZTFjZjQwNGYxZGM5MzRmNzZlMWI5ZWUyOTkzMjE5Njg1NDg) [![Chromium version](https://img.shields.io/badge/chromium-86.0.4197.0-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-78.0b5-blue.svg?logo=mozilla-firefox)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-14.0-blue.svg?logo=safari)](https://webkit.org/) ##### [Docs](docs/README.md) | [API reference](docs/api.md) | [Changelog](https://github.com/microsoft/playwright/releases) @@ -8,7 +8,7 @@ Playwright is a Node library to automate [Chromium](https://www.chromium.org/Hom | | Linux | macOS | Windows | | :--- | :---: | :---: | :---: | -| Chromium 85.0.4182.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Chromium 86.0.4197.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 14.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Firefox 78.0b5 | :white_check_mark: | :white_check_mark: | :white_check_mark: | diff --git a/browsers.json b/browsers.json index f0ce5c6b85..c9e4e9e796 100644 --- a/browsers.json +++ b/browsers.json @@ -3,7 +3,7 @@ "browsers": [ { "name": "chromium", - "revision": "782078" + "revision": "786218" }, { "name": "firefox", diff --git a/src/chromium/protocol.ts b/src/chromium/protocol.ts index 03d337663d..f8dc4864fb 100644 --- a/src/chromium/protocol.ts +++ b/src/chromium/protocol.ts @@ -734,12 +734,25 @@ some CSP errors in the future. */ frame: AffectedFrame; } + export type ContentSecurityPolicyViolationType = "kInlineViolation"|"kEvalViolation"|"kURLViolation"|"kTrustedTypesSinkViolation"|"kTrustedTypesPolicyViolation"; + export interface ContentSecurityPolicyIssueDetails { + /** + * The url not included in allowed sources. + */ + blockedURL?: string; + /** + * Specific directive that is violated, causing the CSP issue. + */ + violatedDirective: string; + contentSecurityPolicyViolationType: ContentSecurityPolicyViolationType; + frameAncestor?: AffectedFrame; + } /** * A unique identifier for the type of issue. Each type may use one of the optional fields in InspectorIssueDetails to convey more specific information about the kind of issue. */ - export type InspectorIssueCode = "SameSiteCookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"; + export type InspectorIssueCode = "SameSiteCookieIssue"|"MixedContentIssue"|"BlockedByResponseIssue"|"HeavyAdIssue"|"ContentSecurityPolicyIssue"; /** * This struct holds a list of optional fields with additional information specific to the kind of issue. When adding a new issue code, please also @@ -750,6 +763,7 @@ add a new optional field to this type. mixedContentIssueDetails?: MixedContentIssueDetails; blockedByResponseIssueDetails?: BlockedByResponseIssueDetails; heavyAdIssueDetails?: HeavyAdIssueDetails; + contentSecurityPolicyIssueDetails?: ContentSecurityPolicyIssueDetails; } /** * An inspector issue reported from the back-end. @@ -2097,6 +2111,17 @@ instrumentation) */ timestamp: number; } + /** + * Enables/disables rendering of local CSS fonts (enabled by default). + */ + export type setLocalFontsEnabledParameters = { + /** + * Whether rendering of local fonts is enabled. + */ + enabled: boolean; + } + export type setLocalFontsEnabledReturnValue = { + } } export module CacheStorage { @@ -8018,6 +8043,10 @@ continueInterceptedRequest call. * Show Negative line number labels (default: false). */ showNegativeLineNumbers?: boolean; + /** + * Show area name labels (default: false). + */ + showAreaNames?: boolean; /** * The grid container border highlight color (default: transparent). */ @@ -8050,6 +8079,10 @@ continueInterceptedRequest call. * The column gap hatching fill color (default: transparent). */ columnHatchColor?: DOM.RGBA; + /** + * The named grid areas border color (Default: transparent). + */ + areaBorderColor?: DOM.RGBA; } /** * Configuration data for the highlighting of page elements. @@ -12148,6 +12181,16 @@ The default is true. } export type setUserVerifiedReturnValue = { } + /** + * Sets whether tests of user presence will succeed immediately (if true) or fail to resolve (if false) for an authenticator. +The default is true. + */ + export type setAutomaticPresenceSimulationParameters = { + authenticatorId: AuthenticatorId; + enabled: boolean; + } + export type setAutomaticPresenceSimulationReturnValue = { + } } /** @@ -14956,6 +14999,7 @@ unsubscribes current runtime agent from Runtime.bindingCalled notifications. "CSS.startRuleUsageTracking": CSS.startRuleUsageTrackingParameters; "CSS.stopRuleUsageTracking": CSS.stopRuleUsageTrackingParameters; "CSS.takeCoverageDelta": CSS.takeCoverageDeltaParameters; + "CSS.setLocalFontsEnabled": CSS.setLocalFontsEnabledParameters; "CacheStorage.deleteCache": CacheStorage.deleteCacheParameters; "CacheStorage.deleteEntry": CacheStorage.deleteEntryParameters; "CacheStorage.requestCacheNames": CacheStorage.requestCacheNamesParameters; @@ -15287,6 +15331,7 @@ unsubscribes current runtime agent from Runtime.bindingCalled notifications. "WebAuthn.removeCredential": WebAuthn.removeCredentialParameters; "WebAuthn.clearCredentials": WebAuthn.clearCredentialsParameters; "WebAuthn.setUserVerified": WebAuthn.setUserVerifiedParameters; + "WebAuthn.setAutomaticPresenceSimulation": WebAuthn.setAutomaticPresenceSimulationParameters; "Media.enable": Media.enableParameters; "Media.disable": Media.disableParameters; "Console.clearMessages": Console.clearMessagesParameters; @@ -15437,6 +15482,7 @@ unsubscribes current runtime agent from Runtime.bindingCalled notifications. "CSS.startRuleUsageTracking": CSS.startRuleUsageTrackingReturnValue; "CSS.stopRuleUsageTracking": CSS.stopRuleUsageTrackingReturnValue; "CSS.takeCoverageDelta": CSS.takeCoverageDeltaReturnValue; + "CSS.setLocalFontsEnabled": CSS.setLocalFontsEnabledReturnValue; "CacheStorage.deleteCache": CacheStorage.deleteCacheReturnValue; "CacheStorage.deleteEntry": CacheStorage.deleteEntryReturnValue; "CacheStorage.requestCacheNames": CacheStorage.requestCacheNamesReturnValue; @@ -15768,6 +15814,7 @@ unsubscribes current runtime agent from Runtime.bindingCalled notifications. "WebAuthn.removeCredential": WebAuthn.removeCredentialReturnValue; "WebAuthn.clearCredentials": WebAuthn.clearCredentialsReturnValue; "WebAuthn.setUserVerified": WebAuthn.setUserVerifiedReturnValue; + "WebAuthn.setAutomaticPresenceSimulation": WebAuthn.setAutomaticPresenceSimulationReturnValue; "Media.enable": Media.enableReturnValue; "Media.disable": Media.disableReturnValue; "Console.clearMessages": Console.clearMessagesReturnValue; diff --git a/test/headful.spec.js b/test/headful.spec.js index 388e209802..0297fd362f 100644 --- a/test/headful.spec.js +++ b/test/headful.spec.js @@ -79,7 +79,7 @@ describe('Headful', function() { await page.click('button'); await browser.close(); }); - it.fail(CHROMIUM && MAC)('should close browser after context menu was triggered', async({browserType, defaultBrowserOptions, server}) => { + it('should close browser after context menu was triggered', async({browserType, defaultBrowserOptions, server}) => { const browser = await browserType.launch({...defaultBrowserOptions, headless: false }); const page = await browser.newPage(); await page.goto(server.PREFIX + '/grid.html'); diff --git a/test/keyboard.spec.ts b/test/keyboard.spec.ts index ee4979ed34..20858032c3 100644 --- a/test/keyboard.spec.ts +++ b/test/keyboard.spec.ts @@ -17,7 +17,7 @@ import utils from './utils'; import type { Page } from '..'; -const {FFOX, WEBKIT, MAC} = utils.testOptions(browserType); +const {FFOX, WEBKIT, CHROMIUM, MAC} = utils.testOptions(browserType); describe('Keyboard', function() { it('should type into a textarea', async ({page, server}) => { await page.evaluate(() => { @@ -289,7 +289,7 @@ describe('Keyboard', function() { await textarea.type('👹 Tokyo street Japan 🇯🇵'); expect(await frame.$eval('textarea', textarea => textarea.value)).toBe('👹 Tokyo street Japan 🇯🇵'); }); - it('should handle selectAll', async ({page, server}) => { + it.skip(CHROMIUM && MAC)('should handle selectAll', async ({page, server}) => { await page.goto(server.PREFIX + '/input/textarea.html'); const textarea = await page.$('textarea'); await textarea.type('some text');