]> source.dussan.org Git - jquery.git/commitdiff
Build: Test on Node 17, update Grunt & `karma-*` packages
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Mon, 14 Mar 2022 16:58:41 +0000 (17:58 +0100)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Mon, 14 Mar 2022 17:31:49 +0000 (18:31 +0100)
This adds testing on Node.js 17 in addition to the currently tested 10, 12, 14
and 16 versions.

Also, update Grunt & `karma-*` packages.

Testing in Karma on jsdom is broken in Node 17 at the moment; until we find
a fix, this change disables such testing on Node 17 or newer.

Node smoke tests & promises aplus tests are disabled on Node.js 10 as they
depend on jsdom and the latest jsdom version doesn't run properly on Node 10.

Closes gh-5023

(cherry picked from commit 2525cffc42934c0d5c7aa085bc45dd6a8282e840)

.github/workflows/node.js.yml
Gruntfile.js
package.json

index 0eea38b89cc4bca7dc6fc7fb4dc0e53b35818cee..61586fd305410bb3529d36659544c20b2bb6a9cb 100644 (file)
@@ -9,7 +9,8 @@ jobs:
       fail-fast: false
       matrix:
         # Node.js 10 is required by jQuery infra
-        NODE_VERSION: [10.x, 12.x, 14.x, 16.x]
+        # Do not remove 16.x until jsdom tests are re-enabled on newer Node.js versions.
+        NODE_VERSION: [10.x, 12.x, 14.x, 16.x, 17.x]
         NPM_SCRIPT: ["test:browserless"]
         include:
           - NAME: "Browser tests: full build, Chrome & Firefox stable"
index cbcfaa665ffda8c38981ad2e64816d92aeffcea2..f93c3a2b580b3e8bb430de6585554f3a979a32fd 100644 (file)
@@ -12,8 +12,17 @@ module.exports = function( grunt ) {
                return data;
        }
 
+       // Support: Node.js <12
+       // Skip running tasks that dropped support for Node.js 10
+       // in this Node version.
+       function runIfNewNode( task ) {
+               return oldNode ? "print_old_node_message:" + task : task;
+       }
+
        var fs = require( "fs" ),
                gzip = require( "gzip-js" ),
+               oldNode = /^v10\./.test( process.version ),
+               nodeV17OrNewer = !/^v1[0246]\./.test( process.version ),
                isCi = process.env.GITHUB_ACTION,
                ciBrowsers = process.env.BROWSERS && process.env.BROWSERS.split( "," );
 
@@ -333,6 +342,15 @@ module.exports = function( grunt ) {
        // Integrate jQuery specific tasks
        grunt.loadTasks( "build/tasks" );
 
+       grunt.registerTask( "print_old_node_message", ( ...args ) => {
+               var task = args.join( ":" );
+               grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." );
+       } );
+
+       grunt.registerTask( "print_jsdom_message", () => {
+               grunt.log.writeln( "Node.js 17 or newer detected, skipping jsdom tests..." );
+       } );
+
        grunt.registerTask( "lint", [
                "jsonlint",
 
@@ -340,22 +358,26 @@ module.exports = function( grunt ) {
                // would run the dist target first which would point to errors in the built
                // file, making it harder to fix them. We want to check the built file only
                // if we already know the source files pass the linter.
-               "eslint:dev",
-               "eslint:dist"
+               runIfNewNode( "eslint:dev" ),
+               runIfNewNode( "eslint:dist" )
        ] );
 
        grunt.registerTask( "lint:newer", [
                "newer:jsonlint",
 
                // Don't replace it with just the task; see the above comment.
-               "newer:eslint:dev",
-               "newer:eslint:dist"
+               runIfNewNode( "newer:eslint:dev" ),
+               runIfNewNode( "newer:eslint:dist" )
        ] );
 
-       grunt.registerTask( "test:fast", "node_smoke_tests" );
+       grunt.registerTask( "test:fast", runIfNewNode( "node_smoke_tests" ) );
        grunt.registerTask( "test:slow", [
-               "promises_aplus_tests",
-               "karma:jsdom"
+               runIfNewNode( "promises_aplus_tests" ),
+
+               // Support: Node.js 17+
+               // jsdom fails to connect to the Karma server in Node 17+.
+               // Until we figure out a fix, skip jsdom tests there.
+               nodeV17OrNewer ? "print_jsdom_message" : runIfNewNode( "karma:jsdom" )
        ] );
 
        grunt.registerTask( "test:prepare", [
@@ -371,7 +393,7 @@ module.exports = function( grunt ) {
 
        grunt.registerTask( "dev", [
                "build:*:*",
-               "newer:eslint:dev",
+               runIfNewNode( "newer:eslint:dev" ),
                "newer:uglify",
                "remove_map_comment",
                "dist:*",
@@ -380,13 +402,13 @@ module.exports = function( grunt ) {
        ] );
 
        grunt.registerTask( "default", [
-               "eslint:dev",
+               runIfNewNode( "eslint:dev" ),
                "build:*:*",
                "uglify",
                "remove_map_comment",
                "dist:*",
                "test:prepare",
-               "eslint:dist",
+               runIfNewNode( "eslint:dist" ),
                "test:fast",
                "compare_size"
        ] );
index 1d0bd016c03a32aa1073fba56a227414d1e62b16..f2a08e8a233104ca30cea297b6f6b1dba0ec7547 100644 (file)
     "commitplease": "3.2.0",
     "core-js": "2.6.5",
     "eslint-config-jquery": "3.0.0",
-    "grunt": "1.3.0",
+    "grunt": "1.4.1",
     "grunt-babel": "8.0.0",
-    "grunt-cli": "1.3.2",
+    "grunt-cli": "1.4.3",
     "grunt-compare-size": "0.4.2",
     "grunt-contrib-uglify": "3.4.0",
     "grunt-contrib-watch": "1.1.0",
     "grunt-eslint": "22.0.0",
     "grunt-git-authors": "3.2.0",
-    "grunt-jsonlint": "1.1.0",
-    "grunt-karma": "4.0.0",
+    "grunt-jsonlint": "2.1.2",
+    "grunt-karma": "4.0.2",
     "grunt-newer": "1.3.0",
     "grunt-npmcopy": "0.2.0",
     "gzip-js": "0.3.2",
-    "husky": "1.3.1",
-    "insight": "0.10.1",
-    "jsdom": "13.2.0",
-    "karma": "5.2.3",
-    "karma-browserstack-launcher": "1.4.0",
-    "karma-chrome-launcher": "2.2.0",
-    "karma-firefox-launcher": "1.1.0",
+    "husky": "4.2.5",
+    "insight": "0.10.3",
+    "jsdom": "19.0.0",
+    "karma": "^6.3.17",
+    "karma-browserstack-launcher": "1.6.0",
+    "karma-chrome-launcher": "3.1.1",
+    "karma-firefox-launcher": "2.1.2",
     "karma-ie-launcher": "1.0.0",
-    "karma-jsdom-launcher": "8.0.2",
-    "karma-qunit": "3.0.0",
+    "karma-jsdom-launcher": "12.0.0",
+    "karma-qunit": "4.1.2",
     "load-grunt-tasks": "5.1.0",
     "native-promise-only": "0.8.1",
     "promises-aplus-tests": "2.1.2",