aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/node.js.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/node.js.yml')
-rw-r--r--.github/workflows/node.js.yml103
1 files changed, 63 insertions, 40 deletions
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 443bd2b20..902f8cc60 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -1,4 +1,4 @@
-name: CI
+name: Node
on:
pull_request:
@@ -9,44 +9,49 @@ permissions:
contents: read # to fetch code (actions/checkout)
jobs:
- build:
+ build-and-test:
runs-on: ubuntu-latest
+ name: ${{ matrix.NPM_SCRIPT }} - ${{ matrix.NAME }} (${{ matrix.NODE_VERSION }})
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]
+ NAME: ["Node"]
+ NODE_VERSION: [18.x, 20.x]
NPM_SCRIPT: ["test:browserless"]
include:
- - NAME: "Browser tests: full build, Chrome, Firefox & WebKit"
- NODE_VERSION: "18.x"
+ - NAME: "Node"
+ NODE_VERSION: "20.x"
+ NPM_SCRIPT: "lint"
+ - NAME: "Chrome/Firefox"
+ NODE_VERSION: "20.x"
NPM_SCRIPT: "test:browser"
- BROWSERS: "ChromeHeadless,FirefoxHeadless,WebkitHeadless"
- - NAME: "Browser tests: slim build, Chrome"
- NODE_VERSION: "18.x"
+ - NAME: "Chrome"
+ NODE_VERSION: "20.x"
NPM_SCRIPT: "test:slim"
- BROWSERS: "ChromeHeadless"
- - NAME: "Browser tests: no-deprecated build, Chrome"
- NODE_VERSION: "18.x"
+ - NAME: "Chrome"
+ NODE_VERSION: "20.x"
NPM_SCRIPT: "test:no-deprecated"
- BROWSERS: "ChromeHeadless"
- - NAME: "Browser tests: selector-native build, Chrome"
- NODE_VERSION: "18.x"
+ - NAME: "Chrome"
+ NODE_VERSION: "20.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"
+ - NAME: "Chrome"
+ NODE_VERSION: "20.x"
+ NPM_SCRIPT: "test:esm"
+ - NAME: "Firefox ESR"
+ NODE_VERSION: "20.x"
+ NPM_SCRIPT: "test:firefox"
+ - NAME: "Node 10 Build"
+ NODE_VERSION: "10.x"
+ NPM_SCRIPT: "build:main"
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - name: Use Node.js ${{ matrix.NODE_VERSION }}
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ with:
+ node-version: ${{ matrix.NODE_VERSION }}
+
- name: Cache
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
with:
@@ -55,31 +60,49 @@ jobs:
restore-keys: |
${{ runner.os }}-node-${{ matrix.NODE_VERSION }}-npm-lock-
- - name: Use Node.js ${{ matrix.NODE_VERSION }}
- uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
- 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'
+ export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-esr-latest-ssl&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: Build All for Linting
+ run: npm run build:all
+ if: contains(matrix.NPM_SCRIPT, 'lint')
- name: Run tests
- env:
- BROWSERS: ${{ matrix.BROWSERS }}
run: |
export PATH=${HOME}/firefox:$PATH
+ export FIREFOX_BIN=${HOME}/firefox/firefox
npm run ${{ matrix.NPM_SCRIPT }}
+
+ safari:
+ runs-on: macos-latest
+ env:
+ NODE_VERSION: 20.x
+ name: test:safari - Safari
+ steps:
+ - name: Checkout
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - name: Use Node.js ${{ env.NODE_VERSION }}
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ with:
+ node-version: ${{ env.NODE_VERSION }}
+
+ - name: Cache
+ uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Run tests
+ run: npm run test:safari