Skip to content

Instantly share code, notes, and snippets.

@wardpeet
Created September 10, 2020 09:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wardpeet/9f7f9a3dcf2fb7b0a4b418577d3170a1 to your computer and use it in GitHub Desktop.
Save wardpeet/9f7f9a3dcf2fb7b0a4b418577d3170a1 to your computer and use it in GitHub Desktop.
chrome flood - open lots of tabs at once and keep them open
const puppeteer = require("puppeteer");
const readline = require("readline");
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
const pageSet = new Set();
const sleep = (timeout) =>
new Promise((resolve) => setTimeout(resolve, timeout));
let input = false;
process.stdin.on("keypress", (str, key) => {
// Conditions on key
input = true;
setTimeout(() => {
[...pageSet].forEach((page) => {
page.close();
});
}, 10000);
});
process.on("unhandledRejection", (err) => {
console.log(err);
console.log(`Viewed ${viewedPages} pages`);
process.exit(0);
});
let viewedPages = 0;
let i = 0;
async function loadPage(browser, url) {
i++;
const page = await browser.newPage();
pageSet.add(page);
await page.setRequestInterception(true);
// page.on("request", (request) => {
// if (request.url().includes("__webpack_hmr")) {
// request.abort();
// } else {
// request.continue();
// }
// });
try {
await page.goto(url, {
waitUntil: "networkidle2",
timeout: 0,
});
} catch (err) {
// swallow errror
}
await sleep(2000);
viewedPages++;
pageSet.delete(page);
await page.close();
i--;
}
(async () => {
const browser = await puppeteer.launch({
headless: false,
devtools: true,
});
browser.on("disconnected", () => {
if (!input) {
process.exit(0);
}
});
function load() {
if (input) {
return Promise.resolve();
}
return loadPage(browser, "http://localhost:8081/").then(() => load());
// return loadPage(browser, "http://localhost:8200/").then(() => load());
}
await Promise.all(new Array(30).fill("1").map(() => load()));
await browser.close();
console.log(`Viewed ${viewedPages} pages`);
process.exit(0);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment