Commit Graph

70 Commits

Author SHA1 Message Date
Jack Franklin
c2c2bb7e55
chore(agnostification): common/helper.ts (#6515)
* chore(agnostification): common/helper.ts

The `readProtocolStream` method uses `fs` only if you want to write to a
file. So we gate at the start of the function and ensure that if we got
given a path we are not in a Node environment.
2020-10-19 09:57:15 +01:00
Jack Franklin
637a1f7409
chore: gitignore new-docs (#6511)
They are generating a lot of noise in PRs. This commit removes them from git, but updates CI to generate them - to ensure there are no errors when generating the new documentation.

Further commits will:

1. Introduce linting to enforce methods are documented.
2. Generate previews of the new docs via GitHub actions or similar.
2020-10-14 11:44:40 +01:00
Lars den Bakker
15d1906e7c
feat: add web test runner (#6200) 2020-07-22 13:14:35 +02:00
Jack Franklin
31309b0e20
chore: use devtools-protocol package (#6172)
* chore: Use devtools-protocol package

Rather than maintain our own protocol we can instead use the devtools-protocol package and pin it to the version of Chromium that Puppeteer is shipping with.

The only changes are naming changes between the bespoke protocol that Puppeteer created and the devtools-protocol one.
2020-07-10 11:51:52 +01:00
Jack Franklin
f666be3f5f
chore: remove src/api.ts (#6191)
Now the async hooks helper is gone api.ts was only used by the coverage
tools and by doclint.

DocLint is nearing the end of its lifespan with the TSDoc work, so I
focused on how best to define a list of modules for the coverage
tooling. They define an object of classes, and the path to that module.
They need the full path because we also check if the module exports any
events that need to be emitted - the coverage tool asserts that the
emitting of those events is also tested.

It's not _great_ that DocLint relies on a constant defined in the
coverage utils, but it should only be this way for a short period of
time and no one is actively working on DocLint (bar the effort to remove
it) so I don't think this is worth worrying about.

This change also broke the DocLint tests; based on the fact that DocLint is on its way out it doesn't feel worth fixing the tests, so this commit also removes them.
2020-07-10 10:07:28 +01:00
Jack Franklin
1f5e333f00
chore: Don't store revisions in package.json (#6109)
* chore: Don't store revisions in `package.json`

It's quite messy to have to require the `package.json` file in multiple
places purely to find out what revision of a given browser we want to
use. We can also achieve better type safety by placing it in an actual
source file.

This commit makes that change and also tidies up our reliance on
`package.json` within the source code generally; we now only use it to
find the location of the Puppeteer root such that we know where to
install downloaded browsers to.

To avoid using `package.json` to parse the name of the module, we also
now explicitly have an entry point for the Puppeteer module and the
Puppeter Core module. This will make it easier in the future to ship
less code as part of core (e.g. core never needs to download a browser,
so why ship that code?). Core can also then not have any revisions based
info contained in it.

The test install script has also been updated to ensure that
puppeteer-core can be installed correctly too.

Finally, the `install` script has been moved to TypeScript for nicer
typechecking and safety. The functionality of it has not changed.
2020-06-29 16:13:24 +01:00
Jack Franklin
91eb74519c
chore: ensure new-docs are up to date (#5994)
* chore: ensure new-docs are up to date

This adds a Travis check that if we re-generate the docs we get the
exact output (by checking if the Git tree is dirty).

We do the dirty check by using `git status --porcelain`, seeing how many
lines that outputs, and using that as the exit code (taking only the
first 255 lines to avoid invalid exit codes). `--porcelain` makes the
output be empty if the repo is not dirty in anyway which translates into
an exit code of 0.

We can't use `git diff-index --quiet HEAD` as it exits with 0 if there are
untracked files in the repo but we want that to cause a failure.
2020-06-11 09:48:37 +01:00
Jack Franklin
9737059400
chore: remove doclint generate_types code (#5932)
This script generated an `index.d.ts` file but that file was never
commited to git nor included in Puppeteer when we ship. As of right now
people who want TS types can install from the DefinitelyTyped repo and
we are working on shipping types from Puppeteer itself.

Therefore this script is not adding any value and can be removed.
2020-05-28 15:55:14 +01:00
Jack Franklin
d8e0557d18
chore: update Travis to run latest macOS and fix HTTPS test (#5903)
* chore: fix invalid SSL assertion on Catalina

The error Chrome gives with an invalid cert changes between older Mac
versions and Catalina as detailed here:
https://support.google.com/chrome/thread/18125056?hl=en.

This PR changes Travis to run Catalina (and we think most devs run up to
date OS versions) so this fix ensures the test behaviour is consistent
locally and on Travis.

For those on older Mac versions I've left a comment by the tests to
hopefully save them debugging!

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2020-05-21 15:36:59 +01:00
Jack Franklin
70340de0cc
chore: add Node 12 and Node 14 to CI (#5821) 2020-05-07 10:24:03 +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
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
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
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
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
munrocket
ddb8ba1baf
chore: tidy up and de-duplicate Travis CI config (#5716) 2020-04-23 09:29:37 +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
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
2020-04-22 15:33:36 +01:00
Jack Franklin
f13c30a9ec
chore: migrate src/USKeyboardLayout to typescript (#5695)
* chore: migrate `src/USKeyboardLayout` to typescript

Don't think we need to expose the interface type for the keycodes so
I've left it local for now.

* retry windows unit tests
2020-04-21 10:21:45 +01:00
Jack Franklin
c4fe4e46c2
chore(ci): re-enable tests on Windows (#5637)
* chore: Add Windows to Travis

This commit runs the unit tests on Windows.

There are two tests failing on Windows that we skip.

I spoke to Mathias B and we agreed to
defer debugging this for now in favour of getting tests running on
Windows. But we didn't want to ignore it forever, hence giving the test
a date at which it will start to fail.
2020-04-17 14:27:50 +01:00
Maja Frydrychowicz
35989a78ba
fix: set revision based on PUPPETEER_PRODUCT (#5643) 2020-04-15 13:30:42 +02:00
Jack Franklin
262da92bbb
chore(test): re-enable Firefox testing on CI (#5608) 2020-04-08 12:18:29 +02:00
Jack Franklin
83d9d530ca
chore: update CI to run Travis + Linux + Chromium (#5583)
Our CI build has been incredibly flaky across all three of our current CIs:

* Appveyor: Chromium + Windows
* Travis: Firefox + Linux, Chromium + Linux
* Cirrus: Chromium + Linux, Chromium + Mac

Legitimate issues and errors have been missed because it's expected that the CI is red and therefore it's not seen as an issue when a PR's build fails.

We should have a build that covers the full combo of browsers and operating systems but it's more important to have a consistent, reliable green build where failures are genuine. So this commit strips our CI back to Chromium on Linux on Travis, and nothing more. Once this is stable we will expand out into more operating systems and bring back Firefox, too.
2020-04-08 11:38:07 +02:00
Jack Franklin
8fa034bf2f
chore: remove flakiness dashboard (#5592)
We're not using it at all so might as well cut down on code in the codebase.
2020-04-06 11:55:15 +02:00
Jack Franklin
4c41421dd9
chore: run Chromium on Node.js 12 on Travis (#5582) 2020-04-03 13:22:02 +02:00
Jack Franklin
2b52b860cd
chore: remove travis-autodeploy (#5580)
We don't want to automatically publish these and this hasn't been running / working for a while anyway.
2020-04-03 12:01:54 +02:00
Changhao Han
807fbbdc20
chore: drop Node.js v8 support (#5365)
* chore: update relevant Node.js versions from 8 to 10

* chore: remove node6 and node8 folders from puppeteer-firefox ci

* fix: loosen definition for proc.stdio

* fix: update typescript version used in npm run test-types
2020-03-10 21:55:32 +01:00
Maja Frydrychowicz
0b1a9ceee2
chore: Replace Juggler with Firefox Nightly in CI (#5395)
Fixes #5150.
2020-02-20 13:57:15 +01:00
Maja Frydrychowicz
c5a72e9887 feat(launcher): add option to run Puppeteer with different browsers (#5137)
* feat: Set which browser to launch via PUPPETEER_PRODUCT

This change introduces a PUPPETEER_PRODUCT environment
variable as a first step toward using Puppeteer with
many different browsers. Setting PUPPETEER_PRODUCT=firefox, for
example, enables Firefox-specific Launcher settings.

The state is also exposed as `puppeteer.product` in the API
to support adding other product-specific behaviour as needed.

The bulk of the change is a refactoring in Launcher
to decouple generic browser start-up from product-specific
configuration.

Respecting the puppeteer-core restriction for PUPPETEER_
environment variables, lazily instantiate the Launcher
based on a `product` Puppeteer.launch option, if available.

* test: Distinguish Juggler unit tests from Firefox

The funit script is renamed to fjunit (j for Juggler, which is
used only by the experimental puppeteer-firefox package.

In contrast, the funit script now refers to running Puppeteer
unit tests against the main puppeteer package with Firefox.
To do so with Firefox Nightly, run:

`BINARY=path/to/firefox npm run funit`

A number of changes in this patch make it easier to run
Puppeteer unit tests in Mozilla's CI.
2019-11-26 10:23:19 +01:00
Mathias Bynens
11ff374ca3
chore: drop Node.js v6 support (#5045)
Node.js v6 was end-of-life'd in April, 2019, with AWS Lambda prohibiting updaets to the Node.js v6 runtime since June 30, 2019.

This makes it quite safe for us to remove the Node 6 support from the repository.
2019-10-16 17:00:20 +02:00
Andrey Lushnikov
5d2378f15b
chore(ci): fix firefox tests on Travis (#4828)
I forgot Firefox requires explicit installation.
2019-08-09 19:02:47 -07:00
Andrey Lushnikov
85bd4a874f
chore(flakiness): fix flakiness on Appveyour and Travis (#4827)
This patch fixes build URL on Appveyour and splits out
Firefox tests into a separate dashboard on Travis.
2019-08-09 18:37:43 -07:00
Andrey Lushnikov
8f5117b3eb
chore(flakiness): another travis attempt (#4826) 2019-08-09 16:15:00 -07:00
Andrey Lushnikov
d347fcbb29
chore(flakiness): add travis to flakiness dashboard (#4825)
This attempts to add flakiness dashboard for travis builds.
2019-08-09 15:46:00 -07:00
Andrey Lushnikov
54cce43aea
fix(ci): another attempt to fix puppeteer@next (#4258)
1. re-logged-in into npm
2. regenerated with:

```sh
travis encrypt <KEY> --add deploy.api_key --com --repo GoogleChrome/puppeteer
```
2019-04-08 16:06:14 -07:00
Andrey Lushnikov
0eb256b16b
fix(ci): fix builds of puppeteer@next (#4257)
Regenerated key with

```sh
travis encrypt <KEY> --add deploy.api_key --com --repo GoogleChrome/puppeteer
```
2019-04-08 14:58:29 -07:00
Andrey Lushnikov
96792793ea
chore(ci): enable firefox on travis (#3935)
References #3889
2019-02-06 16:34:38 -08:00
Joel Einbinder
f2c968fdb8 chore(types): generate our own d.ts file from api.md (#3744)
Generate `//index.d.ts` file with precise typescript definitions for all of the
Puppeteer API.
2019-01-28 15:12:45 -08:00
Andrey Lushnikov
02ae552ac4
chore(ci): another sad attempt to fix travis deployment (#3769)
Apparently all the issues happen because we switched from travis.org
to travis.com. So this enctryption key was generated with:

```sh
travis encrypt <KEY> --add deploy.api_key --com --repo
GoogleChrome/puppeteer
```
2019-01-14 15:50:51 -08:00
Andrey Lushnikov
7daeafc69b
chore(ci): yet another attempt to fix travis auto-deployment (#3768) 2019-01-14 15:31:04 -08:00
Andrey Lushnikov
81cf579275
chore(ci): another attempt to fix travis autopublish (#3759) 2019-01-11 22:28:25 -08:00
Andrey Lushnikov
f933f5971f
chore(ci): attempt to fix travis (#3758) 2019-01-11 17:01:01 -08:00
Andrey Lushnikov
eb7bd9d7d3
test: setup sandbox on linux (#3530)
Drop all the `--no-sandbox` bits from tests and infrastructure. Instead, configure
Travis to enable user namespace clone.
2018-11-12 23:26:16 -08:00
Andrey Lushnikov
6ec3ce6920
chore: make sure Puppeteer bundling works (#3239)
This patch:
- adds "browser" field to the package.json with default
  bundling options.
- introduces "bundle" and "unit-bundle" commands to
  create bundle and test bundle
- starts running bundle tests on Travis Node 8 bots

Fixes #2374.
2018-09-13 20:08:51 +01:00
Andrey Lushnikov
78ebf401c2
chore(ci): move all CI from Node7 to Node8 (#2938)
Node 8 is the current LTS. We should use it by default on all
our CIs.
2018-07-26 16:27:11 -07:00
Andrey Lushnikov
5b1898785b
chore(ci): yet another attempt to fix pptr@next (#2940)
References #2925.
2018-07-23 17:04:16 -07:00
Andrey Lushnikov
1d5f52e2fc
chore(ci): fix auto-publish to travis (#2931)
Fixes #2925.
2018-07-20 17:28:46 -07:00
Andrey Lushnikov
8f5ecf50c6
chore(ci): fix auto-publish to travis (#2930)
Fixes #2925.
2018-07-20 17:07:57 -07:00
Andrey Lushnikov
6bc9877571 chore(CI): disable email notifications (#2412) 2018-04-19 13:27:37 -07:00
Fedor Korotkov
fc7e4d1065 chore(CI): fix node.js version on Travis and AppVeyor (#2180)
AppVeyour was configured to use the latest versions of Node for major releases. To make builds more reproducible I've changed both Travis and AppVeyor to use the same fixed versions of Node 6 and Node 7 that AppVeyor is using at the moment.
2018-03-13 07:44:14 -07:00