π add GH workflow #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
push: | |
branches-ignore: "dependabot/**" | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# Node.js 10 is required by jQuery infra | |
# Do not remove 16.x until jsdom tests are re-enabled on newer Node.js versions. | |
NODE_VERSION: [10.x, 16.x, 18.x, 20.x] | |
NPM_SCRIPT: ["test:browserless"] | |
include: | |
- NAME: "Browser tests: full build, Chrome, Firefox & WebKit" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:browser" | |
BROWSERS: "ChromeHeadless,FirefoxHeadless,WebkitHeadless" | |
- NAME: "Browser tests: slim build, Chrome" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:slim" | |
BROWSERS: "ChromeHeadless" | |
- NAME: "Browser tests: no-deprecated build, Chrome" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:no-deprecated" | |
BROWSERS: "ChromeHeadless" | |
- NAME: "Browser tests: selector-native build, Chrome" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:selector-native" | |
BROWSERS: "ChromeHeadless" | |
- NAME: "Browser tests: ES modules build, Chrome" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:esmodules" | |
BROWSERS: "ChromeHeadless" | |
- NAME: "Browser tests: full build, Firefox ESR" | |
NODE_VERSION: "18.x" | |
NPM_SCRIPT: "test:browser" | |
BROWSERS: "FirefoxHeadless" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Cache | |
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ matrix.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-${{ matrix.NODE_VERSION }}-npm-lock- | |
- name: Use Node.js ${{ matrix.NODE_VERSION }} | |
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0 | |
with: | |
node-version: ${{ matrix.NODE_VERSION }} | |
- name: Install firefox ESR | |
run: | | |
export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-esr-latest&lang=en-US&os=linux64' | |
wget --no-verbose $FIREFOX_SOURCE_URL -O - | tar -jx -C ${HOME} | |
if: contains(matrix.NAME, 'Firefox ESR') | |
- name: Install dependencies | |
run: npm install | |
- name: Install Playwright dependencies | |
run: npx playwright-webkit install-deps | |
if: matrix.NPM_SCRIPT == 'test:browser' && contains(matrix.BROWSERS, 'WebkitHeadless') | |
- name: Lint code | |
run: npm run build:all && npm run lint | |
if: matrix.NODE_VERSION == '18.x' | |
- name: Run tests | |
env: | |
BROWSERS: ${{ matrix.BROWSERS }} | |
run: | | |
export PATH=${HOME}/firefox:$PATH | |
npm run ${{ matrix.NPM_SCRIPT }} |