74 Commits

Author SHA1 Message Date
Max Schmitt
cf12a1a97e
chore: upgrade commander.js to version 8 (#9230) 2021-09-30 12:24:24 +02:00
Max Schmitt
cd22072685
chore: enable object-curly-spacing in ESLint (#9168) 2021-09-27 18:58:08 +02:00
Joel Einbinder
c673ef5330
chore(registry): refactor logic of what browsers to download to top level (#9078) 2021-09-22 11:43:13 -07:00
Andrey Lushnikov
4f762ba90a
feat: introduce experimental general-purpose grid (#8941)
This patch adds a general-purpose grid framework to parallelize
Playwright across multiple agents.

This patch adds two CLI commands to manage grid:

- `npx playwright experimental-grid-server` - to launch grid
- `npx playwrigth experimental-grid-agent` - to launch agent in a host
  environment.

Grid server accepts an `--agent-factory` argument. A simple
`factory.js` might look like this:

```js
const child_process = require('child_process');

module.exports = {
  name: 'My Simple Factory',
  capacity: Infinity, // How many workers launch per agent
  timeout: 10_000, // 10 seconds timeout to create agent
  launch: ({agentId, gridURL, playwrightVersion}) => child_process.spawn(`npx`, [
    'playwright'
    'experimental-grid-agent',
    '--grid-url', gridURL,
    '--agent-id', agentId,
  ], {
    cwd: __dirname,
    shell: true,
    stdio: 'inherit',
  }),
};
```

With this `factory.js`, grid server could be launched like this:

```bash
npx playwright experimental-grid-server --factory=./factory.js
```

Once launched, it could be used with Playwright Test using env variable:

```bash
PW_GRID=http://localhost:3000 npx playwright test
```
2021-09-16 01:20:36 -07:00
Max Schmitt
96355b3a7a
chore: hide npx playwright debug command (#8946) 2021-09-15 21:19:16 +02:00
Pavel Feldman
16baaa317d
chore: remove stale html experiments (#8905) 2021-09-13 20:34:46 -07:00
Pavel Feldman
bb33b8923e
feat(report): add show-report option (#8895) 2021-09-13 15:19:40 -07:00
Pavel Feldman
7bbb63d143
feat(test): start authoring raw reporter (#8790) 2021-09-09 14:17:18 -07:00
Max Schmitt
e1c2d67359
fix(cli): allow unknown parameters in debug command (#8732) 2021-09-07 18:35:01 +02:00
Pavel Feldman
44887c237d
chore: reimplement socks to be readable (#8315) 2021-08-19 15:16:46 -07:00
Dmitry Gozman
8d81890e47
feat(codegen): support --save-trace option (#8267) 2021-08-18 07:27:45 -07:00
Andrey Lushnikov
51fb19561c
devops: support npx playwright install --with-deps command (#7194)
The common pattern today is to have two commands to configure CI:

```sh
npx playwright install-deps chromium
npx playwright install chromium
```

With this patch, this becomes:

```sh
npx playwright install --with-deps chromium
```

Note: `--with-deps` might call `sudo`.
2021-08-07 03:53:33 -07:00
Jan Sepke
600d82b17c
fix(cli): fix typo in help text (#7903)
Co-authored-by: Max Schmitt <max@schmitt.mx>
2021-07-29 11:23:50 +02:00
Max Schmitt
2ff25522cc
test: rework port forwarding server tests to launch server out of process (#7693) 2021-07-19 07:53:12 +02:00
divdavem
87b0cc530c
feat(cli): add --ignore-https-errors option (#7671) 2021-07-16 07:33:20 -07:00
Dmitry Gozman
0742cb9076
chore: move working with browser channels to Registry Executables (#7581) 2021-07-13 19:03:49 -07:00
Dmitry Gozman
57c5e4d8cf
chore: replace Registry api with Executable list (#7544) 2021-07-13 15:57:40 -07:00
Dmitry Gozman
65606c093a
chore: simplify Registry api (#7451) 2021-07-09 16:10:23 -07:00
Dmitry Gozman
47885db116
chore: move install to Registry (#7433)
This is an effort to consolidate all handling of browser binaries in a single place.
2021-07-06 20:59:16 -07:00
Andrey Lushnikov
ec8d0629f3
feat: support msedge-beta channel (#7442)
Fixes #7232
2021-07-02 12:55:46 -07:00
Dmitry Gozman
040d81052a
fix(cli): do not suggest internal tools in install command (#7437) 2021-07-02 11:22:26 -07:00
Dmitry Gozman
4c7343fe96
chore: move installDeps to Registry (#7431)
This is an effort to consolidate all handling of browser binaries in a single place.
2021-07-01 17:14:04 -07:00
Pavel Feldman
e9246089d5
test(trace-viewer): start adding tests (#7393) 2021-06-29 22:35:50 -07:00
Dmitry Gozman
1660334357
feat(install): docs and help (#7365)
Drive-by: remove test-intro and references to it.
2021-06-28 18:50:24 -07:00
Max Schmitt
5bf69b667e
fix(test-runner): allow additional params when pw-test is not installed (#7200) 2021-06-17 13:40:49 -07:00
Pavel Feldman
3b1bae8a40
feat(codegen): allow generating tests (#7049) 2021-06-10 16:52:59 -07:00
Joel Einbinder
6788b9cf8c
fix(@playwright/test): plumbing (#6992)
`npx playwright test` should find and forward to the @playwright/test package.
2021-06-09 11:18:32 -07:00
Andrey Lushnikov
cfd49b5c01
feat: support npx playwright install msedge (#6861) 2021-06-07 00:23:22 -07:00
Dmitry Gozman
f745bf1fbc
chore: bring in folio source (#6923)
- Source now lives at `src/test`.
- Former folio tests live at `tests/playwright-test`.
- We use `src/test/internal.ts` that exposes base test without
  Playwright fixtures for most tests (to avoid modifications for now).
- Test types live in `types/testFoo.d.ts`.
- Stable test runner is installed to `tests/config/test-runner` during `npm install`.
- All deps including test-only are now listed in `package.json`.
  Non-test deps must also be listed in `build_package.js` to get included.
2021-06-06 17:09:53 -07:00
Dmitry Gozman
3de3a88930
feat(test): introduce npx playwright test (#6816) 2021-06-03 08:07:55 -07:00
Andrey Lushnikov
919d258356
feat: support npx playwright install chrome (#6835)
This will install latest-and-greatest chrome stable.
2021-06-01 23:16:55 -07:00
Andrey Lushnikov
cb4adb1446
feat: install chrome-beta via cli (#6831)
This patch starts introduces `npx playwright install chrome-beta`
command and switches our Chrome Beta tests to it.
2021-06-01 18:26:12 -07:00
Anže Vodovnik
01d8f87923
chore(CLI): let other langs specify exec name (#6719) 2021-05-25 16:49:24 +02:00
Dmitry Gozman
af2fec6bcf
fix(codegen): generate all options for java (#6698) 2021-05-21 16:17:25 -07:00
Dmitry Gozman
f529f0a25d
fix(codegen): generate acceptDownloads option for download signals (#6697) 2021-05-21 15:08:39 -07:00
Pavel Feldman
17e9dd95f7
feat(trace): support loading trace from zip (#6551) 2021-05-12 21:31:34 -07:00
Pavel Feldman
1a39843df5
docs: follow up on adding trace dir, unify launch options (#6545) 2021-05-12 16:16:36 -07:00
Pavel Feldman
21cb726b7d
chore(tracing): expose tracing api (#6523) 2021-05-12 12:21:54 -07:00
Yury Semikhatsky
460cc31941
fix: propagate custom executable path to codegen (#6509) 2021-05-12 11:45:57 -07:00
Pavel Feldman
a9219aa8b6
chore: start / stop context tracing (#6309) 2021-04-23 20:39:09 -07:00
Andrey Lushnikov
23dfaf9e9b
feat: start downloading firefox-stable channel (#6177)
This patch adds support for downloading and running Playwright with
firefox-stable channel.

References #5993
2021-04-19 21:26:33 -07:00
Dmitry Gozman
fff1f3d45c
chore: simplify remote connection protocol (#6164)
This changes the root object from RemoteBrowser to Playwright,
similar to local driver connection. This way, any remote connection
gets a Playwright object.

This also starts reusing PlaywrightServer class, and introduces
`cli run-server` hidden command that runs ws server on the
specified port.

Previous structure:
```
RemoteBrowser
  - browser (using ConnectedBrowser for remote-specific behavior)
  - selectors (special instance for this remote connection)
```

New structure:
```
Playwright
  - ...
  - selectors (special instance for this remote connection)
  - preLaunchedBrowser (using ConnectedBrowser for remote-specific behavior)
```
2021-04-12 11:14:54 -07:00
Dmitry Gozman
bd8433ba49
test: cleanup various testing env variables (#6155) 2021-04-09 07:59:09 -07:00
Andrey Lushnikov
f472c96129
feat: support webkit technology preview (#5885)
This patch adds support for `technology preview` webkit channel, which
we will keep close to the actual Safari Technology Preview releases.

This channel does not install by default. It is supposed to be installed
with the following CLI command:

```sh
$ npx playwright install webkit-technology-preview
```

Once the channel is installed, it can be used the following way:

```js
const browser = await playwright.webkit.launch({
  channel: 'technology-preview',
});
```

**NOTE:** if clients attempt using the channel without installing it,
it'll throw an error with a copyable instructions to install via CLI.

References #5884
2021-03-31 11:32:10 -07:00
Pavel Feldman
543582b4ca
chore: expose channel name literals for types (#5922) 2021-03-23 13:21:03 -07:00
Yury Semikhatsky
67c29e8155
chore: add missing await to floating promises (#5813) 2021-03-22 09:59:39 -07:00
Pavel Feldman
1dd6bd3316
infra(channel): wire release channel to all tests (#5820) 2021-03-15 08:07:57 -07:00
Pavel Feldman
a96d6a7dbb
feat: allow to pick stable channel (#5817) 2021-03-13 14:02:39 -08:00
Pavel Feldman
c4578f19f2
chore: organize per-browser dependencies (#5787) 2021-03-11 20:22:50 -08:00
Yury Semikhatsky
ddfdf8a76a
fix: install chromium along with ffmpeg (#5774) 2021-03-10 14:01:35 -08:00