goma searches for all `GOMA_*` env variables and fails if it doesn't
understand any.
To avoid this, rename our `GOMA_LOGIN_COOKIE` env variable into a
`PLAYWRIGHT_GOMA_LOGIN_COOKIE`.
- Snap to buttons, inputs, selects, etc.
- Try `<label>` selector in addition to the element.
- Use parent selectors when needed.
- Remove xpath fallback as it should be covered with css.
In our *old world*, browser buildbots were polling repo and were
trying to rebuild browsers every 5 minutes. They relied on the presence
of either build or build log on the CDN to avoid continiously
re-building.
In the new world, we trigger builds only when we change the
`BUILD_NUMBER` files, so there's no polling any more.
This patch removes the check for log presence so that those builds that
were failing due to misconfiguration (e.g. Visual Studio license
required updated) could be restarted just from the GitHub UI.
* docs(api): stock browsers for media codecs
* Update docs/src/api/class-browsertype.md
Co-authored-by: Max Schmitt <max@schmitt.mx>
* Update docs/src/api/class-browsertype.md
Co-authored-by: Max Schmitt <max@schmitt.mx>
Co-authored-by: Max Schmitt <max@schmitt.mx>
Compressed dashboard is 10 times smaller yet has all the data to
render flakiness.
Drive-by: remove old dashboard implementations since they are no
longer used.
Consider the following situation (one among many possible).
- FrameA has an oopif child FrameB;
- FrameA navigates to same-process origin (e.g. about:blank);
- at the same time, FrameC is attached to the FrameB in the
FrameB's process.
In this case, we get `frameNavigated` event for FrameA, immediately
followed by `frameAttached` event for FrameC. Since we detach all
FrameA's child frames on navigation, including the oopif FrameB,
there is no parent frame for FrameC to attach to.
In general, multiple processes coming from oopif may send their
events in wildly different order, and their view about the frame
tree may not always correspond to the "up to date" frame tree as
seen from the main frame's process. We try to keep our frame tree
aligned with what main process thinks, and ignore events that
reference frames absent in this tree.
Drive-by: handle filechooser exceptions because of async processing.
This changes `text=` and `:text()` selectors to match the element when:
- it's combined text content matches the text;
- combined text content of any immediate child does not match the text.
This allows the following markup to match "Some bold and italics text":
`<div>Some <b>bold</b> and <i>italics</i> text</div>`.
For the reference, "combined text content" is almost equal to `element.textContent`,
but with some changes like using value of `<input type=button>` or ignoring `<head>`.
This also includes some caching optimizations, meaningful in complex matches
that involve multiple calls to the text engine.
Performance changes (measured on large page with ~25000 elements):
- `:has-text()` - 14% faster.
- `text=` - 50% faster.
- `:text()` - 0-35% slower.
- `:text-matches()` - 28% slower.
* docs(gen): Updating events names to camelCase.
* docs(gen): updating generator to match new assumption for event names
* docs(gen): renaming references to events