Commit Graph

310 Commits

Author SHA1 Message Date
jrandolf
465a7c405f
feat: export puppeteer methods (#8493) 2022-06-09 19:00:50 +02:00
jrandolf
b30f3f44cd
fix: parse empty options in <select> (#8489) 2022-06-09 13:27:34 +02:00
jrandolf
f64ec2051b
feat: support node-like environments (#8490) 2022-06-09 13:03:44 +02:00
jrandolf
e8378666c6
fix: don't throw on bad access (#8472) 2022-06-07 16:17:21 +02:00
Alex Rudenko
e14256010d
feat: use absolute URL for EVALUATION_SCRIPT_URL (#8481)
Closes #8424
2022-06-07 15:36:51 +02:00
jrandolf
2615c1c3d6
fix: use null instead of undefined (#8463) 2022-06-02 15:38:13 +02:00
Alex Rudenko
5c9050aea0
fix: use isPageTargetCallback in Browser::pages() (#8460) 2022-06-02 13:27:31 +02:00
jrandolf
30438e6532
chore: use ts-doc and factor out importFSModule (#8449) 2022-06-01 11:11:09 +02:00
jrandolf
9f9a1a4dd5
chore: update deps (#8446) 2022-05-31 19:04:30 +02:00
jrandolf
b4e751f29c
feat: use strict typescript (#8401) 2022-05-31 16:34:16 +02:00
Junyan
92110151d9
fix: multiple same request event listener (#8404) 2022-05-30 20:34:08 +00:00
Alex Rudenko
c96c915b53
fix: do not use loaderId for lifecycle events (#8395)
This PR works around the upstream bug crbug.com/1325782. Previously Puppeteer relied on the presence of the loaderId to determine the kind of navigation and expected events. It does not look like there is a reason to do so: instead, we could see what events we get and proceed accordingly.
2022-05-30 10:30:30 +02:00
Alex Rudenko
256223a7b1
chore: strict-mode TS for DOMWorld (#8398) 2022-05-25 15:34:11 +02:00
Alex Rudenko
af92a24ba9
fix: use strict TS in Input.ts (#8392) 2022-05-24 14:28:36 +00:00
Alex Rudenko
b349d71dcd
chore: fix strict-mode TS in LifecycleWatcher (#8387) 2022-05-24 11:14:19 +00:00
Alex Rudenko
aa014d8f5f
chore: fix TS issues in NetworkManager (#8386) 2022-05-23 17:41:11 +02:00
Alex Rudenko
04dbd8f39a
Revert "fix: do not use loaderId for Lifecycle events (#8353)" (#8369)
This reverts commit 7107d2d300.
2022-05-19 12:05:33 +00:00
Alex Rudenko
7107d2d300
fix: do not use loaderId for Lifecycle events (#8353) 2022-05-17 13:27:21 +00:00
jrandolf
74380303ac
fix: only check loading iframe in lifecycling (#8348) 2022-05-17 12:15:44 +00:00
Alex Rudenko
3b66a2c47e
feat: allow handling other targets as pages internally (#8336)
Co-authored-by: jrandolf <101637635+jrandolf@users.noreply.github.com>
2022-05-13 08:04:46 +02:00
Pirikara
a61144d437
fix: If currentNode and root are the same, do not include them in the result (#8332)
* fix: If currentNode and root are the same, do not include them in the result

* fix: Tests that only child element is included in the result

Co-authored-by: jrandolf <101637635+jrandolf@users.noreply.github.com>
2022-05-11 12:17:02 +00:00
Alex Rudenko
7eaadafe19
feat: add waitForXPath to ElementHandle (#8329) 2022-05-10 12:45:20 +02:00
jrandolf
6841bd68d8
feat: support ES modules (#8306) 2022-05-09 11:17:24 +00:00
Alex Rudenko
2804ae8cdb
fix!: strict mode fixes for HTTPRequest/Response classes (#8297)
Solves type issues in HTTPRequest/Response with some slight changes in the behaviour and API.

Issues #6769
2022-05-05 06:48:03 +00:00
Alex Rudenko
553959884f
fix: make sure inner OOPIFs can be attached to (#8304) 2022-05-04 07:46:38 +02:00
Darío Kondratiuk
f39eb70f2f
test: run Frame.evaluate tests on Firefox (#8296) 2022-05-02 08:21:19 +02:00
jrandolf
7a51bff47f
feat: add back and forward mouse buttons (#8284) 2022-04-27 21:00:07 +00:00
Darío Kondratiuk
4b786c904c
fix: forget request will be sent from the _requestWillBeSentMap list. (#8226)
That forget looked wrong to me. Let me know if this change is correct.
2022-04-19 14:46:40 +00:00
Joel Baranick
91a8e73b11
fix: forget queuedEventGroup when emitting response in responseReceivedExtraInfo (#8234) (#8239) 2022-04-19 09:28:44 +00:00
Alex Rudenko
ed4afe81a5
docs: typos and minor documentation issues (#8211) 2022-04-08 11:58:55 +02:00
Alex Rudenko
0955225b51
fix: consider existing frames when waiting for a frame (#8200) 2022-04-07 15:05:36 +02:00
Cody Eakins
12260b19af
docs: fix small typo (#8195)
This commit fixes a single typo.

- functon -> function
2022-04-06 08:32:31 +00:00
Junyan
c1dcd857e3
feat: respond multiple headers with same key (#8183) 2022-04-05 09:06:35 +00:00
Junyan
37ede68770
fix: get extra headers from Fetch.requestPaused event (#8162) 2022-03-28 07:54:24 +00:00
Kazuki Higashiguchi
e31b8e6d39
docs: fix small typo (#8167)
The commit fixes the two typos.

- guarnateed -> guaranteed
- guaranteeded -> guaranteed
2022-03-28 06:00:10 +00:00
Alex Rudenko
7748730163
chore: revert #7868 to use the size parameter for streaming PDF (#8145)
Issues: #7757
2022-03-18 15:08:25 +01:00
Alex Rudenko
34775e5831
fix: waitForNavigation in OOPIFs (#8117) 2022-03-09 12:24:17 +01:00
James Diefenderfer
3feca325a9
fix: Inherit browser-level proxy settings from incognito context (#7770)
* chore: add request proxy tests

* fix: inherit browser-level proxy settings from incognito context

* fix: skip test on Windows
2022-03-07 10:12:26 +00:00
Dima
309e8b80da fix(page): page.createIsolatedWorld error catching has been added (#7848)
Co-authored-by: DimaShustal <dzmitry.shustal@gmail.com>
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2022-03-03 12:56:12 +01:00
jrandolf
e9278fcfcf
feat: export Frame._client through getter (#8041)
Co-authored-by: Randolf Jung <jrandolf@chromium.org>
2022-02-21 14:58:37 +00:00
Tmk
dbf0639822
feat: add support for async waitForTarget (#7885)
* feat: add support for async waitForTarget

* fix: add timeout

* fix: potential async bugs
2022-02-18 12:05:29 +01:00
Michael Mok
5c308b0704
fix: ensure dom binding is not called after detach (#8024)
* fix: ensure dom binding is not called after detatch

Fixes #7814

* refactor: detach listeners instead

* refactor: safer approach

* fix: test in test/page.spec.ts

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2022-02-17 15:52:51 +00:00
omjadas
30b3d49b0d
feat(HTTPResponse): expose timing information (#8025) 2022-02-15 11:16:49 +01:00
Alex Rudenko
5346e70ffc
fix: element screenshot issue in headful mode (#8018)
Fixes: #7999
2022-02-15 11:15:18 +01:00
Alex Rudenko
179ededa14
revert: esm modules (#7996)
* Revert "fix(puppeteer): export internals (#7991)"

This reverts commit 448118cbdb.

* Revert "feat(puppeteer): export esm modules in package.json (#7964)"

This reverts commit 523b487e88.
2022-02-10 13:34:36 +00:00
jrandolf
8ff9d598bf
chore(deps): update deps
Signed-off-by: Randolf Jung <jrandolf@chromium.org>

Co-authored-by: Randolf Jung <jrandolf@chromium.org>
2022-02-09 14:49:25 +00:00
jrandolf
523b487e88
feat(puppeteer): export esm modules in package.json (#7964)
* feat(puppeteer): export esm modules in package.json

Signed-off-by: Randolf Jung <jrandolf@chromium.org>

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
Co-authored-by: Randolf Jung <jrandolf@chromium.org>
2022-02-09 07:47:27 +00:00
Alex Rudenko
41ab4e9127
fix: typos in documentation (#7968) 2022-02-07 14:03:54 +01:00
nswbmw
6a655cb647
feat: add more models to DeviceDescriptors (#7904) 2022-02-02 18:40:54 +01:00
Alex Rudenko
aaac8d9c44
fix: migrate more files to strict-mode TypeScript (#7950) 2022-01-31 15:16:32 +00:00
Alex Rudenko
000c1f630d
chore: add TODO to use size parameter in getReadableFromProtocolStream (#7930) 2022-01-28 09:38:14 +01:00
tjacobs3
afea509544
fix: page.pdf producing an invalid pdf (#7868)
When defining a chunk size for <CDPSession>.send('IO.read', { handle, size }), the CDPSession will occasionally indicate that it has reached the end of file without sending a full pdf. This is documented by the associated issue.

This behavior is not reproducible when leaving out the size parameter. Since the size parameter is not required on the CDPSession side and is merely a suggestion on the stream side, we can safely leave it out.

Issues: #7757
2022-01-26 12:30:03 +00:00
Alex Rudenko
d80d6027ea fix: types in Connection.ts to be compatible with strict mode Typescript (#7919)
Issues: #6769
2022-01-21 12:41:21 +01:00
Alex Rudenko
a8ec0aadc9
fix: types in Browser.ts to be compatible with strict mode Typescript (#7918)
Issues: #6769
2022-01-20 14:15:23 +01:00
Alex Rudenko
344feb53c2
fix: use content box for OOPIF offset calculations (#7911)
If an iframe has a border, it has to be added to the offsets
too. We can work around it by using the content box coordinates
for the offsets. That should also prevent discrepancies if the
iframe has a padding set.
2022-01-18 09:22:15 +01:00
Alex Rudenko
a566263ba2
fix: apply OOPIF offsets to bounding box and box model calls (#7906)
The doc for boundingBox says that it should return the boundingBox
relative to the main frame, therefore, this fix would make the
actual implementation correspond to the documentation. boxModel
documentation does not have this note but I think it'd make sense
to have it match the behaviour of the boundingBox API.
2022-01-17 14:19:43 +01:00
Alex Rudenko
d7937b806d
fix: error for pre-existing OOPIFs (#7899)
Issues: #7844, #7896
2022-01-17 07:00:00 +00:00
Alex Rudenko
486bbe010d
fix: correctly compute clickable points for elements inside OOPIFs (#7900)
Issues: #7849
2022-01-17 07:32:52 +01:00
Alex Rudenko
8d8e874b07
fix: make sure ElementHandle.waitForSelector is evaluated in the right context (#7843)
So it appears that all bindings are added to the secondary world and all
evaluations are also running there. ElementHandle.evaluate is returning
handles from the main world though. Therefore, we need to be careful
and adopt handles to the right context before doing waitForSelector
So it appears that all bindings are added to the secondary world and all
evaluations are also running there. ElementHandle.evaluate is returning
handles from the main world though. Therefore, we need to be careful
and adopt handles to the right context before doing waitForSelector.
2021-12-21 09:53:20 +01:00
Alex Rudenko
1c44551f1b
fix: predicate arguments for waitForFunction (#7845)
The same predicate function is used by the waitForFunction
API that does not need the context element.

Issues: #7836
2021-12-15 08:40:56 +00:00
Ben Allfree
824242246d
fix!: typo in 'already-handled' constant of the request interception API (#7813)
Issues:  #7745, #7747, #7780
Co-authored-by: Rodrigo Fernández <fdez.romero@gmail.com>
2021-12-09 14:57:40 +00:00
Ben Allfree
71cc1b9591
refactor: remove unused promise (#7830) 2021-12-09 15:35:23 +01:00
Alex Rudenko
c03429444d
feat: implement Element.waitForSelector (#7825)
Co-authored-by: Johan Bay <jobay@google.com>
Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2021-12-09 11:51:14 +00:00
Alex Rudenko
a604646f44
refactor: disallow direct access to attributes in NetworkEventManager (#7826) 2021-12-09 10:02:24 +00:00
Ben Allfree
bbfad6802c
refactor: extract NetworkEventManager from NetworkManager 2021-12-07 15:08:45 +00:00
Ben Allfree
dc23b7535c
feat: expose HTTPRequest intercept resolution state and clarify docs (#7796)
Co-authored-by: Rodrigo Fernández <fdez.romero@gmail.com>
2021-12-07 08:48:42 +01:00
Ben Allfree
636b0863a1
fix: handle multiple/duplicate Fetch.requestPaused events (#7802)
Issues: #7475, #6696, #7225
2021-12-03 20:13:44 +01:00
Alex Rudenko
6ee2feb1ea
fix: handle extraInfo events even if event.hasExtraInfo === false (#7808)
Issues: #7805
2021-11-29 20:46:02 +01:00
Alex Rudenko
a26b12b7c7
fix: parse statusText from the extraInfo event (#7798)
Issues: #7458
2021-11-26 09:17:34 +01:00
Alex Rudenko
ac162c561e
feat(chromium)!: roll to Chromium 97.0.4692.0 (r938248)
Issues: #7458
2021-11-23 08:19:14 +01:00
Alex Rudenko
23ee295f34
fix: null check for frame in FrameManager (#7773)
Issues: #7749
2021-11-15 13:33:45 +00:00
Andy Earnshaw
b0319ecc89
fix(ariaqueryhandler): allow single quotes in aria attribute selector (#7750)
This updates the regular expression used to parse aria attribute
selectors so that single quotes may be used as an alternative to double
quotes, e.g. `aria/Single button[role='button']`.

Issues: #7721

Co-authored-by: Andy Earnshaw <andy.earnshaw@gmail.com>
2021-11-09 13:05:10 +01:00
Jan Scheffler
03c9ecca40
feat: improve error message for response.buffer() (#7669) 2021-10-29 13:44:40 +00:00
Jan Scheffler
4d9dc8c0e6
feat(oop iframes)!: integrate OOP iframes with the frame manager (#7556)
This pull request to adds better support for OOP iframes (see #2548)

The current problem with OOP iframes is that they are moved to a different target. Because of this, the previous versions of Puppeteer pretty much ignored them.
This change extends the FrameManager to already take OOP iframes into account and hides the fact that those frames are actually in different targets.
Further work needs to be done to also make the NetworkManager aware of these and to make sure that settings like emulations etc. are also properly passed down to the new targets.
2021-10-28 11:25:49 +02:00
Jan Scheffler
5b792de7a9
fix: prevent Target closed errors on streams (#7728)
This change prevents Target closed errors when reading streams which were caused by ending the stream before IO.close returns.
2021-10-27 13:49:27 +00:00
Jan Scheffler
07febca04b
feat: handle unhandled promise rejections in tests (#7722)
In some situations, Puppeteer is left in an invalid state because protocol errors that could have been handled by the user where just hidden from them. This patch removes some of these cases and also makes sure that unhandled promise rejections lead to a test failure in mocha.
2021-10-27 13:43:57 +02:00
Tomas Junnonen
b20c2bfa24
fix: add webp to screenshot quality option allow list (#7631)
This allows passing through the screenshot quality option from Puppeteer to Chrome
when using the WebP image format
2021-10-07 21:15:24 +00:00
Jan Scheffler
2d37430838
chore: update types for JSHandle (#7650)
Closes #7583
2021-10-07 16:04:08 +00:00
Darío Kondratiuk
51229c12f1
docs(page): add missing docs to emulateCPUThrottling (#7630)
The text was taken from the protocol.
2021-10-05 07:49:30 +00:00
Edgard Lorraine Messias
d0cb9436a3
fix(page): fix page.off method for request event (#7624)
This patch fixes page.off for request event

Closes: #7572
2021-10-04 06:59:46 +00:00
Mikkel Snitker
fd607b1095
chore: propagate 'Invalid header' errors (#7020)
Enable developers to handle 'Invalid header' errors instead of hiding them to make sure they can address them properly.
Co-authored-by: Jan Scheffler <janscheffler@chromium.org>
2021-10-04 06:18:03 +00:00
Darío Kondratiuk
327282e047
docs: fix drag and drop docs (#7617) 2021-10-02 11:01:44 +02:00
Josh Grime
44c9ec67c5
fix(page): fallback to default in exposeFunction when using imported module (#6365) 2021-09-29 18:32:49 +02:00
s
b4ba9c803d
chore: fix typings for ElementHandle.screenshot() options (#7602) 2021-09-29 15:46:57 +00:00
Jan Scheffler
a271145b06
feat: add initiator to HTTPRequest (#7614)
Co-Authored-By: atersolis <atersolis@atersolis.net>
2021-09-29 15:14:21 +00:00
dmitrysteblyuk
f2e19276ac
chore: add hared TaskQueue for page.screenshot() again (#6714) 2021-09-23 14:37:35 +02:00
Jonathan Church
43a9268325
feat: add webp to screenshot options (#7565) 2021-09-21 14:26:20 +00:00
Alex Rudenko
8451951483
feat(page): mark page.client() as internal (#7585)
This PR marks the .client() method as internal since
we don't encourage our users to use it.
2021-09-21 13:20:02 +00:00
Alex Rudenko
99ca842124
feat(page): expose page.client() (#7582)
Puppeteer already allows creating a new CDP session
via target.createCDPSession but there is no way
to get access to any existing session to send
some additional commands.
2021-09-21 07:39:47 +00:00
Alex Rudenko
2b5c0019dc
feat: add ability to specify offsets for JSHandle.click (#7573)
Until now, the click would be always sent to the middle
point of the target element. With this change, one can define
offsets relative to the border box of the elements and click
different areas of an element.
2021-09-20 09:01:32 +00:00
Joone Hur
8e45a1c882
feat: add proxy and bypass list parameters to createIncognitoBrowserContext (#7516)
Example:

(async () => {
  const browser = await puppeteer.launch();
  const context = await browser.createIncognitoBrowserContext('myproxy.com:3128');
  const page = await context.newPage()
  await page.authenticate({username: 'foo', password: 'bar' });
  await page.goto('https://google.com');
  await browser.close();
})();

Issue: #678
2021-09-18 11:56:05 +02:00
Max White
eda5171279
feat: add durableStorage to allowed permissions (#5295) 2021-09-16 10:35:36 +00:00
Ron0115
54c4318016
feat: add threshold to Page.isIntersectingViewport (#6497) 2021-09-15 22:56:50 +02:00
Yosuke Kurami
cb4470a6d9
feat(coverage): option for raw V8 script coverage (#6454) 2021-09-15 18:54:24 +00:00
Xavier Prud'homme
caa2b732fe
fix(frame): fix Frame.waitFor's XPath pattern detection (#5184)
Up to now, only strings starting with '//' are considered as to XPath selectors. Unfortunately, this is too restricting. This fix allows valid XPath selectors starting with: '/', './', and even '(//*[1])'
2021-09-15 11:45:59 +00:00
Peter Marshall
726cb14003
chore: remove unused tracing category for cpu profiling (#5866) 2021-09-15 11:59:38 +02:00
Noam Lustiger
300be5d167
feat: add id option to addScriptTag (#5477) 2021-09-14 23:02:05 +02:00
Paul Adams
af2b5fca12
chore: clarify error message when node is not clickable (#6949) 2021-09-14 16:38:58 +00:00
Li Wenyan
f90af6639d
feat: support timeout for page.pdf() call (#7508) 2021-09-14 16:11:14 +00:00
Mathias Bynens
686030fe0d
chore: remove references to upstream master branches (#7412)
Chromium had its branch renamed to `main`, and for other projects we can just point to the `HEAD`.
2021-09-14 15:02:39 +00:00