puppeteer/experimental/juggler
Andrey Lushnikov 45ab3e0332
feat: introduce puppeteer-firefox (#3628)
This adds a proof-of-concept of `puppeteer-firefox`.
This consists of two parts:
- `//experimental/juggler` - patches to apply to Firefox.
- `//experimental/puppeteer-firefox` - front-end code to
be merged with Puppeteer.

As things become more stable, we'll gradually move it out of
the experimental folder.
2018-12-06 11:24:00 -08:00
..
patches feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
scripts feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
src feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
.cirrus.yml feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
.gitignore feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
Dockerfile feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
FIREFOX_SHA feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00
README.md feat: introduce puppeteer-firefox (#3628) 2018-12-06 11:24:00 -08:00

Juggler

Juggler - Firefox Automation Protocol for implementing the Puppeteer API.

Protocol

See //src/Protocol.js.

Building FF with Juggler

  1. Clone Juggler repository
git clone https://github.com/aslushnikov/juggler
cd juggler
  1. Checkout pinned Firefox revision from mozilla github mirror into //firefox folder.
SOURCE=$PWD bash scripts/fetch_firefox.sh
  1. Apply juggler patches to Firefox source code
cd firefox
git am ../patches/*
ln -s $PWD/../src $PWD/testing/juggler
  1. Bootstrap host environment for Firefox build and compile firefox locally
# OPTIONAL - bootstrap host environment.
./mach bootstrap --application-choice=browser --no-interactive
# Compile browser
./mach build

Running Firefox with Juggler

Juggle adds a -juggler CLI flag that accepts a port to expose a remote protocol on. Pass 0 to pick a random port - Juggler will print its port to STDOUT.

./mach run -- -juggler 0

Uploading builds to Google Storage

Firefox builds with Juggler support are uploaded to gs://juggler-builds/ bucket.

Project maintainers can upload builds. To upload a build, do the following:

  1. Install gcloud if you haven't yet.
  2. Authenticate in the cloud and select project
gcloud auth login
gcloud config set project juggler-builds
  1. Make sure firefox is compiled; after that, package a build for a redistribution:
cd firefox
./mach package
  1. Archive build and copy to the gbucket

We want to ship *.zip archives so that it's easy to decompress them on the node-side.

  • Linux: ./scripts/upload_linux.sh
  • Mac: ./scripts/upload_mac.sh