| "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(); | |
| } ); | |
| }; |