playwright/packages
Andrey Lushnikov 505d94ab1a
chore: drop dependency on playwright-core in all our packages (#2318)
This patch:
- drops dependency on playwright-core in all our packages. Instead of
  the dependency, packages are now built with `//packages/build_package.sh`
  script.
- unifies `browsers.json` - now there's a single `//browsers.json` file
  that is used to manage browser revisions.

This patch temporary switches canary publishing to `--dryn-run` from CI/CD so that we
can verify that it does sane things.

We'll unify all our package management scripts under `//packages/` in a
follow-up.

Fixes #2268
2020-05-21 13:18:15 -07:00
..
playwright chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
playwright-chromium chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
playwright-core chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
playwright-electron chore(electron): mark version 0.3.0 (#2255) 2020-05-14 23:13:06 -07:00
playwright-firefox chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
playwright-webkit chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
build_package.js chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00
README.md chore: drop dependency on playwright-core in all our packages (#2318) 2020-05-21 13:18:15 -07:00

Managing and Publishing Playwright Packages

Overview

  • Playwright ships multiple packages to NPM. All packges that are published to NPM are listed as folders under //packages/.
  • Playwright's root package.json is never published to NPM. It is only used for devmode, e.g. when running npm install with no arguments or installing from github.
  • Playwright dependencies for all packages are the same and are managed with the root package.json.
  • Playwright browser versions for all packages are the same and are managed with the browsers.json.

Note

As of May 20, 2020, the only exception is the playwright-electron package that doesn't follow the pack and is published manually. This is due to it's pre-1.0 status.

Building NPM package

To build a package that will be shipped to NPM, use //packages/build_package.js script. The script populates package folder with contents, and then uses npm pack to archive the folder.

As of May 20, 2020, //packages/build_package.js does the following:

  • copies certain files and folders from playwright-internal to the subpackage (e.g. //lib, //types, //LICENSE etc)
  • generates package.json and puts it in the subpackage
  • generates browsers.json and puts it in the subpackage
  • uses npm pack to pack the subpackage folder
  • removes all the files that were added during the process

To build playwright package and save result as ./playwright.tgz file:

$ ./packages/build_package.js playwright ./playwright.tgz

To debug what files are put into the folder, use --no-cleanup flag and inspect the package folder:

$ ./packages/build_package.js playwright ./playwright.tgz --no-cleanup
$ ls ./packages/playwright # inspect the folder

Testing packages

To test packages, use //tests/installation-tests/installation-tests.sh.

Publishing packages

All package publishing happens exclusively over CI/CD using the //utils/publish_all_packages.sh script.