} ),
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 }
--- /dev/null
+// 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;
+}
+