Commit Graph

72 Commits

Author SHA1 Message Date
Alex Rudenko
c6054ac1a5
fix: make chromium-bidi an opt peer dep (#9667) 2023-02-14 09:04:54 +00:00
jrandolf
eb138635d6
fix: fix circularity on JSHandle interface (#9661) 2023-02-13 11:25:07 -08:00
Alex Rudenko
df59d010c2
feat(chromium): roll to Chromium 111.0.5556.0 (r1095492) (#9656) 2023-02-13 09:46:01 +00:00
jrandolf
558a8e2999
chore: fix npm scripts (#9646) 2023-02-10 17:57:17 +00:00
Nikolay Vitkov
b8ea891ab8
chore: Extract JSHandle to API (#9632) 2023-02-09 18:04:06 +01:00
Rafael Martins
ddb0cc174d
fix: page.goto error throwing on 40x/50x responses with an empty body (#9523) (#9577)
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2023-02-06 09:40:51 +00:00
Nikolay Vitkov
9b11b6a4e0
chore: Add BiDi serialization for RegExp and Date (#9623) 2023-02-03 12:32:26 +00:00
charlieinitialdigital
c8bb11adfc
feat: add touchstart, touchmove and touchend methods (#9622) 2023-02-03 10:59:21 +00:00
Nikolay Vitkov
abcc1756dd
chore: Add BiDi Page.evaluate (#9609) 2023-02-02 15:14:28 +01:00
Rafael-Martins
f12f27e1eb
docs: clarify the waitForXPath return type (#9541) (#9583) 2023-02-01 15:23:32 +00:00
ggorlen
e16cbc6626
fix: restore WaitTask terminate condition (#9612) 2023-02-01 00:10:02 -08:00
Alex Rudenko
390685bbe5
fix: ignore not found contexts for console messages (#9595) 2023-01-30 10:22:55 +00:00
jrandolf
050a7b0624
fix: atomically get Puppeteer utilities (#9597) 2023-01-27 11:58:40 -08:00
jrandolf
1980de91a1
fix: mimic rejection for PuppeteerUtil on early call (#9589) 2023-01-26 01:34:47 -08:00
Alex Rudenko
6edd996768
fix(revert): use LazyArg for puppeteer utilities (#9590)
Reverts puppeteer/puppeteer#9575
2023-01-26 09:50:06 +01:00
jrandolf
496658f029
fix: use LazyArg for puppeteer utilities (#9575)
This PR fixes the following edge case:

 - `const oldPromise = world.puppeteerUtil`. 
- setContext occurs but context is immediately destroyed, i.e.
`world.#puppeteerUtil === oldPromise` is not resolved.
- clearContext occurs due to destruction, i.e. `world.#puppeteerUtil` is
replaced (`world.#puppeteerUtil !== oldPromise`).
 - `oldPromise` never resolves.
2023-01-26 08:56:33 +01:00
Alex Rudenko
344bc2af62
fix: don't clean up previous browser versions (#9568)
Since we moved to the central binaries cache it does not make sense to
clean up old binaries automatically because multiple installations can
use different versions. We expect the users to clean the cache from time
to time until we offer a CLI for managing the browsers.

Closes #9533
2023-01-24 17:28:00 +01:00
Ophir Back
e3d69ec554
feat(page): Adding support for referrerPolicy in page.goto (#9561)
Issue: #9394

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

Feature - Added support of the `referrerPolicy` parameter (from CDP's
`Page.navigate`) to Puppeteer's `page.goto`.

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

No, currently it has no meaning that isn't browser implementation based,
which might get broken in the future. If there are suggestions to tests,
please let me know so I'll add them.

**If relevant, did you update the documentation?**
Yes, the documentation of the `goto` method has been updated.

**Summary**
I wanted to contribute to this project, which I used for testing on our
environment and saw issue #9394, so I decided to resolve it :)

**Does this PR introduce a breaking change?**
No. I added the `referrerPolicy` as an optional parameter, which will
use the HTTP header `Referrer-Policy` if not provided (much like the
`referer` parameter) so it will not interfere.

Co-authored-by: Ophir Back <ophir.back@broadcom.com>
2023-01-23 11:11:20 +00:00
Alex Rudenko
6847f8835f
fix: improve screenshot method types (#9529)
The only drawback of adding overrides is that our documentation
generator would generate a page for each overload which might be hard to
read/find on the documentation website.

Closes #9512 #9385
2023-01-18 14:06:20 +00:00
Kyrylo
3e80667048
chore: use named import for devtools-protocol module (#9511)
<!-- 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?**
types fix

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

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

**Summary**
I am updating `import`s of `devtools-protocol` to always use named
import instead of the default.
For some reason, typescript doesn't understand when it is imported as
default.

```
node_modules/puppeteer-core/lib/esm/puppeteer/common/TargetManager.d.ts:23:59 - error TS2694: Namespace '"/Users/kyrylo/pacakge/node_modules/puppeteer-core/node_modules/devtools-protocol/types/protocol"' has no exported member 'Target'.

23 export declare type TargetFactory = (targetInfo: Protocol.Target.TargetInfo, session?: CDPSession) => Target;
                                                             ~~~~~~


Found 1 error in node_modules/puppeteer-core/lib/esm/puppeteer/common/TargetManager.d.ts:23
```

**Does this PR introduce a breaking change?**
No
<!-- If this PR introduces a breaking change, please describe the impact
and a migration path for existing applications. -->

**Other information**
I am updating `import`s of `devtools-protocol` to always use named
import instead of the default.
2023-01-17 11:34:57 +00:00
Kian-Meng Ang
4437bceb6e docs: fix typos (#9476)
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2023-01-16 20:25:09 +01:00
Alex Rudenko
f59bbf4014
fix: firefox revision resolution should not update chrome revision (#9507)
Drive-by: don't override options in PuppeteerNode if they are provided.

Closes #9461
2023-01-13 10:57:48 +00:00
Alex Rudenko
06e816bbfa
feat(chromium): roll to Chromium 110.0.5479.0 (r1083080) (#9500)
Closes #9470
2023-01-12 11:31:20 +01:00
Alex Rudenko
df554397b5
fix: make sure browser fetcher in launchers uses configuration (#9493)
Issue #9470
2023-01-11 21:09:56 +01:00
jrandolf
9bf90d9f4b
fix: use puppeteer node for installation script (#9489)
Fixed: https://github.com/puppeteer/puppeteer/issues/9470
2023-01-11 16:15:53 +01:00
Junyan
6bc152ece0
chore: small refactor for screenshotTask (#9451) 2023-01-02 11:01:36 +01:00
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
Darío Kondratiuk
e3e9cc622a
fix(puppeteer-core): target interceptor is not async (#9430)
I found that the only call to `addTargetInterceptor` passes
`onAttachedToTarget` and is not async.
I also found a typo 🤓
2022-12-17 17:47:21 +00:00
Alex Rudenko
02fe50194e
fix: improve a11y snapshot handling if the tree is not correct (#9405)
Bug #9404
2022-12-13 08:31:26 +00: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
Alex Rudenko
810e0cd74e
fix: remove oopif expectations and fix oopif flakiness (#9375)
With M109 the flakiness should be reduced. Any present flakiness should
be investigated.

Drive-by: a new debugging helper to debug on CI.
2022-12-09 11:36:39 +00: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
Alex Rudenko
17f31a9ee4
fix(puppeteer-core): avoid type instantiation errors (#9370)
Using the accumulator allows enabling the tail-recursion optimization in
the TypeScript compiler.

Closes #9369
2022-12-06 19:21:08 +01: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
Alex Rudenko
e8c1d56845
chore: import BiDi impl only if the user opts in (#9335) 2022-11-29 15:18:40 +01:00
jrandolf
cb01c5c043
docs: remove comments on Page implementation (#9325)
This PR removes comments on CDPPage since they are redundant.
2022-11-24 13:10:29 +01: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
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
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
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