From bb241abaff5f510c3396e3200abaddf53d9f9c1f Mon Sep 17 00:00:00 2001 From: Playwright Service <89237858+playwrightmachine@users.noreply.github.com> Date: Wed, 15 Nov 2023 10:34:53 -0800 Subject: [PATCH] feat(webkit): roll to r1944 (#28148) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Max Schmitt --- packages/playwright-core/browsers.json | 2 +- .../playwright-core/src/server/injected/domUtils.ts | 11 ++++++++--- .../src/server/injected/injectedScript.ts | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index 26426381ed..ea205cd268 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -39,7 +39,7 @@ }, { "name": "webkit", - "revision": "1943", + "revision": "1944", "installByDefault": true, "revisionOverrides": { "mac10.14": "1446", diff --git a/packages/playwright-core/src/server/injected/domUtils.ts b/packages/playwright-core/src/server/injected/domUtils.ts index 1b4922c913..b20de88754 100644 --- a/packages/playwright-core/src/server/injected/domUtils.ts +++ b/packages/playwright-core/src/server/injected/domUtils.ts @@ -14,6 +14,11 @@ * limitations under the License. */ +let browserNameForWorkarounds = ''; +export function setBrowserName(name: string) { + browserNameForWorkarounds = name; +} + export function isInsideScope(scope: Node, element: Element | undefined): boolean { while (element) { if (scope.contains(element)) @@ -75,9 +80,9 @@ export function isElementStyleVisibilityVisible(element: Element, style?: CSSSty // Element.checkVisibility checks for content-visibility and also looks at // styles up the flat tree including user-agent ShadowRoots, such as the // details element for example. - // @ts-ignore Typescript doesn't know that checkVisibility exists yet. - if (Element.prototype.checkVisibility) { - // @ts-ignore Typescript doesn't know that checkVisibility exists yet. + // All the browser implement it, but WebKit has a bug which prevents us from using it: + // https://bugs.webkit.org/show_bug.cgi?id=264733 + if (browserNameForWorkarounds !== 'webkit') { if (!element.checkVisibility({ checkOpacity: false, checkVisibilityCSS: false })) return false; } else { diff --git a/packages/playwright-core/src/server/injected/injectedScript.ts b/packages/playwright-core/src/server/injected/injectedScript.ts index fe0affdab4..1c87f8bf42 100644 --- a/packages/playwright-core/src/server/injected/injectedScript.ts +++ b/packages/playwright-core/src/server/injected/injectedScript.ts @@ -24,7 +24,7 @@ import type { NestedSelectorBody, ParsedSelector, ParsedSelectorPart } from '../ import { visitAllSelectorParts, parseSelector, stringifySelector } from '../../utils/isomorphic/selectorParser'; import { type TextMatcher, elementMatchesText, elementText, type ElementText, getElementLabels } from './selectorUtils'; import { SelectorEvaluatorImpl, sortInDOMOrder } from './selectorEvaluator'; -import { enclosingShadowRootOrDocument, isElementVisible, parentElementOrShadowHost } from './domUtils'; +import { enclosingShadowRootOrDocument, isElementVisible, parentElementOrShadowHost, setBrowserName } from './domUtils'; import type { CSSComplexSelectorList } from '../../utils/isomorphic/cssParser'; import { generateSelector, type GenerateSelectorOptions } from './selectorGenerator'; import type * as channels from '@protocol/channels'; @@ -137,6 +137,7 @@ export class InjectedScript { this._stableRafCount = stableRafCount; this._browserName = browserName; + setBrowserName(browserName); this._setupGlobalListenersRemovalDetection(); this._setupHitTargetInterceptors();