45ab3e0332
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. |
||
---|---|---|
.. | ||
patches | ||
scripts | ||
src | ||
.cirrus.yml | ||
.gitignore | ||
Dockerfile | ||
FIREFOX_SHA | ||
README.md |
Juggler
Juggler - Firefox Automation Protocol for implementing the Puppeteer API.
Protocol
See //src/Protocol.js
.
Building FF with Juggler
- Clone Juggler repository
git clone https://github.com/aslushnikov/juggler
cd juggler
- Checkout pinned Firefox revision from mozilla github mirror into
//firefox
folder.
SOURCE=$PWD bash scripts/fetch_firefox.sh
- Apply juggler patches to Firefox source code
cd firefox
git am ../patches/*
ln -s $PWD/../src $PWD/testing/juggler
- 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:
- Install gcloud if you haven't yet.
- Authenticate in the cloud and select project
gcloud auth login
gcloud config set project juggler-builds
- Make sure firefox is compiled; after that, package a build for a redistribution:
cd firefox
./mach package
- 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