Commit Graph

164 Commits

Author SHA1 Message Date
Alex Rudenko
29a50764d4
chore: add BiDi integration for Chromium (#9410)
This PR adds experimental support for WebDriver BiDi by making use of
chromium-bidi to implement the BiDi protocol. The tests are disabled on
Windows due to flakiness (filed
https://github.com/GoogleChromeLabs/chromium-bidi/issues/361).
2022-12-20 14:37:31 +00:00
jrandolf
3f52212fc8
chore: update dependencies (#9436)
Fixed: https://github.com/puppeteer/puppeteer/issues/9372
2022-12-19 15:26:58 +01:00
jrandolf
c7a063a152
feat: add element validation (#9352)
This PR adds a method to ElementHandle that validates the tag type of
that handle and returns it.

Fixed: #8579, #9280
2022-12-19 13:25:56 +01:00
y-yagi
a3045435a2
docs: mention how to disable timeout for page.pdf() (#9167)
**What kind of change does this PR introduce?**

Add how to disable timeout for `page.pdf()`.

**Summary**

This was mentioned in the PR that adding this feature
https://github.com/puppeteer/puppeteer/pull/7508 But it has lost at
https://github.com/puppeteer/puppeteer/pull/8593.

I'm not sure why this was removed, but I think this info is useful for
users.

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

no
2022-12-12 12:12:18 +00:00
Alex Rudenko
1668d47b2f
docs: various doc improvements (#9396)
See commits for details.

Closes #1837, #5880, #7822, #8101, #8821, #9367, #9382, #9378, #4731
2022-12-09 13:57:39 +01:00
Nikolay Vitkov
89ff872120
chore: Update CI file to use new set method (#9389)
Closes #9373,
Fixes #9296
2022-12-09 10:49:53 +01:00
Thibaud Colas
afc75884d7 docs: fix documentation typo in Page.waitForSelector optional visible parameter (#9381)
**What kind of change does this PR introduce?**

Typo fix in the documentation

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

No

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

N/A

**Summary**

I spotted the `Visible` parameter had an uppercase `V` in the [Remarks
section of the Page.waitForSelector API
documentation](https://pptr.dev/api/puppeteer.page.waitforselector#remarks).
Updated this to the lowercase `v` in the relevant places (source,
documentation, versioned version of the doc page).

While doing this, I also spotted there was an extra space in `are :` in
the sentence above – so changed that as well.

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

No

**Other information**

I’ve confirmed the parameter is spelled correctly on
https://pptr.dev/api/puppeteer.waitforselectoroptions. I’m not sure why
the documentation for those properties is in two places with slightly
different wording – but to me it felt useful to see this directly on the
method’s API docs.
2022-12-08 13:59:18 +01:00
Nikolay Vitkov
1875da6191
feat(chromium): roll to Chromium 109.0.5412.0 (r1069273) (#9364)
Closes #9233
2022-12-07 14:54:00 +01:00
Robin Richtsfeld
1501edefa8
docs(requestinterception): remove outdated note (#9358)
See #7304 @jschfflr Seems like we missed some
Thanks to @chrismdd for spotting this
2022-12-07 07:33:27 +00:00
Junyan
b7ebc5d9bb
feat(puppeteer-core): keydown supports commands (#9357)
Issue: #1313

<!-- Thanks for submitting a pull request! Please provide enough
information so that others can review your pull request. -->

**What kind of change does this PR introduce?**

Feature.

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

Yes.

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

Yes.

**Summary**

Supports keyboard shotcuts on MacOS. See Chrome Devtools Protocol
document:
https://chromedevtools.github.io/devtools-protocol/tot/Input/#method-dispatchKeyEvent.
2022-12-03 11:23:47 +01:00
Alex Rudenko
f3c87dcdb7
chore: upgrade mitt (#9340) 2022-11-29 19:50:58 +00:00
Dmitriy Dudkevich
937fffaedc
feat: ability to send headers via ws connection to browser in node.js environment (#9314)
**What kind of change does this PR introduce?**

I have browsers pool in some cloud. I want that only users with access
will be able to connect to them. So they must provide token through
headers. But puppeteer does not allow to send headers when connected to
browser by ws connection. So I added this feature.

Closes #7218
2022-11-24 11:00:03 +01:00
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
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
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
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
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
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
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
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
jrandolf
f42336cf83
feat: separate puppeteer and puppeteer-core (#9023)
This PR moves the puppeteer source code into separate mono-repo packages:

- `puppeteer` and `puppeteer-core` are now separated into their own
packages.
- `puppeteer-core` has a new exports called `puppeteer-core/internal`
for internal usage.

Tests and various tools have been updated to accommodate the migration.
2022-10-05 14:17:03 +02:00
Pedro Campelo Matheus
b7b07e3790 chore: add documentation to xpath prefix and deprecated page.waitForTimeout (#9014) 2022-10-05 00:25:26 +02:00
Noel Kim (김민혁)
5dbd69e1a4
chore: type in waitForRequest function description (#9015) 2022-10-05 00:05:32 +02:00
jrandolf
f8de7b1273
chore: bundle vendor code (#9016)
This PR removes the manual vendoring process. Third party code can now
be updated using the typical NPM pipeline with types/code bundling done
through Rollup.
2022-09-28 13:03:19 +02:00
jrandolf
d06a905540
chore: update deps (#9013) 2022-09-27 11:53:19 +02:00
Alex Rudenko
31e7b608d5
chore: implement basic evaluate in BiDi (#8989)
Only the basic return values are supported.
The follow-up PRs will re-use the shared code
from the ExecutionContext and introduce Frame
in BiDi.
2022-09-21 08:10:50 +02:00
jrandolf
d5045976a6
fix: internal lazy params (#8982) 2022-09-19 15:10:57 +02:00
jrandolf
7c4f41fadc
chore: use injections for wait tasks (#8943)
This PR refactors wait tasks to use injected scripts.
2022-09-15 08:22:20 +02:00
Alex Rudenko
db28203e64 chore: support WebDriver BiDi browser instances (#8932)
This PR adds a basic support for WebDriver BiDi that currently includes only the ability to establish a connection and shutdown the browser. Therefore, the implementation is marked as internal and won't show up in the changelog as it's barely useful at the moment.

The API classes are kept as classes instead of interfaces so that clients relying on instanceof checks still work.
2022-09-15 02:15:15 +02:00
Alex Rudenko
27ccd0ae5e
docs: sort and group sidebar items (#8940)
Issues #8897, #8936
2022-09-12 13:00:37 +02:00
Connor Clark
7a2d9df146
docs: correct comment about anonymous script coverage urls (#8914) 2022-09-08 07:56:26 +02:00
Alex Rudenko
260e428227
fix: support scale for screenshot clips (#8908)
Closes #5329
2022-09-07 05:27:40 +00:00
Alex Rudenko
6e7c6368d3
docs: fix example formatting in evaluateOnNewDocument (#8906) 2022-09-06 10:39:55 +00:00
Guillaume Gomez
32400954c5
fix: add Page.getDefaultTimeout getter (#8903)
Closes #8901
2022-09-05 17:43:39 +00:00
jrandolf
6b4a99fcfa
chore: migrate addStyleTag (#8879)
* chore: remove unnecessary type signature

* chore: fix tests

* chore: migrate `addStyleTag`

* chore: fix tests

* chore: fix tests
2022-09-01 17:52:08 +02:00
jrandolf
8f11237a67
chore: migrate addScriptTag (#8878) 2022-09-01 17:09:57 +02:00
Alex Rudenko
3732757450
fix: allow getting a frame from an elementhandle (#8875)
Libraries like pptr-testing-library and expect-puppeteer seem to
rely on it.
2022-08-31 19:57:02 +00:00
Alex Maitland
8d95a9bc92
fix: typos in documentation (#8858)
- corder should be corner
2022-08-30 13:45:59 +02:00
jrandolf
1155c8eac8
fix!: remove root from WaitForSelectorOptions (#8848) 2022-08-26 12:55:30 +02:00
jrandolf
2f33237d04
fix!: internalize execution context (#8844) 2022-08-25 17:02:44 +02:00
jrandolf
b9b24cf963
chore: use deferred promises in web worker (#8824) 2022-08-22 14:03:45 +02:00
jrandolf
65a5ce8464
fix: deprecate root in WaitForSelectorOptions (#8795) 2022-08-16 10:09:07 +02:00
jrandolf
8f612d5ff8
fix: deprecate waitForTimeout (#8793) 2022-08-16 08:24:25 +02:00
jrandolf
b5da718e2e
fix: deprecate ExecutionContext (#8792) 2022-08-16 08:22:45 +02:00
jrandolf
ddbe88b887
chore: add custom rule for formatting comments (#8777) 2022-08-12 14:15:26 +02:00
jrandolf
a238f5758d
chore: refactor JSHandle and ExecutionContext (#8773) 2022-08-11 11:45:35 +02:00
jrandolf
b4176029d9
chore: update dependencies (#8771)
* chore: update dependencies
2022-08-11 07:55:02 +02:00
jrandolf
d6a88a9768
chore: refactor FrameManager and fix docs (#8770) 2022-08-10 23:34:29 +02:00
Alex Rudenko
6934b94f23
docs: introduce the Guides section + restore req interception docs (#8758)
Closes #8744
2022-08-09 12:01:23 +00:00
jrandolf
5cf9b4de8d
feat: use an xpath query handler (#8730) 2022-08-04 15:45:21 +02:00
Alex Rudenko
2abd772c9c feat: detect Firefox in connect() automatically (#8718)
This PR implements automatic detection of the Firefox product when the `.connect()` method is used. This partially undoes the breaking change in https://github.com/puppeteer/puppeteer/pull/8520 but it's also a breaking change on its own since we don't accept an explicit product name anymore (it does not look like it was used anyway).
2022-08-02 13:18:51 +00:00
Alex Rudenko
f52b37a3aa docs: fix a typo in waitForSelector (#8701) 2022-08-02 13:18:48 +00:00
Alex Rudenko
af08c5c903
feat: expose the page getter on Frame (#8657)
* feat: expose the page getter on Frame

Closes #8654

* test: add a test
2022-07-11 21:06:35 +02:00
Alex Rudenko
d0c4291995
fix: expose a RemoteObject getter (#8642)
Closes #8639
2022-07-07 13:04:28 +00:00
jrandolf
5ff205dc8b
fix: extends ElementHandle to Nodes (#8552)
* fix: extends `ElementHandle` to `Node`s (#8552)
2022-07-06 09:05:37 +02:00
jrandolf
b5a345b06b
chore: format docs (#8629) 2022-07-05 15:41:43 +02:00
jrandolf
45eb2c607f
chore: remove docusaurus metadata from README.md (#8624) 2022-07-05 14:42:31 +02:00
jrandolf
066f440ba7
feat: add documentation (#8593) 2022-07-01 11:52:39 +00:00