aboutsummaryrefslogtreecommitdiffstats
path: root/test/jquery.js
blob: d6d53fb26334adac1558512dd296b1eff8d6c030 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Use the right jQuery source on the test page (and iframes)
( function() {
	/* global loadTests: false */

	var dynamicImportSource,
		FILEPATH = "/test/jquery.js",
		activeScript = [].slice.call( document.getElementsByTagName( "script" ), -1 )[ 0 ],
		parentUrl = activeScript && activeScript.src ?
			activeScript.src.replace( /[?#].*/, "" ) + FILEPATH.replace( /[^/]+/g, ".." ) + "/" :
			"../",
		QUnit = window.QUnit || parent.QUnit,
		require = window.require || parent.require,

		// Default to unminified jQuery for directly-opened iframes
		urlParams = QUnit ?
			QUnit.urlParams :
			{ dev: true },
		src = urlParams.dev ?
			"dist/jquery.js" :
			"dist/jquery.min.js";

	// Define configuration parameters controlling how jQuery is loaded
	if ( QUnit ) {

		// ES modules loading is asynchronous and incompatible with synchronous
		// test loading in Karma.
		if ( !window.__karma__ ) {
			QUnit.config.urlConfig.push( {
				id: "esmodules",
				label: "Load as modules",
				tooltip: "Load a relevant jQuery module file (and its dependencies)"
			} );
		}

		QUnit.config.urlConfig.push( {
			id: "dev",
			label: "Load unminified",
			tooltip: "Load the development (unminified) jQuery file"
		} );
	}

	// Honor AMD loading on the main window (detected by seeing QUnit on it).
	// This doesn't apply to iframes because they synchronously expect jQuery to be there.
	if ( urlParams.esmodules && window.QUnit ) {

		// Support: IE 11+, Edge 12 - 18+
		// IE/Edge don't support the dynamic import syntax so they'd crash
		// with a SyntaxError here.
		dynamicImportSource = "" +
			"import( `${ parentUrl }src/jquery.js` ).then( ( { default: jQuery } ) => {\n" +
			"	window.jQuery = jQuery;\n" +
			"	if ( typeof loadTests === \"function\" ) {\n" +
			"		// Include tests if specified\n" +
			"		loadTests();\n" +
			"	}\n" +
			"} );";

		eval( dynamicImportSource );

	// Otherwise, load synchronously
	} else {
		document.write( "<script id='jquery-js' nonce='jquery+hardcoded+nonce' src='" + parentUrl + src + "'><\x2Fscript>" );
	}

} )();