Commit Graph

71 Commits

Author SHA1 Message Date
Simon
dccfadb90e
fix: kill browser process when 'taskkill' fails on Windows (#8352) 2022-05-16 13:32:29 +00:00
Alex Rudenko
eec2bf882b
chore: set up daily jobs for latest Chromium builds (#8344) 2022-05-13 12:15:12 +00:00
Alex Rudenko
4854ad5b15
fix: disable AvoidUnnecessaryBeforeUnloadCheckSync to fix navigations (#8330) 2022-05-11 09:41:53 +02:00
jrandolf
6841bd68d8
feat: support ES modules (#8306) 2022-05-09 11:17:24 +00:00
Valentin Semirulnik
baa017db92
feat: add support for Apple Silicon chromium builds (#7546)
Google has published Chromium builds for Apple Silicon so we can fetch it now

Related to #6622
2022-05-05 07:33:19 +00:00
Alex Rudenko
e841d7f9f3
fix: tests failing in headful (#8273)
* fix: test failing in headful

* fix: install Firefox for headful tests

* fix: skip favicon.ico requests in test

* fix: auth test in headful

* fix: disable NetworkTimeServiceQuerying

* fix: filter more favicon requests

* fix: network test with favicon

* fix: improve fixes
2022-05-02 11:37:21 +02:00
Alex Rudenko
1308d9aa6a
feat: support chrome headless mode (#8260)
* feat: support chrome headless mode

Co-authored-by: Ergün Erdoğmuş <erdogmusergun@gmail.com>
2022-04-25 13:11:23 +02:00
Henrik Skupin
b6504d7186
fix: also kill Firefox when temporary profile is used (#8233)
* fix: also kill Firefox when temporary profile is used

* fix: use separate tests for Puppeteer.launch should filter out ignored default arguments
2022-04-19 12:09:23 +00:00
Alex Rudenko
9ac7318506
fix: disable bfcache in the launcher (#8196)
Puppeteer has problems handling navigations to pages that
are restored from the back-forward cache. Let's disable it
until we have the support and test coverage.

Issues: #8182
2022-04-06 09:04:31 +02:00
liangwu
8f13470af0
fix: chromium downloading hung at 99% (#8169)
set keep-alive header to fix downloading done without 'finish' event trigged on some devices.
2022-03-31 08:08:22 +02:00
Alex Rudenko
85decdc28d
fix: regression in --user-data-dir handling (#8060) 2022-02-23 19:21:17 +00:00
Junyan
543a4d44bc
chore: remove console.error (#7883)
* chore: remove console.error

* fix: replace console.error with debugError

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2022-02-18 08:47:14 +00:00
Pasi Tuominen
0eb9c78617
fix: change kill to signal the whole process group to terminate (#6859)
* fix: change kill to signal the whole process group to terminate immediately

* chore: ignore taskkill errors

Co-authored-by: Jan Scheffler <janscheffler@chromium.org>
2022-02-17 12:17:33 +00:00
Josh Bielick
6d6ea9bf59
fix: always use ENV executable path when present (#7985)
Some recent changes to allow arm64 environments (including M1 macs) to
launch a chromium installation successfully before arm-compatible builds
were downloadable prevented the usage of PUPPETEER_EXECUTABLE_PATH in
some environments. Currently, when the platform is not darwin and the
arch is arm64, an executable cannot be specified using the environment
variable.

Generally speaking, environment variables have highest precedence for
options such as this since they depend on system configuration.

These change:

1. allow the ENV variable to always be used when defined and not
   specified in LaunchOptions (and when not puppeteer-core)
2. Retain the existing behavior of assuming /usr/bin/chromium-browser on
   platforms like Ubuntu (exact if-conditions preserved to avoid any
   breaking changes)
3. Add some tests for this particular portion of the code.
2022-02-11 13:07:31 +00: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
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
9afdc6300b
fix: make projectRoot optional in Puppeteer and launchers (#7967) 2022-02-07 12:59:44 +01:00
Alex Rudenko
0636513e34
fix: make more files work in strict-mode TypeScript (#7936) 2022-01-28 09:38:36 +00:00
Connor Clark
9f9b4ed72a
fix: clearer jsdoc for behavior of headless when devtools is true (#7748)
The existing comment suggests that only the default changes–however, even if you set `devtools: false` and `headless: true`, Puppeteer will still open with headful.
2021-11-16 21:31:24 +01:00
Henrik Skupin
fc94a28778
fix: try to remove the temporary user data directory after the process has been killed (#7761) 2021-11-15 11:52:09 +00:00
Henrik Skupin
51e61696c1
fix: only kill the process when there is no browser instance available (#7762)
When the browser has been started and we have a valid reference lets make use of it instead of force-killing the process. A force kill should probably be the last resort in cleaning up the process.

This will help with Firefox as described on #7668 (comment).
2021-11-11 09:19:23 +01:00
Henrik Skupin
790c7a0eb9
feat: support for custom user data (profile) directory for Firefox (#7684)
When using a custom Firefox profile for Puppeteer the modified
preferences as present in prefs.js need to be reset once the
profile is no longer needed by Puppeteer. If not done this could
cause side-effects when the profile is used next time outside
of Puppeteer.

As ride-along fix the "--foreground" argument for Firefox will
only be used on MacOS because that's the only supported platform.
2021-11-10 13:31:15 +01:00
Christopher Patty
b8806d5625
Adds default flag to export tagged PDFs in anticipation of Chrome 81 (#5337)
Co-authored-by: Jan Scheffler <janscheffler@chromium.org>
2021-10-12 14:07:18 +00:00
Henrik Skupin
5c592913a8
chore: ignore stdout when dumpio isn't used (#7644)
When the browser child process has logging enabled
and output on stdout isn't constantly processed,
the brower process is about to freeze.

To avoid such a situation at least the stdout
pipe shouldn't be set by default but only if
dumpio is enabled.

Co-authored-by: Jan Scheffler <janscheffler@chromium.org>
2021-10-07 21:43:57 +00:00
Henrik Skupin
e7f82626ca
chore: disable certain Fission features for Firefox (#7610) 2021-10-07 12:13:54 +02:00
Nadhir
eebf452d38
fix: add support for relative install paths to BrowserFetcher (#7613)
This patch fixes the BrowserFetcher._getFolderPath method so that it supports relative download paths using PUPPETEER_DOWNLOAD_PATH or npm config

Issues: #7592
2021-09-29 14:21:38 +00:00
Tan Li Hau
26145e9a24
feat: add custom debugging port option (#4993) 2021-09-29 16:05:18 +02:00
Jan Scheffler
113489d3b5
fix(launcher): launcher.launch() should pass 'timeout' option #5180 (#7596)
Co-authored-by: Bob Jamison <bob.jamison@pearson.com>
2021-09-27 10:01:35 +02:00
Kiko Beats
b1f6e8692b
feat: allow to customize tmpdir (#7243) 2021-09-23 09:26:00 +02:00
Ben Elliott
9399c9786f
fix(install): respect environment proxy config when downloading Firef… (#6577)
Issues: #6573
2021-09-15 19:41:03 +00:00
headlesstesting
6a2bf0aaba
feat: add User-Agent with Puppeteer version to WebSocket request (#5614)
This will add the User-Agent header to WebSocket requests.
2021-09-15 07:40:43 +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
Voltrex
57d1bd4240
refactor(node): apply optimizations (#7557)
Replaced unnecessary template strings and used less calls for optimization.
2021-09-13 09:14:23 +00:00
pyoor
2aec35553b
fix: update firefox prefs documentation link (#7539) 2021-09-10 18:59:43 +00:00
Theodore Messinezis
5735f31d78
chore: enable followRedirects for NodeWebSocket (#7555) 2021-09-10 20:34:25 +02:00
Andres Rondon
5eb20e29a2
fix(browser-runner): reject promise on error (#7338)
This patch adds a reject callback to the _processClosing promise and executes it if it catches an error on removeFolderAsync(...).

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2021-07-30 09:32:53 +02:00
TASNEEM KOUSHAR
c65b10c524
chore: remove more ts-doc warnings (#7422) 2021-07-19 10:39:40 +01:00
Yusuke Iwaki
d70f60e061
feat: add channel parameter for puppeteer.launch (#7389)
This change adds a new `channel` parameter to `puppeteer.launch`. When specified, Puppeteer will search for the locally installed release channel of Google Chrome and use it to launch. Available values are `chrome`, `chrome-beta`, `chrome-canary`, `chrome-dev`. This parameter is mutually exclusive with `executablePath`.
2021-07-09 12:43:42 +00:00
Julian Descottes
bba3f41286
chore: synchronize Bug 1710839: update comment about firefox preference remote.enabled (#7324) 2021-06-14 10:41:25 +02:00
TASNEEM KOUSHAR
159d283545
fix: modified comment for method product, platform and newPage (#7262) 2021-05-24 14:14:51 +01:00
Jack Franklin
3204f2780f
chore: fix eslint warnings around type defs (#7230)
This PR updates some code to remove constant ESLint warnings. It also
upgrades those warnings to errors - so that they have to be resolved
as part of the PR, rather than landing as a warning and causing noise.

Fixes #7229.
2021-05-12 17:43:05 +01:00
Jack Franklin
523aa0aafa
chore: upgrade and pin prettier dependencies (#7232)
We're seeing odd failures with Prettier on some CI branches; my hunch is that they are installing different versions of the package and therefore getting formatting conflicts. This PR updates them all and pins them to specific versions - something we should probably consider generally, or remove our `package-lock.json` from the gitignore.
2021-05-12 16:48:30 +02:00
Peng-Yu Chen
2605309f74
feat(launcher): add new launcher option waitForInitialPage (#7105)
The existing behavior is expected to be unchanged as the value defaults to true.
Adding such option would allow user to skip the initial wait.

Issue: #3630
2021-05-06 20:30:04 +00:00
Mathias Bynens
cf8c08d991 chore: fix lint issues 2021-04-19 13:17:20 +02:00
Marvin Hagemeister
c239d9edc7
feat(launcher): fix installation error on Apple M1 chips (#7099)
* feat(launcher): fix installation error on Apple M1 chips

The previous logic assumed that an arm64 arch is only available in Linux. WIth Apple's arm64 M1 Chip this assumption isn't true anymore.

Currently there are no official macOS arm64 chromium builds available, but we can make use of the excellent Rosetta feature in macOS which allows us to run x86 binaries on M1.

Once native macOS arm64 Chromium builds are available we should switch to those.

Issue: #6622
Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2021-04-19 09:00:43 +02:00
Henrik Skupin
669f04a7a6
chore: enable unit tests for Firefox on Windows (#6895)
Co-authored-by: Jan Scheffler <janscheffler@chromium.org>
2021-03-05 09:00:56 +00:00
Jack Franklin
98c81458c2
fix: improve TS types for launching browsers (#6888)
This commit tidies up the quite confusing state of all the various types
required to launch a browser. As we saw when upgrading DevTools
(https://source.chromium.org/chromium/chromium/src/+/master:third_party/devtools-frontend/src/test/conductor/hooks.ts;l=77),
we had to define our launch options variable like so:

```ts
const opts: puppeteer.LaunchOptions & puppeteer.ChromeArgOptions & puppeteer.BrowserOptions = {
  ...
};
```

This commit fixes that by introducing `AllNodeLaunchOptions`, which is
defined as the intersection of all the above types.

Additionally, the types defined as `ChromeArgOptions` are actually used
for launching both Chrome and Firefox, so I have renamed them to
`BrowserArgOptions`, and therefore this change is breaking because
anyone using `ChromeArgOptions` in their types will need to switch.

BREAKING CHANGE: renamed type `ChromeArgOptions` to `BrowserLaunchArgumentOptions`
BREAKING CHANGE: renamed type `BrowserOptions` to `BrowserConnectOptions`
2021-02-16 09:39:31 +00:00
Jack Franklin
6c61874797
fix(launcher): output correct error message for browser (#6815)
* fix(launcher): output correct error message for browser

When running `npm run release` today I got this error logged:

```
Error: Could not find browser revision 848005. Run "PUPPETEER_PRODUCT=firefox npm install" or "PUPPETEER_PRODUCT=firefox yarn install" to download a supported Firefox browser binary.
    at ChromeLauncher.launch (/Users/jacktfranklin/src/puppeteer/lib/cjs/puppeteer/node/Launcher.js:80:27)
```

The error is only partially correct; I did have the browser revision
missing, but I needed the Chromium browser, not Firefox. It turns out
the logic in `Launcher.ts` didn't take this into account; it mistakenly
had been hardcoded to always log out the error as if the Firefox binary
was missing.

This PR updates the message depending on the browser:

Chrome error:
> Error: Could not find expected browser (chrome) locally. Run npm
> install or yarn install to download the correct Chromium revision
> (848005).

Firefox error:
> Error: Could not find expected browser (firefox) locally. Run
> "PUPPETEER_PRODUCT=firefox npm install" or "PUPPETEER_PRODUCT=firefox
> yarn install" to download a supported Firefox browser binary.

* Update src/node/Launcher.ts

Co-authored-by: Mathias Bynens <mathias@qiwi.be>

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2021-02-04 11:59:01 +00:00
Alex Smith
9a8479a52a feat: support fetching and launching on Apple M1
Issue: #6495, #6634, #6641, #6614
2021-01-08 10:36:11 +01:00
Henrik Skupin
a732e7ac8f
chore: disable experimental Firefox cookie feature sameSite=Lax by default (#6690) 2021-01-08 10:11:41 +01:00