playwright/browser_patches
Andrey Lushnikov 2c11b10598
browser(firefox): remove multisession logic (#4039)
This patch:
1. Changes `SimpleChannel` to buffer messages to the namespace that
   hasn't been registered yet. This allows us to create `SimpleChannel`
   per target on the browser side right away.
2. Removes multisession support. Now there's only one `PageAgent` in the
   content process, which talks to a single `PageHandler` on the browser
   side. Both ends can be created as-soon-as-needed; thanks to
   `SimpleChannel` bufferring, no messages will be lost and all messages
   will be delivered in proper order. (This is currently the reason why
   build 1178 flakes on windows).
3. Straightens up the target reporting. Targets are reported as soon
   as they appear on the browser side.

**NOTE:** this doesn't yet remove sessions from protocol.

References #3995
2020-10-02 04:13:42 -07:00
..
buildbots devops: build winldd on buildbots (#3917) 2020-09-18 09:43:43 -07:00
chromium browser(chromium): roll to v808777 (#3941) 2020-09-21 14:40:26 -07:00
ffmpeg devops(ffmpeg): compile zlib dependency that is needed for ffmpeg (#3940) 2020-09-21 14:54:22 -07:00
firefox browser(firefox): remove multisession logic (#4039) 2020-10-02 04:13:42 -07:00
tools devops: notify when winldd is built 2020-09-18 11:26:59 -06:00
webkit browser(webkit): another mac fix (#3948) 2020-09-21 19:03:44 -07:00
winldd devops: hardcode build number in winldd executable (#3923) 2020-09-18 14:51:08 -07:00
checkout_build_archive_upload.sh devops: build winldd on buildbots (#3917) 2020-09-18 09:43:43 -07:00
export.sh devops: add signature to BUILD_NUMBER to force rebaseline (#2810) 2020-07-02 12:09:27 -07:00
prepare_checkout.sh devops: fix winldd build 2020-09-18 11:30:53 -06:00
README.md chore: generate protocol during browser roll (#2719) 2020-07-01 15:22:29 -07:00
sanitize_and_compress_log.js devops: use node.js to gzip logs 2020-04-20 02:52:26 -07:00
upload.sh devops: use node.js to gzip logs 2020-04-20 02:52:26 -07:00

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.

WebKit upstream status

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_upstream remote in the checkout
  • create a playwright-build branch 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.sh if necessary
  • bump the ./browser_patches/firefox/BUILD_NUMBER number.

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