"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 ); } // We only run basic tests in jsdom so we don't need to repeat the logic // from the regular testinit.js this.includesModule = function() { return true; }; // The file-loading part of testinit.js#loadTests is handled by // jsdom Karma config; here we just need to trigger relevant APIs. this.loadTests = function() { // Delay the initialization until after all the files are loaded // as in the JSDOM case we load them via Karma (see Gruntfile.js) // instead of directly in testinit.js. window.addEventListener( "load", function() { window.__karma__.start(); jQuery.noConflict(); QUnit.start(); } ); };