Commit Graph

1744 Commits

Author SHA1 Message Date
Jack Franklin
de4f08dc52 chore: migrate src/Page.js to TypeScript (#5809)
* chore: migrate src/Page.js to TypeScript

The final one! This is a huge file and needs to be split up and tidied,
but for now I've left all the definitions in place and converted types
accordingly.

There's some additional tidying we can do now every `src` file is TS,
but I'll leave that for another PR to avoid this one getting any bigger.

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-05-05 13:53:22 +01:00
Mathias Bynens
eed7d94a2b chore: improve readability for path strings (#5805)
This addresses the feedback from https://github.com/puppeteer/puppeteer/pull/5762#discussion_r416554314.
2020-05-05 14:18:41 +02:00
Jack Franklin
d8d1f6ff7c chore: migrate src/api.js to TypeScript (#5808) 2020-05-05 10:59:07 +02:00
Jack Franklin
890c215142 chore: migrate src/Puppeteer to TypeScript (#5789)
* chore: migrate src/Puppeteer to TypeScript.

* fix api js
2020-05-05 09:36:44 +01:00
Anderson Aguiar
209e25c0e1 docs(readme): syntax-highlight nested snippets in debugging section (#5799) 2020-05-05 07:45:21 +02:00
Vasilii Artemchuk
53d6fabf80 docs(api.md): improve emulateMediaFeatures section (#5807) 2020-05-05 07:43:14 +02:00
Jack Franklin
ec91ecaf0b chore: migrate src/Launcher to TypeScript (#5775) 2020-04-30 13:45:58 +01:00
Jack Franklin
5518bac291 chore: update how we track coverage during unit tests (#5779)
* chore: update how we track coverage during unit tests

The old method of tracking coverage was causing issues. If a test failed
on CI, that test's failure would be lost because the test failing would
in turn cause the coverage to fail, but the `process.exit(1)` in the
coverage code caused Mocha to not output anything useful.

Instead the coverage checker now:

* tracks the coverage in memory in a Map (this hasn't changed)
* after all tests, writes that to disk in test/coverage.json (which is
gitignored)
* we then run a single Mocha test that asserts every method was called.

This means if the test run fails, the build will fail and give the error
about that test run, and that output won't be lost when the coverage
then fails too.

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-04-30 13:00:41 +01:00
Paul Lewis
4a47867a24 feat: add support for string-based custom queries (#5753) 2020-04-30 12:45:52 +01:00
Jack Franklin
c212126f6a chore: turn on Travis retries (#5787)
To enable Travis to retry to work around ECONNRESET and similar that pops up.
2020-04-30 13:38:58 +02:00
Jack Franklin
3116bb9c2d chore: log product + binary on unit test runs (#5785)
This way it's super clear which product and binary you're testing against.
2020-04-30 13:03:16 +02:00
Mathias Bynens
541281b9f3 chore: fix doclint issues (#5784) 2020-04-30 12:58:51 +02:00
Jack Franklin
32c8c6992c chore: enable mocha retries (#5782)
We are seeing some CI flakes due to network resets, or issues out of our control. Let's try to avoid some of those by using Mocha's built-in retries.
2020-04-30 12:19:50 +02:00
Jack Franklin
5fb399d55d docs(contributing): update per recent changes (#5778)
Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-04-30 12:16:44 +02:00
Jack Franklin
8654d630ad chore: migrate src/NetworkManager to TypeScript (#5774) 2020-04-30 11:15:27 +01:00
Mathias Bynens
862eea850e chore: disable flaky setUserAgent test in Firefox (#5780) 2020-04-30 12:10:28 +02:00
ɯλrv¬
a8908cf3e0 chore: update incorrect link for DeviceDescriptors (#5777) 2020-04-30 09:14:12 +01:00
Jack Franklin
af2e45820f chore: migrate src/Target to TypeScript (#5771) 2020-04-29 15:18:09 +01:00
Jack Franklin
8a5008e30b chore: migrate src/FrameManager to TypeScript (#5773) 2020-04-29 13:28:16 +02:00
Jack Franklin
c5c97b07b5 chore: remove DOMWorld definition from externs.d.ts (#5767)
Missed in the initial work to migrate DOMWorld to TypeScript.
2020-04-28 18:45:55 +02:00
Jack Franklin
da6e6c00e5 chore: migrate src/EmulationManager to TypeScript (#5766) 2020-04-28 18:45:34 +02:00
Jack Franklin
01578446fa chore: migrate src/DOMWorld to TypeScript (#5764) 2020-04-28 15:35:43 +01:00
Jack Franklin
d69fbb9974 chore: Enforce array type styles in TypeScript (#5765)
This change enforces how we type arrays, e.g. choosing between:

* `string[]`
* `Array<string>`

I've gone for the `array-simple` option [1] which enforces that:

* primitive types and type references use `X[]`
* complex types use `Array<X>`

For example, we'd type an array of strings as `string[]`, but an array
of a union type as `Array<SomeUnionType>`.

[1]: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/array-type.md
2020-04-28 15:06:43 +01:00
Jack Franklin
1ccfbcb684 chore: enforce naming of errors in catch blocks (#5763) 2020-04-28 15:16:28 +02:00
Jack Franklin
3bf9bd199d chore: enforce src/protocol.d.ts is in sync (#5762)
* chore: enforce src/protocol.d.ts is in sync

On CI we run `npm run compare-protocol-d-ts` which checks that the file
on disk is up to date with the protocol we fetch from the browser.


Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-04-28 13:58:42 +01:00
Jack Franklin
06d62c0165 chore: migrate src/Browser to TS (#5761) 2020-04-28 14:26:37 +02:00
Jack Franklin
e03113e38b chore: Update protocol.d.ts (#5760) 2020-04-28 11:31:34 +01:00
Jack Franklin
8ddf4f3114 chore: bump version to 3.0.2-post (#5759) 2020-04-28 11:10:39 +01:00
Jack Franklin
646f42e98c chore: mark version v3.0.2 (#5752) v3.0.2 2020-04-28 10:23:19 +01:00
Jack Franklin
391183694f chore: small CI tidy ups (#5751)
* Increased the timeout to a flat 25 second for every build because we
still see the odd, non-reproducible timeout on a variety of machines.
* Removed an extraneous `npm run test-install` which meant we did that
check twice on each CI run.
2020-04-27 12:49:13 +01:00
Jack Franklin
5e2a029e44 chore: use Node's promisify function (#5748)
Node's promisify function and the TS types for it give much better type understanding when wrapping a function in `promisify`. This change means we don't maintain our own implementation and our own (sub-par) types and rather lean on the tested and thorough @types/node version instead.
2020-04-27 12:51:59 +02:00
Jack Franklin
1b9d9e9cc0 chore: log useful error for Node v14 breakage (#5732)
* chore: Useful error for Node v14 breakage

There is currently a bug with extract-zip and Node v14.0.0 that
causes extractZip to silently fail:
https://github.com/puppeteer/puppeteer/issues/5719

Rather than silenty fail if the user is on Node 14 we instead
detect that and throw an error directing the user to that bug. The
rejection message below is surfaced to the user in the command line.

The issue seems to be in streams never resolving so we wrap the call in
a timeout and give it 100ms to resolve before deciding on an error. If
the user is on Node < 14 we maintain the behaviour we had before this
patch.

Here's how this change impacts the output on Node 14 and Node 10:

Node 10:

```
npm run tsc && rm -r .local-* && node install

> puppeteer@3.0.1-post tsc /Users/jacktfranklin/src/puppeteer
> tsc --version && tsc -p . && cp src/protocol.d.ts lib/ && cp src/externs.d.ts lib/

Version 3.8.3
Downloading Chromium r737027 - 118.4 Mb [====================] 100% 0.0s
Chromium (737027) downloaded to /Users/jacktfranklin/src/puppeteer/.local-chromium/mac-737027
```

---

Node 14 without this patch:

```
npm run tsc && rm -r .local-* && node install

> puppeteer@3.0.1-post tsc /Users/jacktfranklin/src/puppeteer
> tsc --version && tsc -p . && cp src/protocol.d.ts lib/ && cp src/externs.d.ts lib/

Version 3.8.3
Downloading Chromium r737027 - 118.4 Mb [====================] 100% 0.0s
```

Note that whilst it doesn't error, it doesn't complete the install. We
don't get the success message that we saw above in the Node 10 install.

---

Node 14 with this patch:

```npm run tsc && rm -r .local-* && node install

> puppeteer@3.0.1-post tsc /Users/jacktfranklin/src/puppeteer
> tsc --version && tsc -p . && cp src/protocol.d.ts lib/ && cp src/externs.d.ts lib/

Version 3.8.3
Downloading Chromium r737027 - 118.4 Mb [====================] 100% 0.0s
ERROR: Failed to set up Chromium r737027! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.
Puppeteer currently does not work on Node v14 due to an upstream bug. Please see https://github.com/puppeteer/puppeteer/issues/5719 for details.
```

The explicit message should save users a good amount of debugging time.
2020-04-27 11:38:17 +01:00
Jack Franklin
a7d2485256 chore: split out CI into unit tests + extra checks (#5749)
* chore: split out CI into unit tests + extra checks


Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-04-27 11:04:09 +01:00
Jack Franklin
3ed2f6b0ac chore: remove puppeteer-web (#5750)
We don't support it and v3 shipped without including puppeteer-web in the browser. People are welcome to manually use Browserify to try to get Puppeteer running in a browser but it ultimately isn't our primary focus right now.

Getting puppeteer-core able to run in a browser is something we'll be looking at in the future so we'll revisit this soon.
2020-04-27 11:25:21 +02:00
Jack Franklin
1358b45fca chore: migrate src/LifecycleWatcher (#5734) 2020-04-27 10:03:33 +01:00
Paul Lewis
79e82e5b65 fix: make uploadFile throw for non-existent files (#5733) 2020-04-24 13:36:46 +02:00
Jack Franklin
1a4e260458 chore: migrate src/BrowserFetcher to TypeScript (#5727)
* chore: migrate src/BrowserFetcher to TypeScript
2020-04-24 08:57:53 +01:00
Jack Franklin
8509f4660e chore: migrate src/Accessibility to TypeScript (#5726) 2020-04-23 15:35:03 +01:00
Jack Franklin
930cc32baf chore: migrate src/Errors to TypeScript (#5725) 2020-04-23 13:53:47 +02:00
Jack Franklin
30aff827ea chore: migrate src/Events to TypeScript (#5724) 2020-04-23 13:52:09 +02:00
Jack Franklin
18238280df chore: migrate src/Tracing to TypeScript (#5723) 2020-04-23 13:51:48 +02:00
Vikram
3050196d81 fix: update clipboard read write permissions after upstream change (#5721)
Upstream change: https://chromium-review.googlesource.com/c/chromium/src/+/1895749

Fixes #5720.
2020-04-23 11:41:09 +02:00
Mathieu 'p01' Henri
0731049f86 chore: update pngjs to 5.0.0 and jpeg-js to 0.3.7 (#5676) 2020-04-23 11:38:00 +02:00
munrocket
ddb8ba1baf chore: tidy up and de-duplicate Travis CI config (#5716) 2020-04-23 09:29:37 +01:00
Jack Franklin
9d297f0827 chore: Bump version to 3.0.1-post (#5717) 2020-04-22 16:07:57 +01:00
Jack Franklin
be8f8a29a9 chore: Add macOS to Travis CI (#5708)
Runs TypeScript and the unit tests on an OS X build.
2020-04-22 15:44:24 +01:00
Jack Franklin
133abb07cf chore: migrate src/Input to typescript (#5710)
* chore: migrate src/Input to typescript

This moves `Keyboard`, `Mouse` and `Touchscreen` to TypeScript. We gain
some nice TS benefits here; by creating a type for all the keycodes we
support we can type the input args as that rather than `string` which
will hopefully save some users some debugging once we ship our TS types
in a future version.

* Remove from externs file

* Update utils/doclint/check_public_api/index.js

Co-Authored-By: Mathias Bynens <mathias@qiwi.be>

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-04-22 15:44:04 +01:00
Jack Franklin
11bc5a6450 chore: migrate src/Worker to typescript (#5715) 2020-04-22 15:43:45 +01:00
Jack Franklin
feec588f95 chore: add test for npm package installing correctly (#5714)
* chore: add test for npm package installing correctly

This command packs up the module and installs it again to check we're
correctly bundling everything we need to allow users to do a fresh
install.

* install realpath
v3.0.1
2020-04-22 15:33:36 +01:00
Jack Franklin
1615c9c9d5 chore: add install.js to files for publishing (#5712) 2020-04-22 12:16:51 +01:00