mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00

Fixes focus and blur management when `page.locator(…).focus()` and `page.locator(…).type(…)` are used which was regressed by 7a5b070 (#13510). #13510 relied on an implicit assumption that this (conditional) [`blur`](7a5b070e95/packages/playwright-core/src/server/injected/injectedScript.ts (L672)
) call would always be followed by a call that resulted in a newly focused element via this [`focus`](7a5b070e95/packages/playwright-core/src/server/injected/injectedScript.ts (L674)
) call. However, some elements are [not focusable](https://html.spec.whatwg.org/multipage/interaction.html#focusable-area), so we were blurring incorrectly, and losing focus that we should have maintained. Two regression tests were added that pass on the commit prior to 7a5b070e9507b622877a2af010373585f2184196 (and match manual testing/expectations): * `page.locator(…).focus()`: _keeps focus on element when attempting to focus a non-focusable element_ * `page.locator(…).type(…)`: _should type repeatedly in input in shadow dom_ Additionally, a third test (_should type repeatedly in input in shadow dom_) was added to check the invariant from #13510 that states: > This affects [contenteditable] elements, but not input elements. and allows us to introduce the targeted fix (contenteditble check before blur) without breaking FF again. And _should type repeatedly in contenteditable in shadow dom with nested elements_ was added to ensure the above fix works with nest contenteditble detection. Fixes #14254.
playwright-core
This package contains the no-browser flavor of Playwright.