From c92f98d3cf625fa5f925b926cbe0690de20077b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Tue, 13 Jan 2026 23:16:56 +0100 Subject: [PATCH] Build: Update tested browsers, actions, fix CI Last updates before archiving, to double check everything still works with newer browsers. Changes: * Update tested browsers * Disable old iOS tests as BrowserStack no longer makes them available * Update GitHub Actions * Pin Ubuntu used for GitHub Actions to 22.04; latest is 24.04 and PhantomJS no longer works on it * Set `.nvmrc` so that a proper Node.js version is used locally * Fix Yaml handling in `.editorconfig` --- .editorconfig | 2 +- .github/workflows/node.js.yml | 43 +++++----- .nvmrc | 1 + Gruntfile.js | 53 ++++++++---- tasks/karma-tests.js | 7 +- test/karma/launchers.js | 146 +++++++++++++++++++++++++++------- 6 files changed, 181 insertions(+), 71 deletions(-) create mode 100644 .nvmrc diff --git a/.editorconfig b/.editorconfig index f2337a76..0fe2cbbb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,6 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -[package.json] +[*.{json,yml}] indent_style = space indent_size = 2 diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c128edd7..73716d4c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -7,32 +7,25 @@ env: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - - name: Checkout - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - name: Cache - uses: actions/cache@v2 - 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: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + with: + node-version: ${{ env.NODE_VERSION }} + cache: npm + cache-dependency-path: '**/package-lock.json' - - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2.1.2 - with: - node-version: ${{ env.NODE_VERSION }} + - name: Install dependencies + run: npm ci - - name: Install dependencies - run: | - npm install - - - name: Run tests - env: - BROWSER_STACK_USERNAME: ${{ secrets.BROWSER_STACK_USERNAME }} - BROWSER_STACK_ACCESS_KEY: ${{ secrets.BROWSER_STACK_ACCESS_KEY }} - run: | - export PATH=${HOME}/firefox:$PATH - npm test + - name: Run tests + env: + BROWSER_STACK_USERNAME: ${{ secrets.BROWSER_STACK_USERNAME }} + BROWSER_STACK_ACCESS_KEY: ${{ secrets.BROWSER_STACK_ACCESS_KEY }} + run: | + export PATH=${HOME}/firefox:$PATH + npm test diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..b6a7d89c --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +16 diff --git a/Gruntfile.js b/Gruntfile.js index 171b9f21..b4414b6a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,6 +6,7 @@ module.exports = function( grunt ) { browsers = { phantom: [ "PhantomJS" ], desktop: [], + desktop2: [], android: [], ios: [], old: { @@ -31,31 +32,52 @@ module.exports = function( grunt ) { // See https://github.com/jquery/sizzle/wiki/Sizzle-Documentation#browsers browsers.desktop = [ - "bs_chrome-45", // shares V8 with Node.js v4 LTS - "bs_chrome-68", // shares V8 with Node.js v10.24.1 LTS - "bs_chrome-84", // shares V8 with Node.js v14.20.0 LTS - "bs_chrome-109", "bs_chrome-110", + "bs_chrome-124", // shares V8 with Node.js v22.21.1 LTS + "bs_chrome-136", // shares V8 with Node.js v24.12.0 LTS + "bs_chrome-142", "bs_chrome-143", - // Firefox ESR + last 2 Firefox versions - "bs_firefox-60", "bs_firefox-68", "bs_firefox-78", "bs_firefox-91", "bs_firefox-102", - "bs_firefox-108", "bs_firefox-109", + // Firefox ESR + last 2 Firefox + "bs_firefox-115", "bs_firefox-128", "bs_firefox-140", + "bs_firefox-145", "bs_firefox-146", - "bs_edge-15", "bs_edge-16", "bs_edge-17", "bs_edge-18", - "bs_edge-108", "bs_edge-109", + // last Edge Legacy + last 2 Edge + "bs_edge-18", "bs_edge-142", "bs_edge-143", "bs_ie-9", "bs_ie-10", "bs_ie-11", - "bs_opera-94", "bs_opera-95", + "bs_opera-123", "bs_opera-124", + + "bs_safari-15", "bs_safari-16", "bs_safari-17", + "bs_safari-18", "bs_safari-26" + ]; + + browsers.desktop2 = [ + "bs_chrome-45", // shares V8 with Node.js v4 LTS + "bs_chrome-68", // shares V8 with Node.js v10.24.1 LTS + "bs_chrome-84", // shares V8 with Node.js v14.21.3 LTS + "bs_chrome-102", // shares V8 with Node.js v18.20.8 LTS + "bs_chrome-113", // shares V8 with Node.js v20.19.6 LTS + + + // Firefox ESR + "bs_firefox-60", "bs_firefox-68", "bs_firefox-78", "bs_firefox-91", + "bs_firefox-102", + + // Edge Legacy <18 + "bs_edge-15", "bs_edge-16", "bs_edge-17", // Real Safari 6.1 and 7.0 are not available "bs_safari-6.0", "bs_safari-8.0", "bs_safari-9.1", "bs_safari-10.1", - "bs_safari-11.1", "bs_safari-12.1", "bs_safari-13.1", "bs_safari-14", - "bs_safari-15", "bs_safari-16" + "bs_safari-11.1", "bs_safari-12.1", "bs_safari-13.1", "bs_safari-14" ]; browsers.ios = [ - "bs_ios-9.3", "bs_ios-10", "bs_ios-11", "bs_ios-12", "bs_ios-13", - "bs_ios-14", "bs_ios-15", "bs_ios-16" + + // No longer available on BrowserStack + // "bs_ios-9.3", "bs_ios-10", + + "bs_ios-11", "bs_ios-12", "bs_ios-13", "bs_ios-14", "bs_ios-15", + "bs_ios-16", "bs_ios-17", "bs_ios-18", "bs_ios-26" ]; browsers.android = [ "bs_android-4.0", "bs_android-4.1", "bs_android-4.2", @@ -201,6 +223,9 @@ module.exports = function( grunt ) { desktop: { browsers: browsers.desktop }, + desktop2: { + browsers: browsers.desktop2 + }, android: { browsers: browsers.android }, diff --git a/tasks/karma-tests.js b/tasks/karma-tests.js index d3b8c4f2..7549963c 100644 --- a/tasks/karma-tests.js +++ b/tasks/karma-tests.js @@ -12,12 +12,15 @@ module.exports = function( grunt ) { const done = this.async(); const tasks = isBrowserStack ? [ - "karma:phantom", "karma:desktop", + "karma:phantom", "karma:desktop", "karma:desktop2", "karma:oldIe", "karma:oldFirefox", "karma:oldChrome", "karma:oldSafari", "karma:oldOpera", - "karma:ios", "karma:oldIos" + "karma:ios" + + // BrowserStack no longer shares old iOS simulators + // "karma:oldIos", // See #314 :-( // "karma:android", "karma:oldAndroid" diff --git a/test/karma/launchers.js b/test/karma/launchers.js index f23c8ed8..c53ac825 100644 --- a/test/karma/launchers.js +++ b/test/karma/launchers.js @@ -43,19 +43,40 @@ module.exports = { os: "OS X", os_version: "Monterey" }, - "bs_firefox-108": { + "bs_firefox-115": { base: "BrowserStack", browser: "firefox", - browser_version: "108.0", + browser_version: "115.0", os: "OS X", - os_version: "Monterey" + os_version: "Ventura" }, - "bs_firefox-109": { + "bs_firefox-128": { base: "BrowserStack", browser: "firefox", - browser_version: "109.0", + browser_version: "128.0", os: "OS X", - os_version: "Ventura" + os_version: "Sonoma" + }, + "bs_firefox-140": { + base: "BrowserStack", + browser: "firefox", + browser_version: "140.0", + os: "OS X", + os_version: "Sonoma" + }, + "bs_firefox-145": { + base: "BrowserStack", + browser: "firefox", + browser_version: "145.0", + os: "OS X", + os_version: "Sequoia" + }, + "bs_firefox-146": { + base: "BrowserStack", + browser: "firefox", + browser_version: "146.0", + os: "OS X", + os_version: "Tahoe" }, "bs_chrome-16": { @@ -86,20 +107,48 @@ module.exports = { os: "OS X", os_version: "Big Sur" }, - "bs_chrome-109": { + "bs_chrome-102": { base: "BrowserStack", browser: "chrome", - browser_version: "109.0", + browser_version: "102.0", os: "OS X", os_version: "Monterey" }, - "bs_chrome-110": { + "bs_chrome-113": { base: "BrowserStack", browser: "chrome", - browser_version: "110.0", + browser_version: "113.0", os: "OS X", os_version: "Ventura" }, + "bs_chrome-124": { + base: "BrowserStack", + browser: "chrome", + browser_version: "124.0", + os: "OS X", + os_version: "Sonoma" + }, + "bs_chrome-136": { + base: "BrowserStack", + browser: "chrome", + browser_version: "136.0", + os: "OS X", + os_version: "Sequoia" + }, + "bs_chrome-142": { + base: "BrowserStack", + browser: "chrome", + browser_version: "142.0", + os: "OS X", + os_version: "Sequoia" + }, + "bs_chrome-143": { + base: "BrowserStack", + browser: "chrome", + browser_version: "143.0", + os: "OS X", + os_version: "Tahoe" + }, "bs_edge-15": { base: "BrowserStack", @@ -129,17 +178,17 @@ module.exports = { os: "Windows", os_version: "10" }, - "bs_edge-108": { + "bs_edge-142": { base: "BrowserStack", browser: "edge", - browser_version: "108", + browser_version: "142", os: "Windows", os_version: "10" }, - "bs_edge-109": { + "bs_edge-143": { base: "BrowserStack", browser: "edge", - browser_version: "109", + browser_version: "143", os: "Windows", os_version: "11" }, @@ -184,7 +233,7 @@ module.exports = { browser: "ie", browser_version: "11.0", os: "Windows", - os_version: "8.1" + os_version: "10" }, "bs_opera-11.6": { @@ -201,19 +250,19 @@ module.exports = { os: "Windows", os_version: "7" }, - "bs_opera-94": { + "bs_opera-123": { base: "BrowserStack", browser: "opera", - browser_version: "94.0", + browser_version: "123.0", os: "OS X", - os_version: "Monterey" + os_version: "Sequoia" }, - "bs_opera-95": { + "bs_opera-124": { base: "BrowserStack", browser: "opera", - browser_version: "95.0", + browser_version: "124.0", os: "OS X", - os_version: "Ventura" + os_version: "Tahoe" }, "bs_safari-4.0": { @@ -307,6 +356,27 @@ module.exports = { os: "OS X", os_version: "Ventura" }, + "bs_safari-17": { + base: "BrowserStack", + browser: "safari", + browser_version: "17", + os: "OS X", + os_version: "Sonoma" + }, + "bs_safari-18": { + base: "BrowserStack", + browser: "safari", + browser_version: "18", + os: "OS X", + os_version: "Sequoia" + }, + "bs_safari-26": { + base: "BrowserStack", + browser: "safari", + browser_version: "26", + os: "OS X", + os_version: "Tahoe" + }, "bs_ios-5.1": { base: "BrowserStack", @@ -342,26 +412,23 @@ module.exports = { base: "BrowserStack", device: "iPhone 7", os: "ios", - os_version: "10", - real_mobile: true + os_version: "10" }, "bs_ios-11": { base: "BrowserStack", - device: "iPhone 6S", + device: "iPhone X", os: "ios", - os_version: "11", - real_mobile: true + os_version: "11" }, "bs_ios-12": { base: "BrowserStack", device: "iPhone XS", os: "ios", - os_version: "12", - real_mobile: true + os_version: "12" }, "bs_ios-13": { base: "BrowserStack", - device: "iPhone 11 Pro", + device: "iPhone 11", os: "ios", os_version: "13", real_mobile: true @@ -387,6 +454,27 @@ module.exports = { os_version: "16", real_mobile: true }, + "bs_ios-17": { + base: "BrowserStack", + device: "iPhone 15 Pro", + os: "ios", + os_version: "17", + real_mobile: true + }, + "bs_ios-18": { + base: "BrowserStack", + device: "iPhone 16", + os: "ios", + os_version: "18", + real_mobile: true + }, + "bs_ios-26": { + base: "BrowserStack", + device: "iPhone 17", + os: "ios", + os_version: "26", + real_mobile: true + }, "bs_android-2.3": { base: "BrowserStack",