d8830cbc55
* chore: implement a test runner on top of mocha This PR implements a test runner on top of mocha that performs multiple mocha runs as defined in TestSuites.json and compares the outcome of the runs against TestExpectations.json. This allows us to remove most of helpers from mocha-utils and be more flexible when defining the test configurations.
222 lines
6.4 KiB
YAML
222 lines
6.4 KiB
YAML
name: CI
|
|
|
|
# Declare default permissions as read only.
|
|
permissions: read-all
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- '**'
|
|
|
|
concurrency:
|
|
group: ${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
inspect-code:
|
|
name: Inspect code
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 2
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3.4.1
|
|
with:
|
|
node-version: 18
|
|
- name: Setup cache for Chromium binary
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: .local-chromium
|
|
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }}
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
- name: Check code
|
|
run: npm run check
|
|
- name: Lint code
|
|
run: npm run lint
|
|
- name: Lint commits
|
|
run: npm run commitlint
|
|
if: github.event_name != 'pull_request'
|
|
|
|
check-docs:
|
|
name: Check documentation
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
needs_deploying: ${{ steps.needs_deploying.outputs.value }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 2
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3.4.1
|
|
with:
|
|
cache: npm
|
|
- name: Setup cache for Chromium binary
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: .local-chromium
|
|
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }}
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
- name: Build
|
|
run: npm run docs
|
|
- name: Check if autogenerated docs differ
|
|
run: |
|
|
diff_file=$(mktemp doc_diff_XXXXXX)
|
|
git diff --color > $diff_file
|
|
if [[ -s $diff_file ]]; then
|
|
echo "Please update the documentation by running 'npm run docs'. The following was the diff"
|
|
cat $diff_file
|
|
rm $diff_file
|
|
exit 1
|
|
fi
|
|
rm $diff_file
|
|
- name: Check if docs need to be deployed
|
|
id: needs_deploying
|
|
run: |
|
|
if [[ $(git diff HEAD^ -- ./docs ./website) ]]; then
|
|
needs_deploying=true
|
|
else
|
|
needs_deploying=false
|
|
fi
|
|
echo "::set-output name=value::$needs_deploying"
|
|
|
|
deploy-docs:
|
|
needs: check-docs
|
|
name: Deploy docs (if needed)
|
|
if: ${{ needs.check-docs.outputs.needs_deploying == 'true' && github.event_name != 'pull_request' }}
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3.4.1
|
|
with:
|
|
cache: npm
|
|
- name: Install dependencies
|
|
working-directory: ./website
|
|
run: npm ci
|
|
- name: Increase swap space
|
|
uses: pierotofy/set-swap-space@49819abfb41bd9b44fb781159c033dba90353a7c
|
|
with:
|
|
swap-size-gb: 10
|
|
- name: Build website
|
|
working-directory: ./website
|
|
env:
|
|
NODE_OPTIONS: --max-old-space-size=6144
|
|
run: npm run build
|
|
- name: Deploy to GitHub Pages
|
|
uses: peaceiris/actions-gh-pages@v3
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: ./website/build
|
|
user_name: release-please[bot]
|
|
user_email: 55107282+release-please[bot]@users.noreply.github.com
|
|
|
|
tests:
|
|
name: ${{ matrix.spec.name }} tests (${{ matrix.spec.node }})
|
|
runs-on: ${{ matrix.spec.machine }}
|
|
continue-on-error: true
|
|
strategy:
|
|
matrix:
|
|
spec:
|
|
- name: Linux
|
|
machine: ubuntu-latest
|
|
node: 14
|
|
- name: Linux
|
|
machine: ubuntu-latest
|
|
node: 16
|
|
- name: Linux
|
|
machine: ubuntu-latest
|
|
node: 18
|
|
- name: macOS
|
|
machine: macos-latest
|
|
node: 14
|
|
- name: Windows
|
|
machine: windows-latest
|
|
node: 14
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Setup cache for Chromium binary
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: .local-chromium
|
|
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }}
|
|
- name: Setup cache for Firefox binary
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: .local-firefox
|
|
key: ${{ runner.os }}-firefox-${{ hashFiles('src/revisions.ts') }}
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3.4.1
|
|
with:
|
|
node-version: ${{ matrix.spec.node }}
|
|
- name: Install dependencies with Chromium
|
|
run: npm install
|
|
- name: Install Firefox
|
|
env:
|
|
PUPPETEER_PRODUCT: firefox
|
|
run: npm install
|
|
- name: Install linux dependencies.
|
|
if: ${{ matrix.spec.name == 'Linux' }}
|
|
run: sudo apt-get install xvfb
|
|
- name: Build
|
|
run: npm run build:dev
|
|
- name: Test types
|
|
run: npm run test:types
|
|
- name: Run all tests with xvfb
|
|
if: ${{ matrix.spec.name == 'Linux' }}
|
|
run: xvfb-run --auto-servernum npm run test
|
|
- name: Run all tests without xvfb
|
|
if: ${{ matrix.spec.name != 'Linux' }}
|
|
run: npm run test
|
|
- name: Test bundling and installation
|
|
if: ${{ matrix.spec.name == 'Linux' }}
|
|
run: |
|
|
# Test prod build instead of dev.
|
|
npm run clean
|
|
npm run build
|
|
# Note: this modifies package.json to test puppeteer-core, so we test this last.
|
|
npm run test:install
|
|
|
|
docker-tests:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
node: [16]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 2
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v3.4.1
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- name: Install dependencies
|
|
run: |
|
|
npm install
|
|
ls .local-chromium
|
|
- name: Build
|
|
run: |
|
|
npm run build
|
|
docker/pack.sh
|
|
- name: Build docker image
|
|
working-directory: ./docker
|
|
run: |
|
|
docker build -t puppeteer-test-image .
|
|
- name: Run smoke test
|
|
working-directory: ./docker
|
|
run: |
|
|
docker run -i --init --cap-add=SYS_ADMIN --rm puppeteer-test-image node -e "`cat test/smoke-test.js`"
|