mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Build: Run the basic test suite in jsdom
The basic test suite is now run in jsdom on all supported Node.js versions (8, 10 & 11 as of now). Closes gh-4310
This commit is contained in:
parent
84b6a0beb1
commit
0ec25abba2
52
Gruntfile.js
52
Gruntfile.js
@ -14,7 +14,15 @@ module.exports = function( grunt ) {
|
|||||||
|
|
||||||
var fs = require( "fs" ),
|
var fs = require( "fs" ),
|
||||||
gzip = require( "gzip-js" ),
|
gzip = require( "gzip-js" ),
|
||||||
isTravis = process.env.TRAVIS;
|
isTravis = process.env.TRAVIS,
|
||||||
|
oldNode = /^v6\./.test( process.version );
|
||||||
|
|
||||||
|
// Support: Node.js <8
|
||||||
|
// Skip running tasks that dropped support for Node.js 6
|
||||||
|
// in those Node versions.
|
||||||
|
function runIfNewNode( task ) {
|
||||||
|
return oldNode ? "print_old_node_message:" + task : task;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !grunt.option( "filename" ) ) {
|
if ( !grunt.option( "filename" ) ) {
|
||||||
grunt.option( "filename", "jquery.js" );
|
grunt.option( "filename", "jquery.js" );
|
||||||
@ -220,6 +228,33 @@ module.exports = function( grunt ) {
|
|||||||
browsers: [ isTravis ? "ChromeHeadlessNoSandbox" : "ChromeHeadless" ]
|
browsers: [ isTravis ? "ChromeHeadlessNoSandbox" : "ChromeHeadless" ]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
jsdom: {
|
||||||
|
options: {
|
||||||
|
files: [
|
||||||
|
"test/data/jquery-1.9.1.js",
|
||||||
|
"test/data/testinit-jsdom.js",
|
||||||
|
|
||||||
|
// We don't support various loading methods like AMD,
|
||||||
|
// choosing a version etc. for jsdom.
|
||||||
|
"dist/jquery.js",
|
||||||
|
|
||||||
|
// Replacement for testinit.js#loadTests()
|
||||||
|
"test/data/testrunner.js",
|
||||||
|
|
||||||
|
// jsdom only runs basic tests
|
||||||
|
"test/unit/basic.js",
|
||||||
|
|
||||||
|
{ pattern: "external/**", included: false, served: true },
|
||||||
|
{
|
||||||
|
pattern: "test/**/*.@(js|css|jpg|html|xml|svg)",
|
||||||
|
included: false,
|
||||||
|
served: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
browsers: [ "jsdom" ]
|
||||||
|
},
|
||||||
|
|
||||||
// To debug tests with Karma:
|
// To debug tests with Karma:
|
||||||
// 1. Run 'grunt karma:chrome-debug' or 'grunt karma:firefox-debug'
|
// 1. Run 'grunt karma:chrome-debug' or 'grunt karma:firefox-debug'
|
||||||
// (any karma subtask that has singleRun=false)
|
// (any karma subtask that has singleRun=false)
|
||||||
@ -285,6 +320,13 @@ module.exports = function( grunt ) {
|
|||||||
// Integrate jQuery specific tasks
|
// Integrate jQuery specific tasks
|
||||||
grunt.loadTasks( "build/tasks" );
|
grunt.loadTasks( "build/tasks" );
|
||||||
|
|
||||||
|
// Support: Node.js <8
|
||||||
|
// Print a message on Node.js <8 notifying the task is skipped there.
|
||||||
|
grunt.registerTask( "print_old_node_message", function() {
|
||||||
|
var task = [].slice.call( arguments ).join( ":" );
|
||||||
|
grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." );
|
||||||
|
} );
|
||||||
|
|
||||||
grunt.registerTask( "lint", [
|
grunt.registerTask( "lint", [
|
||||||
"jsonlint",
|
"jsonlint",
|
||||||
|
|
||||||
@ -305,7 +347,13 @@ module.exports = function( grunt ) {
|
|||||||
] );
|
] );
|
||||||
|
|
||||||
grunt.registerTask( "test:fast", "node_smoke_tests" );
|
grunt.registerTask( "test:fast", "node_smoke_tests" );
|
||||||
grunt.registerTask( "test:slow", "promises_aplus_tests" );
|
grunt.registerTask( "test:slow", [
|
||||||
|
"promises_aplus_tests",
|
||||||
|
|
||||||
|
// Support: Node.js <8
|
||||||
|
// Karma no longer supports Node.js <8 as it relies on async-await internally.
|
||||||
|
runIfNewNode( "karma:jsdom" )
|
||||||
|
] );
|
||||||
|
|
||||||
grunt.registerTask( "test", [
|
grunt.registerTask( "test", [
|
||||||
"test:fast",
|
"test:fast",
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
"karma-chrome-launcher": "2.2.0",
|
"karma-chrome-launcher": "2.2.0",
|
||||||
"karma-firefox-launcher": "1.1.0",
|
"karma-firefox-launcher": "1.1.0",
|
||||||
"karma-ie-launcher": "1.0.0",
|
"karma-ie-launcher": "1.0.0",
|
||||||
|
"karma-jsdom-launcher": "7.1.0",
|
||||||
"karma-qunit": "3.0.0",
|
"karma-qunit": "3.0.0",
|
||||||
"load-grunt-tasks": "4.0.0",
|
"load-grunt-tasks": "4.0.0",
|
||||||
"native-promise-only": "0.8.1",
|
"native-promise-only": "0.8.1",
|
||||||
|
@ -55,7 +55,10 @@
|
|||||||
|
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
"files": ["data/core/jquery-iterability-transpiled-es6.js"],
|
"files": [
|
||||||
|
"data/core/jquery-iterability-transpiled-es6.js",
|
||||||
|
"data/testinit-jsdom.js"
|
||||||
|
],
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 2015
|
"ecmaVersion": 2015
|
||||||
}
|
}
|
||||||
|
40
test/data/testinit-jsdom.js
Normal file
40
test/data/testinit-jsdom.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Support: jsdom 13.2+
|
||||||
|
// jsdom implements a throwing `window.scrollTo`.
|
||||||
|
QUnit.config.scrolltop = false;
|
||||||
|
|
||||||
|
const FILEPATH = "/test/data/testinit-jsdom.js";
|
||||||
|
const activeScript = document.currentScript;
|
||||||
|
const parentUrl = activeScript && activeScript.src ?
|
||||||
|
activeScript.src.replace( /[?#].*/, "" ) + FILEPATH.replace( /[^/]+/g, ".." ) + "/" :
|
||||||
|
"../";
|
||||||
|
const supportjQuery = this.jQuery;
|
||||||
|
|
||||||
|
// baseURL is intentionally set to "data/" instead of "".
|
||||||
|
// This is not just for convenience (since most files are in data/)
|
||||||
|
// but also to ensure that urls without prefix fail.
|
||||||
|
// Otherwise it's easy to write tests that pass on test/index.html
|
||||||
|
// but fail in Karma runner (where the baseURL is different).
|
||||||
|
const baseURL = parentUrl + "test/data/";
|
||||||
|
|
||||||
|
// Setup global variables before loading jQuery for testing .noConflict()
|
||||||
|
supportjQuery.noConflict( true );
|
||||||
|
window.originaljQuery = this.jQuery = undefined;
|
||||||
|
window.original$ = this.$ = "replaced";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add random number to url to stop caching
|
||||||
|
*
|
||||||
|
* Also prefixes with baseURL automatically.
|
||||||
|
*
|
||||||
|
* @example url("index.html")
|
||||||
|
* @result "data/index.html?10538358428943"
|
||||||
|
*
|
||||||
|
* @example url("mock.php?foo=bar")
|
||||||
|
* @result "data/mock.php?foo=bar&10538358345554"
|
||||||
|
*/
|
||||||
|
function url( value ) {
|
||||||
|
return baseURL + value + ( /\?/.test( value ) ? "&" : "?" ) +
|
||||||
|
new Date().getTime() + "" + parseInt( Math.random() * 100000, 10 );
|
||||||
|
}
|
@ -193,7 +193,9 @@ QUnit.test( "manipulation", function( assert ) {
|
|||||||
);
|
);
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "offset", function( assert ) {
|
// Support: jsdom 13.2+
|
||||||
|
// jsdom returns 0 for offset-related properties
|
||||||
|
QUnit[ /jsdom\//.test( navigator.userAgent ) ? "skip" : "test" ]( "offset", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
|
|
||||||
var parent = jQuery( "<div style='position:fixed;top:20px;'/>" ).appendTo( "#qunit-fixture" ),
|
var parent = jQuery( "<div style='position:fixed;top:20px;'/>" ).appendTo( "#qunit-fixture" ),
|
||||||
|
Loading…
Reference in New Issue
Block a user