gun/test/panic/util/open.js
2020-09-17 12:33:04 +12:00

46 lines
1.3 KiB
JavaScript

let _browsers = [];
module.exports = {
web: (count, url, options) => {
if (typeof count === 'string') {
options = url;
url = count;
count = 1;
}
if (!url || typeof url !== 'string') {
throw new Error('Invalid URL');
}
try {
require('puppeteer').launch(options).then(browser => {
_browsers.push(browser);
Array(count).fill(0).forEach((x, i) => {
console.log('Opening browser page ' + i + ' with puppeteer...');
browser.newPage().then(page => {
page.on('console', msg => {
if (msg.text() === 'JSHandle@object') {
// FIXME: Avoid text comparison
return;
}
console.log(`${i} [${msg.type()}]: ${msg.text()}`);
});
return page.goto(url);
}).then(() => {
console.log('Browser page ' + i + ' open');
});
});
});
} catch (err) {
console.log("PLEASE OPEN "+ url +" IN "+ count +" BROWSER(S)!");
console.warn('Consider installing puppeteer to automate browser management (npm i -g puppeteer && npm link puppeteer)');
}
},
cleanup: () => {
if (_browsers.length === 0) {
return undefined;
}
console.log('Closing all puppeteer browsers...');
return Promise.all(_browsers.map(b => b.close()))
.then(() => console.log('Closed all puppeteer browsers'));
}
}