Commit Graph

333 Commits

Author SHA1 Message Date
Alex Rudenko
053d960fb5
fix: work around a race in waitForFileChooser (#8905)
Closes #6040
2022-09-06 17:03:56 +02: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
Alex Rudenko
7b42250c7b
fix: restore deferred promise debugging (#8895)
* fix: restore deferred promise debugging

* chore: strict types
2022-09-05 10:30:47 +02:00
jrandolf
2d50ec5b38
chore: add DeferredPromise to injection (#8883) 2022-09-01 18:44:59 +02: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
jrandolf
292216652b
chore: add injection framework (#8862)
* chore: add injection framework
2022-08-31 10:50:22 +02:00
jrandolf
9f5cb670e8
chore: consolidate deferred promise (#8863)
* fix: forward timeout waitForFileChooser

* chore: consolidate deferred promise

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2022-08-30 16:24:51 +02: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
498fbf924c
chore: remove obsolete queryAllArray (#8847) 2022-08-25 21:29:56 +02:00
jrandolf
b49e742e30
chore: make execution context frame-independent (#8845) 2022-08-25 17:38:02 +02:00
jrandolf
2f33237d04
fix!: internalize execution context (#8844) 2022-08-25 17:02:44 +02:00
jrandolf
d070a73c46
chore: infer ElementHandle constructor params (#8843) 2022-08-25 17:01:30 +02:00
jrandolf
744a6e028a
chore: infer client from context in JSHandle (#8842) 2022-08-25 17:00:35 +02:00
jrandolf
5fba0dc932
chore: remove unnecessary constructor parameters (#8837) 2022-08-24 17:04:54 +02:00
Alex Rudenko
202ffce0aa
fix: remove deferred promise timeouts (#8835)
Issue #8832 makes a good point that we should not be making
implicit assumptions about the client's performance
when waiting for internal events. At the same time,
we want to be able to get the debug info if some promises
never resolve because of missing backend events.

This PR adds a variable to turn on timeouts for deferred
promises created using `createDebuggableDeferredPromise`.
We can use it in our tests to catch never-resolving
promises or when reproducing bug reports where Puppeteer
hangs indefinitely.

Closes #8832
2022-08-24 12:05:32 +02:00
Alex Rudenko
341b669a5e
fix: allow multiple navigations to happen in LifecycleWatcher (#8826)
There is no repro but it looks like sometimes the backend reports
two navigation requests. This PR changes the logic to allow that
instead of failing as it seems that failing is a bigger issue
than handling multiple navigation requests.

Closes #8811
2022-08-22 14:51:58 +00:00
jrandolf
b9b24cf963
chore: use deferred promises in web worker (#8824) 2022-08-22 14:03:45 +02:00
Alex Rudenko
2a0eefb99f
fix: handle service workers in extensions (#8807)
Closes #8800
2022-08-17 19:34:34 +02:00
jrandolf
51b2f0576d
chore: move Frame to Frame.ts (#8806) 2022-08-17 17:45:45 +02:00
jrandolf
bdcb748b98
chore: infrastructure for injecting scripts into DOMWorlds (#8801) 2022-08-17 14:39:41 +02:00
Alex Rudenko
3fad05d333
fix: custom sessions should not emit targetcreated events (#8788)
Closes #8787
2022-08-16 10:56:13 +00: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
Alex Rudenko
23da97105c
chore: remove toStringTag (#8776) 2022-08-11 15:47:30 +02:00
jrandolf
a238f5758d
chore: refactor JSHandle and ExecutionContext (#8773) 2022-08-11 11:45:35 +02:00
Alex Rudenko
ee2540baef
fix: use targetFilter in puppeteer.launch (#8774)
Drive-by: adds Symbol.toStringTag to Target to simplify
debugging.

Closes #8772
2022-08-11 09:15:00 +00:00
jrandolf
d6a88a9768
chore: refactor FrameManager and fix docs (#8770) 2022-08-10 23:34:29 +02:00
Alex Rudenko
2580347b50
fix: resolve navigation flakiness (#8768)
Two main sources of flakiness addressed: 

1) we should dispose the lifecycle watcher after we waited for the navigation response (bad API? we need to refactor but I think it'd be valuable to stabilize tests first without too many changes).
2) we should wait for the navigation request's response if there is a navigation request in the watcher.

Closes #8644
2022-08-10 15:59:58 +00:00
Alex Rudenko
c23cdb73a7
fix: make sure there is a check for targets when timeout=0 (#8765)
Previously, if timeout is falsy, the targets would only
be checked if a browser-level event fires which lead to
a race: if the events arrived before waiting for a target,
the promise would never resolve.

Fixes #8763
2022-08-10 15:49:59 +02:00
jrandolf
837b10b15e
chore: rename DOMWorld to IsolatedWorld (#8761) 2022-08-09 15:17:42 +02:00
jrandolf
932a053d02
chore: move adoption to DOMWorld (#8760) 2022-08-09 14:55:18 +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
8be8f5ff72
chore: refactor deferred promise (#8759) 2022-08-09 13:29:12 +02:00
Alex Rudenko
8cb5043868
fix: resolve target manager init if no existing targets detected (#8748)
Closes #8747
2022-08-06 15:35:42 +02:00
jrandolf
5cf9b4de8d
feat: use an xpath query handler (#8730) 2022-08-04 15:45:21 +02:00
Alex Rudenko
49193cbf1c
fix: specify the target filter in setDiscoverTargets (#8742)
To stay compatible with the next version of Chromium.
See https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-setDiscoverTargets
2022-08-04 11:46:53 +00: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
d2f6db2073 fix: use loaderId to reduce test flakiness (#8717) 2022-08-02 13:18:50 +00:00
Alex Rudenko
c064114636 chore: refactor init to make sure it works with paused targets (#8710) 2022-08-02 13:18:49 +00:00
Alex Rudenko
f52b37a3aa docs: fix a typo in waitForSelector (#8701) 2022-08-02 13:18:48 +00:00
Alex Rudenko
6f81b23728 fix: address flakiness in frame handling (#8688)
When we attach to a frame, we send a call to get
the page frame tree from CDP. Based on the tree data
we look up the parent frame if parentId is provided.
The problem is that the call to get the page frame
tree could take arbitrary time and the calls for the
parent and child frames might happen at the same time.
So the situation where the frame tree for the child frame
is resolved before the parent frame is known is fairly
common.

This PR addresses the issue by awaiting for the parent
frame id before attempting to register a child frame.
2022-08-02 13:18:47 +00:00
Alex Rudenko
2cbfdeb0ca feat: use CDP's auto-attach mechanism (#8520)
* feat: use CDP's auto-attach mechanism

In this PR, we refactor Puppeteer to make use of the CDP's auto-attach mechanism. This allows the backend to pause
new targets and give Puppeteer a chance to configure them properly. This fixes the flakiness related to dealing with
OOPIFs and should fix some other issues related to the network interception and navigations. If those are not fixed completely by this PR, the PR serves a solid base for fixing them.

Closes https://github.com/puppeteer/puppeteer/issues/8507, https://github.com/puppeteer/puppeteer/issues/7990
Unlocks https://github.com/puppeteer/puppeteer/issues/3667

BREAKING CHANGE: With Chromium, Puppeteer will now attach to page/iframe targets immediately to allow reliable configuration of targets.
2022-08-02 13:18:07 +00:00
Alex Rudenko
2abb9f0c14
fix: taking a screenshot with null viewport should be possible (#8680)
Closes #8673
2022-07-21 10:34:18 +02: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