Skip to content

Commit 948eff8

Browse files
authored
Build: Run Karma tests sequentially in separate processes + other improvements
Sizzle hasn't been able to finish all its unit tests successfully for a long time. This commit attempts to make it work again (at least most of the time). Summary of the changes: 1. A new "karma-tests" task is created; it runs tests in various browser sets but does it sequentially in separate processes to avoid Karma bugs that cause browsers from previous sets to somehow still be waited on during subsequent runs, failing the build. 2. Upgrade tested browsers. 3. Run iOS tests at the end (as it fails more often than other browsers). 4. Use real iOS 10.3 device in Karma. We can't upgrade Karma as the latest version (`4.2.0`) hangs in IE 7 (IE 8 seems to work fine there). Closes gh-455
1 parent 11767a1 commit 948eff8

File tree

4 files changed

+73
-30
lines changed

4 files changed

+73
-30
lines changed

.eslintrc-node.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"extends": "jquery",
55

66
"parserOptions": {
7-
"ecmaVersion": 2017
7+
"ecmaVersion": 2018
88
},
99

1010
"env": {

Gruntfile.js

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ module.exports = function( grunt ) {
3232

3333
browsers.desktop = [
3434
"bs_chrome-45", // shares V8 with Node.js 4 LTS
35-
"bs_chrome-70", "bs_chrome-71",
35+
"bs_chrome-75", "bs_chrome-76",
3636

3737
"bs_firefox-52", "bs_firefox-60", // Firefox ESR
38-
"bs_firefox-63", "bs_firefox-64",
38+
"bs_firefox-67", "bs_firefox-68",
3939

4040
"bs_edge-17", "bs_edge-18",
4141

4242
"bs_ie-9", "bs_ie-10", "bs_ie-11",
4343

44-
"bs_opera-56", "bs_opera-57",
44+
"bs_opera-60", "bs_opera-62",
4545

4646
// Real Safari 6.1 and 7.0 are not available
4747
"bs_safari-6.0", "bs_safari-8.0", "bs_safari-9.1", "bs_safari-10.1",
@@ -258,19 +258,9 @@ module.exports = function( grunt ) {
258258
grunt.registerTask( "lint", [ "jsonlint", "eslint:dev", "eslint:dist" ] );
259259
grunt.registerTask( "start", [ "karma:watch:start", "watch" ] );
260260

261-
// Execute tests all browsers in sequential way,
262-
// so slow connections would not affect other runs
263-
grunt.registerTask( "tests", isBrowserStack ? [
264-
"karma:phantom", "karma:desktop",
265-
266-
"karma:ios",
267-
268-
"karma:oldIe", "karma:oldFirefox", "karma:oldChrome",
269-
"karma:oldSafari", "karma:oldOpera"
270-
271-
// See #314 :-(
272-
// "karma:android", "karma:oldAndroid"
273-
] : "karma:phantom" );
261+
grunt.registerTask( "tests", [
262+
`karma-tests:${ isBrowserStack ? "browserstack" : "" }`
263+
] );
274264

275265
grunt.registerTask( "build", [
276266
"jsonlint",

tasks/karma-tests.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"use strict";
2+
3+
const spawn = require( "child_process" ).spawn;
4+
5+
module.exports = function( grunt ) {
6+
7+
// The task runs tests in various browser sets but does it sequentially in
8+
// separate processes to avoid Karma bugs that cause browsers from previous
9+
// sets to somehow still be waited on during subsequent runs, failing the build.
10+
grunt.registerTask( "karma-tests", "Run unit tests sequentially",
11+
async function( isBrowserStack ) {
12+
const done = this.async();
13+
14+
const tasks = isBrowserStack ? [
15+
"karma:phantom", "karma:desktop",
16+
17+
"karma:oldIe", "karma:oldFirefox", "karma:oldChrome",
18+
"karma:oldSafari", "karma:oldOpera",
19+
20+
"karma:ios"
21+
22+
// See #314 :-(
23+
// "karma:android", "karma:oldAndroid"
24+
] : [ "karma:phantom" ];
25+
26+
for ( let task of tasks ) {
27+
const command = `grunt ${ task }`;
28+
grunt.log.writeln( `Running task ${ task } in a subprocess...` );
29+
30+
await new Promise( ( resolve, reject ) => {
31+
const ret = spawn( command, {
32+
shell: true,
33+
stdio: "inherit"
34+
} );
35+
36+
ret.on( "close", ( code ) => {
37+
if ( code === 0 ) {
38+
resolve();
39+
} else {
40+
const message = `Error code ${ code } during command: ${ command }`;
41+
console.error( message );
42+
reject( new Error( message ) );
43+
done( false );
44+
}
45+
} );
46+
} );
47+
}
48+
49+
done();
50+
}
51+
);
52+
};

test/karma/launchers.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ module.exports = {
2222
os: "OS X",
2323
os_version: "High Sierra"
2424
},
25-
"bs_firefox-63": {
25+
"bs_firefox-67": {
2626
base: "BrowserStack",
2727
browser: "firefox",
28-
browser_version: "63.0",
28+
browser_version: "67.0",
2929
os: "OS X",
3030
os_version: "Mojave"
3131
},
32-
"bs_firefox-64": {
32+
"bs_firefox-68": {
3333
base: "BrowserStack",
3434
browser: "firefox",
35-
browser_version: "64.0",
35+
browser_version: "68.0",
3636
os: "OS X",
3737
os_version: "Mojave"
3838
},
@@ -51,17 +51,17 @@ module.exports = {
5151
os: "OS X",
5252
os_version: "Sierra"
5353
},
54-
"bs_chrome-70": {
54+
"bs_chrome-75": {
5555
base: "BrowserStack",
5656
browser: "chrome",
57-
browser_version: "70.0",
57+
browser_version: "75.0",
5858
os: "OS X",
5959
os_version: "Mojave"
6060
},
61-
"bs_chrome-71": {
61+
"bs_chrome-76": {
6262
base: "BrowserStack",
6363
browser: "chrome",
64-
browser_version: "71.0",
64+
browser_version: "76.0",
6565
os: "OS X",
6666
os_version: "Mojave"
6767
},
@@ -138,17 +138,17 @@ module.exports = {
138138
os: "Windows",
139139
os_version: "7"
140140
},
141-
"bs_opera-56": {
141+
"bs_opera-60": {
142142
base: "BrowserStack",
143143
browser: "opera",
144-
browser_version: "56.0",
144+
browser_version: "60.0",
145145
os: "OS X",
146146
os_version: "Mojave"
147147
},
148-
"bs_opera-57": {
148+
"bs_opera-62": {
149149
base: "BrowserStack",
150150
browser: "opera",
151-
browser_version: "57.0",
151+
browser_version: "62.0",
152152
os: "OS X",
153153
os_version: "Mojave"
154154
},
@@ -251,7 +251,8 @@ module.exports = {
251251
base: "BrowserStack",
252252
device: "iPhone 7",
253253
os: "ios",
254-
os_version: "10.3"
254+
os_version: "10.3",
255+
real_mobile: true
255256
},
256257
"bs_ios-11.4": {
257258
base: "BrowserStack",

0 commit comments

Comments
 (0)