aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2019-12-09 20:00:44 +0100
committerGitHub <noreply@github.com>2019-12-09 20:00:44 +0100
commitf37c2e51f36c8f8bab3879064a90e86a685feafc (patch)
treeb5a5c406a6550722af65ebf579f0a51d6d8c336e /test
parentd5c505e35d8c74ce8e9d99731a1a7eab0e0d911c (diff)
downloadjquery-f37c2e51f36c8f8bab3879064a90e86a685feafc.tar.gz
jquery-f37c2e51f36c8f8bab3879064a90e86a685feafc.zip
Build: Auto-convert sources to AMD
jQuery source has been migrated in gh-4541 from AMD to ES modules. To maintain support for consumers of our AMD modules, this commits adds a task transpiling the ES modules sources in `src/` to AMD in `amd/`. A "Load with AMD" checkbox was also restored to the QUnit setup. Note that, contrary to jQuery 3.x, AMD files need to be generated via `grunt amd` or `grunt` as sources are not authored in ECMAScript modules. To achieve a similar no-compile experience during jQuery 4.x testing, use the new "Load as modules" checkbox which works in all supported browsers except for IE & Edge (the legacy, EdgeHTML-based one). Ref gh-4541 Closes gh-4554
Diffstat (limited to 'test')
-rw-r--r--test/data/testinit.js12
-rw-r--r--test/index.html4
-rw-r--r--test/jquery.js23
3 files changed, 30 insertions, 9 deletions
diff --git a/test/data/testinit.js b/test/data/testinit.js
index 7a8697189..4088e4671 100644
--- a/test/data/testinit.js
+++ b/test/data/testinit.js
@@ -299,14 +299,16 @@ QUnit.testUnlessIE = QUnit.isIE ? QUnit.skip : QUnit.test;
this.loadTests = function() {
- // Directly load tests that need synchronous evaluation
- if ( !QUnit.urlParams.esmodules || document.readyState === "loading" ) {
+ // QUnit.config is populated from QUnit.urlParams but only at the beginning
+ // of the test run. We need to read both.
+ var amd = QUnit.config.amd || QUnit.urlParams.amd;
+
+ // Directly load tests that need evaluation before DOMContentLoaded.
+ if ( !amd || document.readyState === "loading" ) {
document.write( "<script src='" + parentUrl + "test/unit/ready.js'><\x2Fscript>" );
} else {
QUnit.module( "ready", function() {
- QUnit.test( "jQuery ready", function( assert ) {
- assert.ok( false, "Test should be initialized before DOM ready" );
- } );
+ QUnit.skip( "jQuery ready tests skipped in async mode", function() {} );
} );
}
diff --git a/test/index.html b/test/index.html
index 632275bb3..fff50faab 100644
--- a/test/index.html
+++ b/test/index.html
@@ -19,7 +19,7 @@
<!-- See testinit for the list of tests -->
<script src="data/testinit.js"></script>
- <!-- A script that includes jQuery min, dev, or ES modules -->
+ <!-- A script that includes jQuery min, dev, ES modules or AMD -->
<!-- Adds "basic" URL option, even to iframes -->
<!-- iframes will not load AMD as loading needs to be synchronous for some tests -->
<!-- Also executes the function above to load tests -->
@@ -29,7 +29,7 @@
// Load tests if they have not been loaded
// This is in a different script tag to ensure that
// jQuery is on the page when the testrunner executes
- if ( !QUnit.urlParams.esmodules ) {
+ if ( !QUnit.urlParams.esmodules && !QUnit.urlParams.amd ) {
loadTests();
}
</script>
diff --git a/test/jquery.js b/test/jquery.js
index d6d53fb26..c34c7c491 100644
--- a/test/jquery.js
+++ b/test/jquery.js
@@ -28,7 +28,12 @@
QUnit.config.urlConfig.push( {
id: "esmodules",
label: "Load as modules",
- tooltip: "Load a relevant jQuery module file (and its dependencies)"
+ tooltip: "Load the jQuery module file (and its dependencies)"
+ } );
+ QUnit.config.urlConfig.push( {
+ id: "amd",
+ label: "Load with AMD",
+ tooltip: "Load the AMD jQuery file (and its dependencies)"
} );
}
@@ -39,7 +44,7 @@
} );
}
- // Honor AMD loading on the main window (detected by seeing QUnit on it).
+ // Honor ES modules 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 ) {
@@ -57,6 +62,20 @@
eval( dynamicImportSource );
+ // Apply similar treatment for AMD modules
+ } else if ( urlParams.amd && window.QUnit ) {
+ require.config( {
+ baseUrl: parentUrl
+ } );
+ src = "amd/jquery";
+
+ // Include tests if specified
+ if ( typeof loadTests !== "undefined" ) {
+ require( [ src ], loadTests );
+ } else {
+ require( [ src ] );
+ }
+
// Otherwise, load synchronously
} else {
document.write( "<script id='jquery-js' nonce='jquery+hardcoded+nonce' src='" + parentUrl + src + "'><\x2Fscript>" );