mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
chore: improve CI jobs (#9054)
This PR separates the installations tests from normal tests and changes the matrices as follows: - Installations tests on all platforms and the latest 3 node versions. - Chrome tests are done on all platforms on the latest node version. - Firefox tests are done only on linux on the latest node version.
This commit is contained in:
279
.github/workflows/ci.yml
vendored
279
.github/workflows/ci.yml
vendored
@@ -27,14 +27,10 @@ jobs:
|
||||
- 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') }}
|
||||
cache: npm
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Check code
|
||||
run: npm run check
|
||||
- name: Lint code
|
||||
@@ -57,13 +53,9 @@ jobs:
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
- name: Setup cache for Chromium binary
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: packages/puppeteer-core/.local-chromium
|
||||
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }}
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Build
|
||||
run: npm run docs
|
||||
- name: Check if autogenerated docs differ
|
||||
@@ -101,6 +93,7 @@ jobs:
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
working-directory: ./website
|
||||
run: npm ci
|
||||
@@ -117,157 +110,148 @@ jobs:
|
||||
user_name: release-please[bot]
|
||||
user_email: 55107282+release-please[bot]@users.noreply.github.com
|
||||
|
||||
tests:
|
||||
name: ${{ matrix.spec.name }} tests on ${{ matrix.spec.machine }}(${{ matrix.spec.node }})
|
||||
runs-on: ${{ matrix.spec.machine }}
|
||||
chrome-tests:
|
||||
name: ${{ matrix.suite }} tests on ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
spec:
|
||||
- name: chrome-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 14
|
||||
suite: chrome-headless
|
||||
- name: chrome-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 16
|
||||
suite: chrome-headless
|
||||
- name: chrome-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: chrome-headless
|
||||
- name: chrome-headless
|
||||
machine: windows-latest
|
||||
xvfb: false
|
||||
node: 18
|
||||
suite: chrome-headless
|
||||
- name: chrome-headless
|
||||
machine: macos-latest
|
||||
xvfb: false
|
||||
node: 18
|
||||
suite: chrome-headless
|
||||
- name: chrome-headful
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 14
|
||||
suite: chrome-headful
|
||||
- name: chrome-headful
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 16
|
||||
suite: chrome-headful
|
||||
- name: chrome-headful
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: chrome-headful
|
||||
- name: chrome-new-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 14
|
||||
suite: chrome-new-headless
|
||||
- name: chrome-new-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 16
|
||||
suite: chrome-new-headless
|
||||
- name: chrome-new-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: chrome-new-headless
|
||||
- name: firefox-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 14
|
||||
suite: firefox-headless
|
||||
- name: firefox-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 16
|
||||
suite: firefox-headless
|
||||
- name: firefox-headless
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: firefox-headless
|
||||
- name: firefox-headful
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 16
|
||||
suite: firefox-headful
|
||||
- name: firefox-headful
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: firefox-headful
|
||||
- name: firefox-bidi
|
||||
machine: ubuntu-latest
|
||||
xvfb: true
|
||||
node: 18
|
||||
suite: firefox-bidi
|
||||
- name: firefox-headless
|
||||
machine: macos-latest
|
||||
xvfb: false
|
||||
node: 18
|
||||
suite: firefox-headless
|
||||
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
- macos-latest
|
||||
suite:
|
||||
- chrome-headless
|
||||
- chrome-headful
|
||||
- chrome-new-headless
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3.0.2
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Build libraries
|
||||
run: npm run build
|
||||
- name: Build tests
|
||||
run: npm run build:test
|
||||
- name: Setup cache for Chromium binary
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: .local-chromium
|
||||
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }}
|
||||
path: packages/puppeteer-core/.local-chromium
|
||||
key: ${{ runner.os }}-chromium-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}
|
||||
- name: Install Chromium
|
||||
run: npm run postinstall
|
||||
- name: Install linux dependencies.
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
run: sudo apt-get install xvfb
|
||||
- name: Tests types
|
||||
run: npm run test:types
|
||||
- name: Run all tests (for non-Linux)
|
||||
if: ${{ matrix.os != 'ubuntu-latest' }}
|
||||
run: npm run test -- --test-suite ${{ matrix.suite }}
|
||||
- name: Run all tests (for Linux)
|
||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||
run: xvfb-run --auto-servernum npm run test -- --test-suite ${{ matrix.suite }}
|
||||
|
||||
firefox-tests:
|
||||
name: ${{ matrix.suite }} tests on ubuntu-latest
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite:
|
||||
- firefox-bidi
|
||||
- firefox-headful
|
||||
- firefox-headless
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Build libraries
|
||||
run: npm run build
|
||||
- name: Build tests
|
||||
run: npm run build:test
|
||||
- name: Setup cache for Firefox binary
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: packages/puppeteer-core/.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: Update NPM
|
||||
run: npm install -g npm@latest
|
||||
- name: Install dependencies with Chromium
|
||||
run: npm ci
|
||||
key: ${{ runner.os }}-firefox-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}
|
||||
- name: Install Firefox
|
||||
env:
|
||||
PUPPETEER_PRODUCT: firefox
|
||||
run: npm ci
|
||||
run: npm run postinstall
|
||||
- name: Install linux dependencies.
|
||||
if: ${{ matrix.spec.xvfb }}
|
||||
run: sudo apt-get install xvfb
|
||||
- name: Build
|
||||
run: npm run build:test
|
||||
- name: Test types
|
||||
- name: Tests types
|
||||
run: npm run test:types
|
||||
- name: Run all tests with xvfb
|
||||
if: ${{ matrix.spec.xvfb }}
|
||||
run: xvfb-run --auto-servernum npm run test -- --test-suite ${{ matrix.spec.suite }}
|
||||
- name: Run all tests without xvfb
|
||||
if: ${{ !matrix.spec.xvfb }}
|
||||
run: npm run test -- --test-suite ${{ matrix.spec.suite }}
|
||||
- name: Test bundling and installation
|
||||
if: ${{ matrix.spec.machine == 'ubuntu-latest' }}
|
||||
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
|
||||
- name: Run all tests
|
||||
run: xvfb-run --auto-servernum npm run test -- --test-suite ${{ matrix.suite }}
|
||||
|
||||
docker-tests:
|
||||
pack-packages:
|
||||
name: Pack packages
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: latest
|
||||
- name: Install dependencies
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Build libraries
|
||||
run: npm run build
|
||||
- name: Pack libraries
|
||||
run: npm pack --workspaces
|
||||
- name: Upload packages
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: packages
|
||||
path: ./*.tgz
|
||||
|
||||
install-tests:
|
||||
name: Test installation on ${{ matrix.os }} (${{ matrix.node }})
|
||||
needs: pack-packages
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
node: [16]
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
node:
|
||||
- 14
|
||||
- 16
|
||||
- 18
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: ${{ matrix.node }}
|
||||
- name: Download packages
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: packages
|
||||
- name: Test bundling and installation
|
||||
run: npm run test:install
|
||||
|
||||
docker-tests:
|
||||
name: Test Docker image
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3.0.2
|
||||
@@ -276,15 +260,14 @@ jobs:
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3.4.1
|
||||
with:
|
||||
cache: npm
|
||||
node-version: ${{ matrix.node }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
npm install
|
||||
ls packages/puppeteer-core/.local-chromium
|
||||
- name: Build
|
||||
run: |
|
||||
npm run build
|
||||
docker/pack.sh
|
||||
run: npm ci --ignore-scripts
|
||||
- name: Build packages
|
||||
run: npm run build
|
||||
- name: Pack packages
|
||||
run: docker/pack.sh
|
||||
- name: Build docker image
|
||||
working-directory: ./docker
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user