mirror of
https://github.com/jquery/jquery.git
synced 2026-04-20 03:01:22 -04:00
So far, we've been running browser tests on GitHub Actions in Chrome and Firefox. Regular Safari is not available in GitHub Actions but Playwright WebKit comes close to a dev version of Safari. With this change, our GitHub CI & local test runs will invoke tests on all actively developed browser engines on all PRs. Also, our GitHub Actions browser tests are now running on Node.js 18. Detection of the Playwright WebKit browser in support unit tests is done by checking if the `test_browser` query parameter is set to `"Playwright"`; this is a `karma-webkit-launcher` feature. Detecting that browser via user agent as we normally do is hard as the UA on Linux is very similar to a real Safari one but it actually uses a newer version of the engine. In addition, we now allow to pass custom browsers when one needs it; e.g., to run the tests in all three engines on Linux/macOS, run: ``` grunt && BROWSERS=ChromeHeadless,FirefoxHeadless,WebkitHeadless grunt karma:main ``` Closes gh-5190
84 lines
2.8 KiB
YAML
84 lines
2.8 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
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, 14.x, 16.x, 18.x, 19.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: AMD build, Chrome"
|
|
NODE_VERSION: "18.x"
|
|
NPM_SCRIPT: "test:amd"
|
|
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@v3
|
|
|
|
- name: Cache
|
|
uses: actions/cache@v3
|
|
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@v3.5.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'
|
|
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'"
|
|
|
|
- name: Run tests
|
|
env:
|
|
BROWSERS: ${{ matrix.BROWSERS }}
|
|
run: |
|
|
export PATH=${HOME}/firefox:$PATH
|
|
npm run ${{ matrix.NPM_SCRIPT }}
|