mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
46 lines
1.3 KiB
JavaScript
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'));
|
|
}
|
|
}
|