Commit Graph

55 Commits

Author SHA1 Message Date
Joe Gomain Hoyes
bef1061c06
feat(puppeteer-core): Infer element type from complex selector (#9253)
**What kind of change does this PR introduce?**

Better type inference.

**Did you add tests for your changes?**

~Not yet.~ Yes.

**If relevant, did you update the documentation?**

Not yet.

**Summary**

<!-- Explain the **motivation** for making this change. What existing
problem does the pull request solve? -->
<!-- Try to link to an open issue for more information. -->
Currently methods that return an element handle, i.e. `.$`,
`.waitForSelector` attempt to infer the node element type from the
selector string. However, this only works when the selector is an exact
match of the element tag, i.e. a selector `"a"` would be inferred as
`HTMLAnchorElement` . And not when the selector is complex, i.e.
selectors `"a#some-id"`, `div > a`, `a:nth-child(2)` would all fallback
on `Element`.

This is due to simply looking up the the selector in
`HTMLElementTagNameMap` and `SVGElementTagNameMap` without any attempt
to parse the selector string.

This PR is an attempt to do so.

**Does this PR introduce a breaking change?**

<!-- If this PR introduces a breaking change, please describe the impact
and a migration path for existing applications. -->
This could break existing incorrect assertions using the `as` keyword.

**Other information**

~This PR introduces a dependency on the `type-fest` package.~

This PR is far from complete (no tests, no docs). Put out early for
feedback and discussion.

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2022-11-23 10:59:23 +01:00
Nikolay Vitkov
16784fc8cb chore(ng-schematics): Update ng e2e to custom builder (#9300)
**What kind of change does this PR introduce?**

This replaces the default `ng e2e` with our custom builder. In the
feature it seem possible to remove the necessity of the user running the
server separately and run it from the builder - that will improve the
easy of use and CI of this schematic.

**Did you add tests for your changes?**

**If relevant, did you update the documentation?**

Yes - Updated `@puppeteer/ng-schematics` README.md

**Summary**

We want to not see the default `ng e2e` and we want to make it easier
for the user to run commands.
Angular Developer are likely to also use its' CLI.

**Does this PR introduce a breaking change?**

Yes. Users need to delete the default and initialize the schematics
again.

**Other information**
2022-11-22 19:52:29 +01:00
Guillaume Gomez
0a2d310e4e
docs: fix typo in Viewport fields (#9293)
The `deviceScalarFactor` field of `Viewport` is actually named
`deviceScaleFactor`.
2022-11-17 17:27:07 +01:00
Alex Rudenko
078d385671
chore(ng-schematics): publish v0.0.1 (#9290) 2022-11-17 10:22:53 +01:00
Nikolay Vitkov
be33929770
feat(ng-schematics): Release @puppeteer/ng-schematics (#9244)
**What kind of change does this PR introduce?**

Adds `@puppeteer/ng-schematics` to the list of packages to be published
to `npm`

**Did you add tests for your changes?**

Not relevant.

**If relevant, did you update the documentation?**

Not for in this PR.

**Summary**

We want to publish to `npm` so people can do `ng add
@puppeteer/ng-schematics` and use it with Angular CLI.

**Does this PR introduce a breaking change?**

No

**Other information**
2022-11-14 18:24:17 +01:00
Nikolay Vitkov
1b3dfeca98
chore: Update ng-schemactics README (#9269)
**What kind of change does this PR introduce?**

Updates the README for `@puppeteer/ng-schematics` with better
information. Fixes broken command
2022-11-14 15:18:03 +01:00
Nikolay Vitkov
57f7366eb8
chore: Add Node testing option in ng-schematics (#9266)
**What kind of change does this PR introduce?**

It lets Users create an schematic for Puppeteer in Angular project using
Node's new test runner.

**Did you add tests for your changes?**

Yes. Unit test for module.

**If relevant, did you update the documentation?**

No

**Summary**

**Does this PR introduce a breaking change?**

No

**Other information**
2022-11-14 12:57:42 +01:00
jrandolf
e003513c0c
fix: remove boundary conditions for visibility (#9249)
Fixed: https://github.com/puppeteer/puppeteer/issues/9232
2022-11-14 09:34:07 +01:00
Nikolay Vitkov
86abe68849
chore: Add Mocha option to ng-schematic (#9259)
**What kind of change does this PR introduce?**

Adds Mocha as option for `ng-schematics`

**Did you add tests for your changes?**

Yes

**If relevant, did you update the documentation?**

No

**Summary**

User want a simple solution for the Testing library of their choose 

**Does this PR introduce a breaking change?**

No

**Other information**
There are some improvements around the Babel that we can make so we
don't have duplicate code and files (In a Feature PR)
2022-11-14 09:30:49 +01:00
Nikolay Vitkov
1bbecb3bae
chore: Add Jest as a ng-schematics option (#9257)
**What kind of change does this PR introduce?**

Adds Jest in `ng-schematics`. So you can scaffold test with Jest instead
of Jasmine

**Did you add tests for your changes?**

Yes

**If relevant, did you update the documentation?**

No

**Summary**

Users can more easily integrate test with Puppeteer and their library of
choose.

**Does this PR introduce a breaking change?**

No

**Other information**
2022-11-11 14:38:52 +01:00
Alex Rudenko
30c6b13eec
chore: re-export all exports (#9241)
Adds index files to subfolders and removes generation of types.ts in
puppeteer-core.
2022-11-10 17:11:18 +01:00
Alex Rudenko
ae87bfc2b4
feat(puppeteer-core): update Chrome launcher flags (#9239)
This PR adds:
- `--disable-component-update`
- `--disable-features=MediaRouter`
- `--disable-features=OptimizationHints`

and removes `--disable-features=AvoidUnnecessaryBeforeUnloadCheckSync`.

See
https://github.com/GoogleChrome/chrome-launcher/blob/main/docs/chrome-flags-for-tools.md
2022-11-10 11:43:37 +01:00
Nikolay Vitkov
3f2c0590f1
chore(ng-schematics): Add Angular Schematics (#9222)
**What kind of change does this PR introduce?**

It introduces schematic for Angular that integrate with its CLI.
First revision support Jasmine.

**Did you add tests for your changes?**

Added Unit tests for each scenario. 

**Summary**

The idea is to provide a an example for setting up Puppeteer and Angular
for testing user flows.

**Does this PR introduce a breaking change?**

No

**Other information**

For Feature PRs:

- Introduce CL for tests
- Hook up NPM package publishing
- Update README.md
2022-11-09 14:52:10 +01:00
release-please[bot]
30e5b1a58e
chore: release main (#9210) 2022-11-03 11:02:28 +01:00
jrandolf
29f47e2e15
fix: update missing product message (#9207)
This PR updates the error message printed when a browser cannot be
found.

Related: https://github.com/puppeteer/puppeteer/issues/9192,
https://github.com/puppeteer/puppeteer/issues/9162
2022-11-03 09:32:17 +01:00
jrandolf
a9bde8e726
chore: update puppeteer changelog (#9200) 2022-11-02 11:42:37 +01:00
release-please[bot]
990635abc9
chore: release main (#9184)
🤖 I have created a release *beep* *boop*
---


<details><summary>puppeteer: 19.2.1</summary>

### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * puppeteer-core bumped from 19.2.0 to ^19.2.1
</details>

<details><summary>puppeteer-core: 19.2.1</summary>

##
[19.2.1](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v19.2.0...puppeteer-core-v19.2.1)
(2022-10-28)


### Bug Fixes

* resolve navigation requests when request fails
([#9178](https://github.com/puppeteer/puppeteer/issues/9178))
([c11297b](c11297baa5)),
closes [#9175](https://github.com/puppeteer/puppeteer/issues/9175)
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
2022-11-02 10:54:37 +01:00
Alex Rudenko
c11297baa5
fix: resolve navigation requests when request fails (#9178)
#8768 fixes flakiness in handling navigations but it didn't account for
the fact that subsequent navigation requests could be aborted via the
request interception. In that case, the navigationResponseReceived
promise would never be resolved. This PR adds a listener for the failed
network requests and resolves the promise if the network request has
failed. Adding test coverage for this seems tricky, as the reproduction
depends on timing of the second navigation request.

Closes #9175
2022-10-28 09:56:06 +02:00
release-please[bot]
4ef83e0ee6
chore: release main (#9168) 2022-10-26 09:51:16 +02:00
dependabot[bot]
e19dd6c92c
chore(deps): bump ws from 8.9.0 to 8.10.0 (#9159) 2022-10-25 15:31:48 +02:00
Alex Rudenko
e78a4e89c2
feat(chromium): roll to Chromium 108.0.5351.0 (r1056772) (#9153) 2022-10-25 12:55:19 +02:00
release-please[bot]
fe4fcf6019
chore: release main (#9161) 2022-10-25 11:12:17 +02:00
jrandolf
2245d7d6ed
fix: skip browser download (#9160)
Fixed: https://github.com/puppeteer/puppeteer/issues/9158
2022-10-25 11:02:40 +02:00
Randolf
088c18c842 chore: update changelog 2022-10-25 10:26:33 +02:00
release-please[bot]
b020c5746d
chore: release main (#9156) 2022-10-24 16:31:12 +02:00
jrandolf
95d77c679c
chore: revert "chore: release main" (#9155)
Reverts puppeteer/puppeteer#9152
2022-10-24 16:23:24 +02:00
release-please[bot]
10b59a9a63
chore: release main (#9152) 2022-10-24 13:58:47 +02:00
jrandolf
f07ad2c661
fix: update documentation on configuring puppeteer (#9150)
This PR updates the docs regarding configuring puppeteer. In addition,
some changes have been made to the documentation generator to show
default values on the documentation site.

Also fixes: https://github.com/puppeteer/puppeteer/pull/9144
2022-10-24 09:07:05 +02:00
release-please[bot]
4bf338b26d
chore: release main (#9143) 2022-10-21 15:52:43 +02:00
jrandolf
ec201744f0
feat: use configuration files (#9140)
This PR adds configurations files to `puppeteer`'s methods for
configuration. Under the hood, `puppeteer` relies on
https://www.npmjs.com/package/cosmiconfig which resolves several formats
of configuration:

- a `puppeteer` property in package.json
- a `.puppeteerrc` file in JSON or YAML format
- a `.puppeteerrc.json`, `.puppeteerrc.yaml`, `.puppeteerrc.yml`,
`.puppeteerrc.js`, or `.puppeteerrc.cjs` file
- a `puppeteer.config.js` or `puppeteer.config.cjs` CommonJS module
exporting an object

Documentation will be added later.

Fixed: #9128
2022-10-21 15:09:21 +02:00
jrandolf
efcbc97c60
fix: update BrowserFetcher deprecation message (#9141) 2022-10-20 13:25:24 +02:00
Alex Rudenko
122778a1f8
feat: expose browser context id (#9134)
Closes #9132
2022-10-19 08:30:57 +00:00
Alex Rudenko
a19b270018
chore: extract BrowserContext to its own file (#9133) 2022-10-19 07:06:31 +00:00
release-please[bot]
dc66207f25
chore: release main (#9115) 2022-10-14 14:54:46 +02:00
jrandolf
8f4902eed9
chore: use test runner for installation tests (#9110) 2022-10-14 13:37:07 +02:00
jrandolf
6a05d8e9c1
chore: improve docs and scripts (#9107)
This PR updates some docs and scripts related to the recent changes in
the repository.
2022-10-13 18:55:11 +02:00
jrandolf
1fbc3c643f
chore: improve docs (#9105)
This PR makes some improvements to the documentation. It migrates
docker, debugging, and chrome extension documentation to the `guides`
folder and also updates some of the terminology.
2022-10-13 08:46:53 +00:00
Alex Rudenko
8acafe2fd9
chore: remove special handling for shared_worker (#9096)
With Chromium M107+ this should not be required anymore.
2022-10-11 12:18:06 +00:00
jrandolf
3df375baed
feat!: use ~/.cache/puppeteer for browser downloads (#9095) 2022-10-11 11:20:45 +00:00
jrandolf
7294dfe9c6
feat!: deprecate createBrowserFetcher in favor of BrowserFetcher (#9079)
This PR deprecates the `createBrowserFetcher` API and requests users to
import the `BrowserFetcher` directly.

Fixed: #8999
2022-10-10 17:51:18 +02:00
jrandolf
1847704789
fix!: refactor custom query handler API (#9078)
This PR removes the deprecated query selector API from the `puppeteer`
instance. Direct imports of the query selector API have also been
deprecated and users are now expected to use the static methods defined
on `Puppeteer`.
2022-10-10 16:01:09 +02:00
jrandolf
acbc59999b
fix: remove viewport conditions in waitForSelector (#9087)
This PR removes the viewport conditions in `waitForSelector`.

See discussion:
https://github.com/puppeteer/puppeteer/pull/8954#issuecomment-1272338883
2022-10-10 16:00:47 +02:00
jrandolf
87c08fd86a
fix!: remove puppeteer.devices in favor of KnownDevices (#9075)
This PR removes the deprecated `puppeteer.devices` in favor of a new
exported object `KnownDevices`. `devices` can also be exported, but has
been deprecated.
2022-10-10 15:30:12 +02:00
smithc
a032583b6c feat: add ability to collect JS code coverage at the function level (#9027) 2022-10-06 23:53:05 +02:00
jrandolf
41d0122b94 fix!: deprecate indirect network condition imports (#9074) 2022-10-06 23:52:58 +02:00
jrandolf
9f4f43a28b fix!: deprecate indirect error imports (#9072) 2022-10-06 23:52:51 +02:00
release-please[bot]
58ac7a687c
chore: release main (#9067) 2022-10-06 12:22:55 +02:00
jrandolf
9d13343d67
chore: update publish workflow (#9065)
This PR combines the publishing workflows for npm packages and Docker.
It also fixes an issue where multiple tags would trigger publishing all
packages.
2022-10-06 11:44:52 +02:00
jrandolf
416d56b033
chore: refactor utils (#9053)
This PR

- renames the `utils` folder to `tools` (follows internal practice),
- migrates the contents of `scripts` into `tools` and removes scripts.
2022-10-06 10:27:14 +02:00
jrandolf
9374e23d3d
fix: add README to package during prepack (#9057) 2022-10-06 09:13:54 +02:00