add load-browser-scripts utility (#1077)

This commit is contained in:
nsreed 2021-06-02 19:23:47 -04:00 committed by GitHub
parent 0f9ebfc454
commit fc10c250c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,41 @@
module.exports = {
/**
* Loads scripts in PANIC clients
* @param browsers a Panic.ClientList of browsers
* @param paths an array of paths to desired .js files
* @returns Promise which will resolve when all browsers have loaded all dependencies
*/
loadBrowserScripts: function (browsers, paths) {
var promises = [];
browsers.each(function (client, id) {
promises.push(client.run(function (test) {
test.async();
var env = test.props;
var imports = env.paths || [];
/** Loads a single script in the browser */
function load(src, cb) {
var script = document.createElement('script');
script.onload = cb; script.src = src;
document.head.appendChild(script);
}
/** Loads scripts in order, waiting on each to load before proceeding */
function loadAll(src, cb) {
if (src.length === 0) {
cb();
return;
}
var cur = src.shift();
// console.log('loading library:', cur);
load(cur, function () {
loadAll(src, cb);
});
}
loadAll(imports, function () {
test.done();
});
}, {paths: paths}));
});
return Promise.all(promises);
}
};