Pavel Feldman
cd70d51aa8
chore: remove redundant check for highlight liveness ( #28108 )
...
Closes https://github.com/microsoft/playwright/issues/28002
2023-11-13 11:44:25 -08:00
Pavel Feldman
db38f0d2df
chore: flag text mismatch when editing ( #28106 )
2023-11-13 11:44:06 -08:00
Dmitry Gozman
120f0228c5
feat(selector generator): try improving text candidate with heuristics ( #28074 )
...
- Drop number-like prefixes and/or suffixes.
- Trim long texts to a word boundary around 15-25 character.
2023-11-13 11:30:16 -08:00
Mattias Wallander
c6d154f9c4
feat: Add support for dispatching device motion events ( #28067 )
...
References #27887 .
2023-11-13 08:58:46 -08:00
Pavel Feldman
1b3349d091
chore: use codemirror in the on-hover locator editor ( #28090 )
2023-11-10 22:00:28 -08:00
Pavel Feldman
b004c1a0a7
chore: rework assert dialog ( #28043 )
2023-11-08 20:09:58 -08:00
Max Schmitt
5f527fedb1
fix: JSHandle preview text for non-ascii attributes/children ( #28038 )
...
This surfaced in .NET that the string in the driver got incorrectly cut,
then transferred to .NET as an invalid UTF8 character
[`\ud835`](https://charbase.com/d835-unicode-invalid-character ) which
.NET wasn't able to parse and threw an error.
Drive-by: Move similar function from
`packages/playwright-core/src/client/page.ts` into isomorphic
`stringUtils`.
https://github.com/microsoft/playwright-dotnet/issues/2748
2023-11-09 00:11:01 +01:00
Mattias Wallander
5a9fa69c6d
feat: Add support for dispatching device orientation events ( #27960 )
...
Fixes #27887
2023-11-08 09:50:25 -08:00
Pavel Feldman
061ded19b6
chore: place overlay inside the glass pane ( #28026 )
2023-11-07 19:36:12 -08:00
Pavel Feldman
eeda25c47f
chore(recorder): glue the overlay to the top ( #28021 )
2023-11-07 12:58:41 -08:00
Dmitry Gozman
810382c074
chore(recorder): more UX fixes for text assertions ( #27995 )
2023-11-06 16:40:33 -08:00
Dmitry Gozman
ffd2e02aa3
feat(recorder): various UX fixes ( #27967 )
2023-11-04 21:18:27 -07:00
Dmitry Gozman
f401a482d2
fix(codegen): consume pointer events alongside mouse events ( #27949 )
...
Fixes #27926 .
2023-11-03 13:41:51 -07:00
Dmitry Gozman
a7fd515626
chore(recorder): use designMode for text selection tool ( #27936 )
...
This allows us to barely support shadow dom, compared to no support at
all.
2023-11-02 13:47:53 -07:00
Dmitry Gozman
07da88dcf1
feat(recorder): generate toHaveValue/toBeEmpty/toBeChecked ( #27913 )
2023-11-01 21:17:25 -07:00
Dmitry Gozman
3dedbced13
feat(recorder): in-page overlay ( #27904 )
2023-11-01 15:56:49 -07:00
Yury Semikhatsky
36c4c24f8a
fix: only convert input files for browser collocated with server ( #27873 )
...
Reference #27452
Fixes #27792
2023-11-01 08:40:12 -07:00
Max Schmitt
59b8cf008e
fix(codegen): don't generate page.frame() calls anymore ( #27820 )
...
Fixes https://github.com/microsoft/playwright/issues/27650
2023-10-30 21:56:45 +01:00
Dmitry Gozman
4d8dd55b90
chore: refactor Recorder, introduce RecorderTool ( #27826 )
2023-10-26 19:42:03 -07:00
Dmitry Gozman
24deac458b
feat(expect): generate toHaveText ( #27824 )
2023-10-26 18:49:14 -07:00
Dmitry Gozman
d1d5fc67dc
fix(recorder): show action point in main frame only ( #27719 )
2023-10-20 20:58:09 -07:00
Pavel Feldman
b807c974c3
chore: allow passing path to property in toHaveJSProperty ( #27495 )
...
Fixes https://github.com/microsoft/playwright/issues/27487
2023-10-06 15:47:07 -07:00
Jim Hays
dcc8dcca73
Fix various typos ( Fixes #27396 ) ( #27391 )
...
Fixes https://github.com/microsoft/playwright/issues/27396
2023-10-04 19:56:42 -07:00
Yury Semikhatsky
ac48a47d33
feat: toHaveAttribute without value ( #27418 )
...
This time not doing it in other languages due to unjustified generator
complexity.
Fixes #27341
2023-10-04 09:27:28 -07:00
Pavel Feldman
ae08d03d75
fix(role): compute <output> accessible name from labels ( #27415 )
...
Fixes: https://github.com/microsoft/playwright/issues/27403
2023-10-03 13:01:13 -07:00
Pavel Feldman
d65da74b8f
fix(trace): allow typing in selector w/ frames ( #26919 )
2023-09-06 16:14:40 -07:00
Pavel Feldman
b4012df160
fix(trace): make locator picker work for iframes ( #26883 )
...
Fixes https://github.com/microsoft/playwright/issues/26878
2023-09-06 09:44:47 -07:00
Dmitry Gozman
741c649d56
fix(trace viewer): make sure target inside shadow dom is highlighted ( #26823 )
...
References #24532 .
2023-08-31 12:46:49 -07:00
Dmitry Gozman
0ecc13038f
fix(textContent): make it work for ShadowRoot ( #26690 )
...
It used to work, but regressed in v1.36.
Fixes #26636 .
2023-08-24 12:59:42 -07:00
Dmitry Gozman
44d3770559
fix(selector generator): escape all tag names in css selectors ( #26659 )
...
Fixes #26657 .
2023-08-23 12:32:08 -07:00
Pavel Feldman
33d62d9a97
chore: do not use relative xpath when querying from document ( #24405 )
...
Fixes https://github.com/microsoft/playwright/issues/24399
2023-07-25 12:55:35 -07:00
Dmitry Gozman
97d55e275d
fix(locator): locator(locator) method uses internal:chain instead of >> ( #24235 )
...
Usually, we can just chain two locators with `>>` to implement
`Locator.locator(locator)`. However, this does not play nicely with more
advanced inner locators like `or` and `and`:
```ts
const child = page.locator('input').or(page.locator('button'));
page.locator('parent').locator(child);
```
One would expect the above to locate "input or button" inside a
"parent". However, currently it locates "input inside a parent" or
"button", because it's translated to `parent >> input >>
internal:or="button"`.
To fix this, we have to wrap inner locator into `internal:chain` and
query it separately from the parent.
Fixes #23724 .
2023-07-14 12:21:45 -07:00
Dmitry Gozman
5821c547aa
fix(selector generator): use the same label definition as getByLabel ( #23846 )
...
This extracts `getElementLabels` helper function to be used both for
generating and querying.
2023-06-22 08:34:08 -07:00
Dmitry Gozman
fe5c9dad4d
fix(locators): allow identical frameLocators inside and/or/has ( #23740 )
...
So, the following will work:
```
page.frameLocator('iframe').locator('span').or(page.frameLoactor('iframe').locator('div'))
```
The following will not work, because frame locators are not exactly the
same:
```
page.frameLocator('#iframe1').locator('span').or(page.frameLoactor('#iframe2').locator('div'))
```
Also improve the error message to be more readable and include the
locator.
Fixes #23697 .
2023-06-19 15:22:26 -07:00
Max Schmitt
0f9f863183
fix(codegen): generate no Enter keyboard events for textareas ( #23775 )
...
Fixes https://github.com/microsoft/playwright/issues/23774
2023-06-19 17:07:37 +02:00
Dmitry Gozman
de422b5afb
chore: speedup multiple roleUtils calls ( #23745 )
...
When generating a selector, we tend to match by role and call various
roleUtils methods multiple times.
Apply the usual pattern for "nested operations counter" and aggressively
cache the results.
2023-06-16 11:39:39 -07:00
Dmitry Gozman
d11bc88784
chore(codegen): do not use accessible name for non-text selectors ( #23717 )
...
Accessible name usually includes text, so we don't want it for non-text
selectors, e.g. for `expect()` selectors.
2023-06-15 12:30:18 -07:00
Dmitry Gozman
5b2e8a6a7a
chore: optional root for generateSelector ( #23692 )
2023-06-13 21:25:39 -07:00
Dmitry Gozman
c80a23842b
fix(css): relative-to-scope selectors work ( #23665 )
...
Chained selectors where the second part starts with a scope did not work
before:
```ts
page.locator('div').locator(':scope + span')
page.locator('div >> +span')
```
2023-06-13 10:27:25 -07:00
Dmitry Gozman
11659ceb73
fix(role): handle display:contents elements ( #23607 )
...
Fixes #23521 .
2023-06-08 16:00:48 -07:00
Andrey Lushnikov
3a00fc4edf
fix: call focus() twice to workaround firefox not focusing element ( #23535 )
...
When focus is moved from one tab to another, it might require calling
`focus()` twice to actually focus an element in Firefox.
Fixes https://github.com/microsoft/playwright/issues/23117
2023-06-05 16:46:52 -07:00
João Neves
7e6e5f0706
feat: Support React forwards refs and memo ( #23262 )
...
This PR fixes the react selector behavior to support components that are
wrapped by the memo or forwardRef React builtin functions.
Previously these components couldn't be selected. This PR fixes that
behavior, enabling selecting those components.
Current behavior:
```
const Foo = memo(() => <div id="foo_component" />);
Foo.displayName = "Foo";
...
playwright.$("_react=Foo") -> undefined
```
Fixed behavior:
```
const Foo = memo(() => <div id="foo_component" />);
Foo.displayName = "Foo";
...
playwright.$("_react=Foo") -> <div id ="foo_component" />
```
2023-05-30 17:14:47 -07:00
Max Schmitt
13f70b6d89
chore: have type modifiers directly on file import ( #23337 )
2023-05-30 21:11:35 +02:00
Max Schmitt
f819b1c72d
fix: trace viewer with global applied background-color ( #23362 )
...
Fixes https://github.com/microsoft/playwright/issues/23275
2023-05-30 17:58:29 +02:00
Jasiel Guillén
700062c836
feat(screenshot): Add customizable color option for masked elements ( #23185 )
...
I added a new option to the screenshot method to customize the color of
the box when we want to mask some elements for the screenshot.
The default color is pink `#FF00FF`, but with this new option you can
specify the color you like the most, like a nice green `#00FF00`:
```js
await page.screenshot({
mask: [page.locator('div').nth(5)],
maskColor: "#00FF00",
})
```

---------
Signed-off-by: Jasiel Guillén <darkensses@gmail.com>
2023-05-22 18:44:44 -07:00
Dmitry Gozman
62146b946c
fix(codegen): ignore previously hovered detached nodes ( #23057 )
...
Fixes #23043 .
2023-05-16 11:13:19 -07:00
Dmitry Gozman
80f46892cd
fix(getByLabel): ignore empty aria-label ( #22935 )
...
Accessible name computation ignores empty aria-label, and so should
getByLabel.
Fixes #22915 .
2023-05-10 10:38:46 -07:00
Alexander Sorokin
cbf4f39957
fix: React selectors should work after unmount ( #22750 )
...
Fixes #22729
2023-05-10 06:18:01 -07:00
Dmitry Gozman
160888df99
feat(locators): reland locator.and(locator) ( #22850 )
...
Removed in #22223 .
Fixes #22585 .
2023-05-05 11:14:01 -07:00
Dmitry Gozman
ca3629186c
fix(role): fix native controls text alternative when aria-labelledby is present ( #22800 )
...
Fixes #22779 .
2023-05-03 16:09:08 -07:00