Juggler code had a bug where we subscribed to window and tab events, but did not iterate collections of current windows and tabs. As a result, we were sometimes failing to set viewport size for the initial window, and implemented an artificial promise to workaround the problem. This patch: - starts calling `onOpenWindow` and `onOpenTabListener` callbacks for *all* windows and tabs - current and future, eliminating the race condition. This worked too well and we started overriding window sizes that were set by users with `window.open(url, 'width=300;height=400')` (we have a test for this). To fix this, we now plumb `CHROME_WITH_SIZE` flag from appWindow and override viewport iff this flag is not set. After this patch, we will use the `onTabOpened` event to move user agent emulation to the browser-side. References #3995 |
||
|---|---|---|
| .. | ||
| buildbots | ||
| chromium | ||
| ffmpeg | ||
| firefox | ||
| tools | ||
| webkit | ||
| winldd | ||
| checkout_build_archive_upload.sh | ||
| export.sh | ||
| prepare_checkout.sh | ||
| README.md | ||
| sanitize_and_compress_log.js | ||
| upload.sh | ||
Contributing Browser Patches
Firefox and WebKit have additional patches atop to expose necessary capabilities.
Ideally, all these changes should be upstreamed. For the time being, it is possible to setup a browser checkout and develop from there.
1. Setting up local browser checkout
From the playwright repo, run the following command:
$ ./browser_patches/prepare_checkout.sh firefox <path to checkout>
(you can optionally pass "webkit" for a webkit checkout)
If you don't have a checkout, don't pass a path and one will be created for you in ./browser_patches/firefox/checkout
NOTE: this command downloads GBs of data.
This command will:
- create a
browser_upstreamremote in the checkout - create a
playwright-buildbranch and apply all playwright-required patches to it.
2. Developing a new change
You want to create a new branch off the playwright-build branch.
Assuming that you're under ./browser_patches/firefox/checkout:
$ git checkout -b my-new-feature playwright-build
$ # develop my feature on the my-new-feature branch ....
3. Exporting your change to playwright repo
Once you're happy with the work you did in the browser-land, you want to export it to the playwright repo.
Assuming that you're in the root of the playwright repo and that your browser checkout has your feature branch checked out:
$ ./browser_patches/export.sh firefox <path to checkout>
This script will:
- create a new patch and put it to the
./browser_patches/firefox/patches/ - update the
./browser_patches/firefox/UPSTREAM_CONFIG.shif necessary - bump the
./browser_patches/firefox/BUILD_NUMBERnumber.
If you omit the path to your checkout, the script will assume one is located at ./browser_patches/firefox/checkout
Send a PR to the Playwright repo to be reviewed.
4. Rolling Playwright to the new browser build
Once the patch has been committed, the build bots will kick in, compile and upload a new browser version to all the platforms. Then you can roll the browser:
$ node utils/roll_browser.js chromium 123456