Commit graph

292 commits

Author SHA1 Message Date
Joel Einbinder 012f9425bf
chore(test-runner): move into its own folder and typescript project (#3548) 2020-08-20 16:04:27 -07:00
Pavel Feldman 30f4c0c9fe
test runner: remove dependencies on playwright (#3539) 2020-08-19 17:47:24 -07:00
Max Schmitt e679b82339
fix(devops): auto roll tests (#3536) 2020-08-19 15:04:52 -07:00
Max Schmitt 8ea280090d
devops: first implementation of browser auto-roll bot (#3455)
Relates #3258

After a chat with @aslushnikov we add this in two iterations. The first one (this PR) is about scheduled runs for testing the latest tip-of-tree version of the browsers daily and the next PR is about opening an automated PRs once its passing (not sure if its worth to add for failing too) or sending Telegram/Slack notifications.

Current status is that Firefox (around 2 hours) and WebKit (around 3-4 hours) works.

Known issues which I fix before we merge:
- ~~Changes in `test/base.fixture.ts` will get extracted in #3453~~

Feel free to review, current blockers are before we can merge:
- ~~#3453~~
- potential git clone optimisation by aslushnikov
2020-08-17 11:23:46 -07:00
Pavel Feldman 262e886940
test: organize golden files under __snapshots__ folder (#3494) 2020-08-16 19:19:52 -07:00
Dmitry Gozman 9b52ca8676
chore: remove unused non-rpc code, test options, infra, bots (#3444) 2020-08-13 16:00:23 -07:00
Dmitry Gozman 84ca0120f8
test: upload output from headful bots (#3439) 2020-08-13 09:33:43 -07:00
Joel Einbinder d3677357b8
feat(testrunner): take the first argument as the test root dir (#3423) 2020-08-12 20:01:13 -07:00
Yury Semikhatsky f0fcdc8f51
test(firefox): make headful screencast tests work under xvfb (#3421) 2020-08-12 16:07:01 -07:00
Pavel Feldman a4a07c46c3
test: support --grep, --forbid-only (#3417) 2020-08-12 14:57:37 -07:00
Pavel Feldman 962ddc09c4
test: consolidate runner files (#3415) 2020-08-12 13:47:44 -07:00
Pavel Feldman 7e07634cc6
test: use mocha in ci/cd (#3406) 2020-08-12 11:48:30 -07:00
Dmitry Gozman 8bb6d73b44
feat(rpc): keep non-rpc linux bots for now (#3381) 2020-08-10 20:49:53 -07:00
Ross Wollman cbd33f9601
devops: avoid running publish on external contrib (#3257)
Everytime I sync my fork to upstream, I get failure notifications:

```
Run failed for master (3edfb2a)
Repository: rwoll/playwright
Workflow: devrelease
Duration: 10 minutes and 34.0 seconds
Finished: 2020-07-31 18:30:13 UTC
```

Since forks should never have the necessary secrets to publish
the npm and Docker packages, we limit the running of these jobs to avoid
noisy failures for contributors.
2020-07-31 14:09:36 -07:00
Andrey Lushnikov 421f6f48c7
devops: use playwright-github-action@v1 (#3221)
The playwright-github-action@v1 now points to v1.4.3, so we can
switch to it once again.
2020-07-30 17:47:39 -07:00
Andrey Lushnikov e7ddf868bf
devops: rename docker image tag for tip-of-tree images (#3222)
We currently tag tip-of-tree docker images with `dev` tag. It'll
be much nicer to have consistent taggin with our `npm` which tags
with `next` tag.

This patch removes the `dev` tag and starts using the `next` tag instead
for docker images. Since we haven't announced `dev` tag support
anywhere, I think it's fine to remove it rather than have both `next`
and `dev`.
2020-07-30 11:45:54 -07:00
Andrey Lushnikov 77b1c4b883
devops: enable Ubuntu 20.04 tests (#3178) 2020-07-29 11:36:38 -07:00
Yury Semikhatsky 79ab07bd0d
devops: install Media Pack on Windows bot (#3137) 2020-07-23 18:06:16 -07:00
Dmitry Gozman d234dac752
chore: support esm imports (#3125) 2020-07-23 15:14:36 -07:00
Joel Einbinder 773ee08e9d
chore(test): restore api coverage checks (#3068)
* chore(test): restore api coverage checks

* try to catch the correct error on the bots

* try to trick github into taking the new code

* uninstall coverage

* dgozman comments
2020-07-22 09:08:10 -07:00
Joel Einbinder 3c151d8f1d
fix(test): don't output babel's debug info on the bots (#3073) 2020-07-21 16:23:46 -07:00
Pavel Feldman b5f9985d3a
devops: make headful a matrix, collect test results (#3027) 2020-07-18 10:50:58 -07:00
Andrey Lushnikov 7d2078ef6f
devops: bake browsers into Docker image (#2990)
This patch bakes browsers into docker image.

Important observations:
- We now re-build docker image everytime we roll browsers.
- Docker image size almost doubles: from `225MB` to `496MB`.

References #2926
2020-07-17 16:51:39 -07:00
Pavel Feldman 9d9801192e
test: wire test commands to jest (#3014) 2020-07-17 16:09:27 -07:00
Pavel Feldman 424f11d165
test: convert some tests to the jest+fixtures (#2983) 2020-07-16 16:59:45 -07:00
Pavel Feldman ecc130c644
test: convert evaluation.spec to jest+fixtures (#2968) 2020-07-16 11:18:38 -07:00
Pavel Feldman 19cd96c46a
test: add the jest-circus experimental runner (#2962) 2020-07-15 16:52:41 -07:00
Andrey Lushnikov d58a57c4b2
devops: fix docker publishing (#2939)
- Repository name has to start with `public/` to be exported to dockerhub.
- Remove `DOCKER_USERNAME` to avoid unnecessary masking in our logs.
- Publish dev versions of Docker image only when changes to docker file
happen. (this is why NPM publishing and Docker publishing for dev
releases are now separate).
- Release publishing in two separate jobs to make them independent.

References #2926
2020-07-13 17:15:10 -07:00
Andrey Lushnikov b7d68d1cdb
devops: automate Docker image publishing (#2937)
This starts publishing our Docker images using Github Actions:
- on every commit, a new image will be pushed, tagged with a SHA of the
  commit, e.g.
  `mcr.microsoft.com/playwright:sha-fe997eca88d6de48378b05133dadfe032bd8b0ea`
- on every release, a new image will be pushed, tagged with the release
  version, e.g. `mcr.microsoft.com/playwright:v1.2.1`

**Note:** today we don't version our images and instead push them all as
`bionic`. This patch retains the tag - along with `latest`. Both
`bionic` and `latest` tags will point to the latest release.
2020-07-13 16:18:51 -07:00
Dmitry Gozman 2151757621
feat(rpc): run rpc tests in-process and out-of-process (#2929) 2020-07-13 15:00:20 -07:00
Dmitry Gozman 6d94c92053
feat(rpc): support no-serialization mode, run hook tests (#2925)
Added rpc_json_linux bots to excercise serialization - these
do not run hook tests.
2020-07-13 08:31:20 -07:00
Pavel Feldman 982e5e3550
devops: collect artifacts from browser locations (#2913) 2020-07-10 16:15:00 -07:00
Pavel Feldman d561465214
devops: use matrix in GHA, add non-linux rpc (#2907) 2020-07-10 13:15:57 -07:00
Dmitry Gozman 5c4751d5dd
chore: generate protocol during browser roll (#2719)
We now commit protocol.ts files during the roll.
New utils/roll_browser.js helps with that.

This makes our installation very shallow:
- build installer;
- download browsers.
2020-07-01 15:22:29 -07:00
Andrey Lushnikov 6afb38d32f
devops: remove folder creation in github actions (#2779)
This should be no longer required.
2020-06-30 23:34:36 -07:00
Pavel Feldman 10a9eef832
chore(rpc): add a channel bot (#2773) 2020-06-30 18:51:36 -07:00
Yury Semikhatsky 22b4a6bd27
devops: enable coredumps for headful tests (#2678) 2020-06-23 17:18:29 -07:00
Yury Semikhatsky 49cb96c433
devops: enable core dumps in the subshell (#2555) 2020-06-11 23:58:24 -07:00
Yury Semikhatsky 48088222ed
devops: enable core dumps on Linux CI (#2552) 2020-06-11 16:41:58 -07:00
Andrey Lushnikov 37ec3a6ae6
fix(types): properly export typescript types from packages (#2364)
Drive-by: move package tests from `//test/installation-tests` to
`//packages/installation-tests`

Fix #2349
2020-05-26 17:19:05 -07:00
Dmitry Gozman 963dc72dd2
devops: add headful linux bot (#2060) 2020-05-04 15:15:51 -07:00
Ross Wollman 995c3eb4b5
devops: run install tests on common node versions (#2069)
Fixes #2059
2020-05-01 00:10:52 -07:00
Arjun Attam c921cc19ec
chore: use xvfb from newer github action (#2035) 2020-04-29 15:07:21 -07:00
Andrey Lushnikov 0b7f789de4
devops: try using another Github Actions event to trigger releases (#1931)
The [official
documentation](https://help.github.com/en/actions/language-and-framework-guides/publishing-nodejs-packages#publishing-packages-to-the-npm-registry)
suggests using `created` event, but it didn't work for us.

As someone mentioned on [github
community](https://github.community/t5/GitHub-Actions/Workflow-set-for-on-release-not-triggering-not-showing-up/m-p/53236#M8758),
it looks like the `created` event is actually issued when release draft
is first created.

Try using
[`published`](https://help.github.com/en/actions/reference/events-that-trigger-workflows#release-event-release)
event instead.
2020-04-22 22:52:32 -07:00
Andrey Lushnikov c474c540a3
devops: run CI against release branches too (#1910) 2020-04-21 19:20:19 -07:00
Andrey Lushnikov 0f338eced7
devops: introduce release publishing workflow (#1894)
This workflow is based on the Github Actions docs: [publishing node.js
packages](https://help.github.com/en/actions/language-and-framework-guides/publishing-nodejs-packages)

It should be triggered once we create a github release.
It's unclear how to test this workflow, so I tried to re-use as much
code from `publish_canary.yml` as possible.
2020-04-21 15:10:00 -07:00
Andrey Lushnikov ac8a30c526
devops: start releasing from Github Actions (#1890)
This patch:
- removes releasing from Travis CI
- sets up a new GH Action that releases @next version from tip-of-tree

Once this GH Action proves to be working, we'll setup a `publish_release.yml`
workflow that will be triggered only by **release** github events
and that will publish released version with `LATEST` tag.

NOTE: this workflow does not actually run publishing - we're doing
`--dry-run` for now to see how it works in
`//utils/publish_all_packages.sh`.
2020-04-20 17:45:29 -07:00
Andrey Lushnikov 193582445d
devops: add package-lock.json (#1859) (#1889)
We need to commit `package-lock.json` to repository to ensure
reproducible builds.

This also starts using [`npm ci`](https://docs.npmjs.com/cli/ci.html) to
install dependencies.

Drive-by: remove non-functioning `rebase` workflow.
2020-04-20 16:57:01 -07:00
Pavel Feldman 92b6bc0eb9 Revert "devops: add package-lock.json (#1859)"
This reverts commit 75f35e48a8.

It is unclear how to add/remove dependencies now.
2020-04-18 22:27:25 -07:00
Andrey Lushnikov 75f35e48a8
devops: add package-lock.json (#1859)
We need to commit `package-lock.json` to repository to ensure
reproducible builds.

This also starts using [`npm ci`](https://docs.npmjs.com/cli/ci.html) to
install dependencies.

Drive-by: remove non-functioning `rebase` workflow.
2020-04-18 22:14:06 -07:00
Andrey Lushnikov 52fe02eea6
devops: enforce strict treatment of unhandled rejections (#1789)
Run all our tests with node.js flag `--unhandled-rejections=strict`.
2020-04-14 22:40:33 -07:00
Dmitry Gozman 274c6c1450
test(chromium): add more oopif tests (#1685) 2020-04-14 13:00:10 -07:00
Dmitry Gozman 7189d19913
feat(ci): upload test output folder from github actions (#1733) 2020-04-09 16:57:01 -07:00
Arjun Attam d5a746aaba
chore(ci): use playwright github action (#1712) 2020-04-08 15:23:00 -07:00
Andrey Lushnikov 65ca87cd9a
fix: fix PLAYWRIGHT_BROWSERS_PATH treatment (#1662)
Drive-by: introduce installation tests that use `npm pack`
to simulate installation from NPM registry.

Fixes #1651
2020-04-03 23:16:14 -07:00
Max Schmitt 692f4db0a7
devops(ci): added job for testing package installations (#1572)
Closes #1518
2020-04-02 11:25:03 -07:00
Andrey Lushnikov 19dd2338d9 devops: remove verbose on WebKit Win on Github Actions 2020-03-13 14:44:54 -07:00
Andrey Lushnikov 5c9ebfaa79
chore(ci): bump checkout action to v2 (#1263)
This should fix the checkout problems we're facing.
Related discussion: https://github.com/actions/checkout/issues/23
2020-03-06 09:40:54 -08:00
Andrey Lushnikov 0ded511d0b
feat(testrunner): better matchers (#1077)
This patch re-implements matching and reporting for test runner.
Among other improvements:
- test failures now show a short snippet from test
- test failures now explicitly say what received and what was expected
- `expect.toBe()` now does text diff when gets strings as input
- `expect.toEqual` now does object diff
2020-02-20 22:55:39 -08:00
Andrey Lushnikov 9caa61aed1
devops: upload logs for test runs (#1015) 2020-02-14 19:02:17 -08:00
Andrey Lushnikov 2e9e0b77bf devops: rename bots to feature browser first 2020-02-14 13:32:55 -08:00
Andrey Lushnikov b041ce6219
devops: enable debugging on WK Windows 2020-02-13 17:48:45 -08:00
Andrey Lushnikov 1945ed7232
devops: run API coverage tests on linux (#958) 2020-02-12 14:43:13 -08:00
Andrey Lushnikov 5956df58f8
devops: re-factor github workflow internal structure (#956) 2020-02-12 13:52:06 -08:00
Joel Einbinder a4d0187cb8
chore: mac build bots (#734) 2020-02-12 12:30:47 -08:00
Andrey Lushnikov 1f29930201
devops: add docs & lint github workflow (#953) 2020-02-12 11:50:20 -08:00
Andrey Lushnikov 0de625d3ac Revert "devops: add docs & lint github workflow"
This breaks YML syntax in GH workflows
2020-02-12 11:45:16 -08:00
Andrey Lushnikov 7ec7f72a74 devops: add docs & lint github workflow 2020-02-12 11:44:28 -08:00
Andrey Lushnikov f114255a3d
devops: attempt to fix chromium linux bot 2020-02-05 11:58:16 -08:00
Joel Einbinder e131fe0cee
fix(chromium): install libgbm (#773)
The new Chromium (#771) requires [`libgbm1`](https://packages.debian.org/sid/libgbm1) to be installed. Install it manually on the bots, and add it to troubleshooting.md.
2020-01-30 15:54:53 -08:00
Joel Einbinder 184b25ff7b
chore: windows bots via github actions (#678)
Mac will come in a follow up!

As a drive-by, removed npm build everywhere, because npm install already runs build.
2020-01-28 18:04:51 -08:00
Andrey Lushnikov 9cd61571f1
devops: add auto-rebase github action
The action is triggered with a `/rebase` comment.

Details: https://github.com/cirrus-actions/rebase
2020-01-28 11:14:04 -08:00
Andrey Lushnikov f88a3f304a devops(ci): remove installation of glib-networking in GH Workflow
We now bundle glib-networking with WK on linux.
2020-01-17 21:43:28 -08:00
Andrey Lushnikov 39ca494945 devops(ci): another attempt to fix tls errors 2020-01-17 20:28:36 -08:00
Andrey Lushnikov 6eb8e9ae8f devops(ci): install glib-network to enable TLS for webkit 2020-01-17 20:18:31 -08:00
Andrey Lushnikov 29bfb3fa11 devops(ci): remove debug output for webkit tests 2020-01-17 20:13:54 -08:00
Andrey Lushnikov da52217b7b devops(ci): drop the pw_run.sh from dbg output 2020-01-17 20:09:28 -08:00
Andrey Lushnikov 06a9dcd9e3 devops(ci): install missing dependency for webkit workflow 2020-01-17 20:02:54 -08:00
Andrey Lushnikov fa850224b6 devops(ci): improve logging 2020-01-17 19:58:17 -08:00
Andrey Lushnikov f702dd9d8a devops(ci): add debug output for WK workflow 2020-01-17 19:46:59 -08:00
Andrey Lushnikov 9d14a54655 devops(ci): attempt to fix webkit workflow 2020-01-17 19:40:42 -08:00
Andrey Lushnikov 64560b1bfa
devops: drop DUMPIO from webkit test runs 2020-01-13 17:28:14 -08:00
Andrey Lushnikov 2362d38e59
devops(ci): update webkit.yml github actions 2020-01-13 17:21:56 -08:00
Joel Einbinder b7ac026e55
Update webkit.yml
this line didn't make sense to me so i'll delete it and see what happens.
2020-01-09 17:07:22 -08:00
Joel Einbinder aa7096d2c7
Update webkit.yml
try to fix the webkit build.
2020-01-09 17:03:16 -08:00
Joel Einbinder fea801659d chore(github): only run tests on the master branch (#446) 2020-01-09 14:29:19 -08:00
Andrey Lushnikov 3ba591b9d1 chore(ci): iterate on debug output for GH Action 2019-12-19 17:41:01 -08:00
Andrey Lushnikov d5c3fa2f03 chore: debug output for webkit github action 2019-12-19 17:39:24 -08:00
Andrey Lushnikov cdace02e62 devops: create different workflows for different browsers 2019-12-11 17:30:14 -08:00
Andrey Lushnikov 40ae745db7
devops: fix github action 2019-12-11 17:22:51 -08:00
Andrey Lushnikov 9cb34306a3
devops: remove extra github action 2019-12-11 17:21:40 -08:00
Andrey Lushnikov 160fc9fae3
devops: enable Linux Github actions 2019-12-11 17:20:46 -08:00