aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2023-03-30 09:59:42 +0200
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2023-05-10 10:53:57 +0200
commit360259e2b21feb817d8a3e0795886649011ccad6 (patch)
tree2995e51b753149eadeeda6567b6c3266e5f56b8d
parentafb83c315dac08e632d2b6d8d4f1541bd93e1ca8 (diff)
downloadjquery-ui-360259e2b21feb817d8a3e0795886649011ccad6.tar.gz
jquery-ui-360259e2b21feb817d8a3e0795886649011ccad6.zip
Tests: Make Puppeter really fire Chrome on macOS
Also, workaround issues with QUnit Chrome bridge: the Chrome bridge from `grunt-contrib-qunit` is now getting injected into every single iframe, including an empty one that has no intention of running QUnit tests. Since that bridge requires QUnit, it fails with an error in such cases. Workaround the issue by wrapping the bridge in another function that bails early if QUnit is not defined. Ref gh-2157
-rw-r--r--Gruntfile.js11
-rw-r--r--tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.intro20
-rw-r--r--tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.outro2
3 files changed, 29 insertions, 4 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
index 3456e0064..6c29ebe9e 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -209,15 +209,18 @@ grunt.initConfig( {
} ),
options: {
puppeteer: {
- ignoreDefaultArgs: true,
args: [
- "--headless",
- "--disable-web-security",
"--allow-file-access-from-files"
]
},
inject: [
- require.resolve( "grunt-contrib-qunit/chrome/bridge" )
+ require.resolve(
+ "./tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.intro"
+ ),
+ require.resolve( "grunt-contrib-qunit/chrome/bridge" ),
+ require.resolve(
+ "./tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.outro"
+ )
],
page: {
viewportSize: { width: 700, height: 500 }
diff --git a/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.intro b/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.intro
new file mode 100644
index 000000000..227aa6c3e
--- /dev/null
+++ b/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.intro
@@ -0,0 +1,20 @@
+// The bridge in `node_modules/grunt-contrib-qunit/chrome/bridge.js` is injected
+// into every iframe, even an empty one injected during QUnit tests. The bridge,
+// in turn, requires QUnit to be present on the page, throwing errors otherwise.
+// To workaround that, add another wrapper which detects a missing QUnit and skips
+// the whole logic.
+
+( function ( factory ) {
+ if ( typeof define === 'function' && define.amd ) {
+ require( [ 'qunit' ], factory );
+ } else {
+ factory( window.QUnit );
+ }
+} )( function( QUnit ) {
+
+if ( !QUnit ) {
+
+ // No QUnit => possibly an empty iframe injected in tests; ignore.
+ return;
+}
+
diff --git a/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.outro b/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.outro
new file mode 100644
index 000000000..647170adb
--- /dev/null
+++ b/tests/lib/grunt-contrib-qunit-bridges/bridge-wrapper.js.outro
@@ -0,0 +1,2 @@
+
+} );