Commit Graph

61 Commits

Author SHA1 Message Date
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
JoelEinbinder
f2b6016354 chore: switch to npm from yarn (#1878)
This patch:
- migrates CI to use NPM
- drops lockfiles (`yarn.lock`). Lockfiles are ignored by package
  managers when the package is installed as a dependency, so this makes CI closer to the 
  installation our clients run.
2018-01-22 17:11:10 -08:00
JoelEinbinder
bd73e4b7b8 chore: use unique version for puppeteer@next (#1688)
This patch starts amending package.json with a unique puppeteer@next version
so that it gets published on npm.
2017-12-28 17:19:13 -08:00
Andrey Lushnikov
16dc037fc0
chore: update credentials for puppeteer@next auto-deploy (#1685) 2017-12-28 14:49:27 -08:00
JoelEinbinder
4f6d3954cd chore: puppeteer@next attempt 2 (#1677)
This patch:
- removes the "tags: true" field, we want to publish every commit
- makes sure we publish from node7 only
- prebuilds node6 before publishing
2017-12-28 10:40:38 -08:00
JoelEinbinder
e7bcc05554 chore: push successful travis builds to npm as puppeteer@next (#1671) 2017-12-27 18:19:48 -07:00
Andrey Lushnikov
f19e2ade0d
feat(install): build node6 support when installing from github (#1562)
This patch starts building node6 support if puppeteer is installed from
github directly and is run under Node 6.
2017-12-08 16:53:12 -08:00
Andrey Lushnikov
e6725e15af
tests: drop jasmine test runner (#1519)
This patch introduces a tiny test runner to run puppeteer tests.
The test runner is self-container and allows parallel (wrt IO) test execution.
It will also allow us to split tests into multiple files if necessary.

Comparing to the jasmine, the testrunner supports parallel execution, properly
handles "unhandled promise rejection" event and signals.

Comparing to ava/jest, the testrunner doesn't run multiple node processes,
which makes it simpler but sufficient for our goals.
2017-12-07 16:37:22 -08:00
Andrey Lushnikov
f08f33458f
test: validate headless reading cookies written by headful (#1266)
This test ensures that Chrome Headless can successfully read cookies written
by Chrome Headful.

References #921
2017-11-03 00:02:41 -07:00
Andrey Lushnikov
0e4477acf7 chore(travis): explicitly define node version in .travis.yml (#1069) 2017-10-17 15:02:09 -07:00