jquery/build/grunt-tasks/testswarm.js
Timmy Willison ec8802bafe
Build: migrate most grunt tasks off of grunt (3.x)
Close gh-5330

- lint
- npmcopy
- build, minify, and process for distribution.
- new custom build command using yargs
- compare size of minified/gzip built files
- pretest scripts, including qunit-fixture, babel transpilation, and npmcopy
- node smoke tests
- promises aplus tests
- new watch task using nodemon, which runs `npm run build:all` on `src` changes.

Also:

- upgraded husky and added the new lint command
- updated lint config to use new "flat" config format.
	See https://eslint.org/docs/latest/use/configure/configuration-files-new
- Temporarily disabled one lint rule until flat config is
	supported by eslint-plugin-import.
	See https://github.com/import-js/eslint-plugin-import/issues/2556
- committed package-lock.json
- updated all test scripts to use the new build
- added an express test server that uses middleware-mockserver
	this can be used to run tests without karma
- build-all-variants is now build:all
- run pretest script in jenkins

---------

Co-authored-by: Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
2023-09-20 18:18:42 -04:00

63 lines
1.6 KiB
JavaScript

"use strict";
module.exports = function( grunt ) {
grunt.registerTask( "testswarm", function( commit, configFile, projectName, browserSets,
timeout, testMode ) {
var jobName, config, tests,
testswarm = require( "testswarm" ),
runs = {},
done = this.async(),
pull = /PR-(\d+)/.exec( commit );
projectName = projectName || "jquery";
config = grunt.file.readJSON( configFile )[ projectName ];
browserSets = browserSets || config.browserSets;
if ( browserSets[ 0 ] === "[" ) {
// We got an array, parse it
browserSets = JSON.parse( browserSets );
}
timeout = timeout || 1000 * 60 * 15;
tests = grunt.config( [ this.name, "tests" ] );
if ( pull ) {
jobName = "Pull <a href='https://github.com/jquery/jquery/pull/" +
pull[ 1 ] + "'>#" + pull[ 1 ] + "</a>";
} else {
jobName = "Commit <a href='https://github.com/jquery/jquery/commit/" +
commit + "'>" + commit.substr( 0, 10 ) + "</a>";
}
if ( testMode === "basic" ) {
runs.basic = config.testUrl + commit + "/test/index.html?module=basic";
} else {
tests.forEach( function( test ) {
runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test;
} );
}
testswarm.createClient( {
url: config.swarmUrl
} )
.addReporter( testswarm.reporters.cli )
.auth( {
id: config.authUsername,
token: config.authToken
} )
.addjob(
{
name: jobName,
runs: runs,
runMax: config.runMax,
browserSets: browserSets,
timeout: timeout
}, function( err, passed ) {
if ( err ) {
grunt.log.error( err );
}
done( passed );
}
);
} );
};