Skip to content

Commit 3a39c78

Browse files
authored
feat: respawn the browser under be closed unexpectedly (#65)
* feat: respawn the browser under be closed unexpectedly realted with https://github.com/GoogleChrome/puppeteer/issues/4428\#issuecomment-500184469 * fix: wait until browser instance is ready
1 parent 7b23ed9 commit 3a39c78

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

packages/browserless/src/index.js

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,35 @@ module.exports = ({
1515
timeout = 30000,
1616
...launchOpts
1717
} = {}) => {
18-
const browser = puppeteer.launch({
19-
ignoreHTTPSErrors: true,
20-
args: [
21-
'--disable-notifications',
22-
'--disable-offer-store-unmasked-wallet-cards',
23-
'--disable-offer-upload-credit-cards',
24-
'--disable-setuid-sandbox',
25-
'--enable-async-dns',
26-
'--enable-simple-cache-backend',
27-
'--enable-tcp-fast-open',
28-
'--media-cache-size=33554432',
29-
'--no-default-browser-check',
30-
'--no-pings',
31-
'--no-sandbox',
32-
'--no-zygote',
33-
'--prerender-from-omnibox=disabled'
34-
],
35-
...launchOpts
36-
})
37-
38-
const newPage = () =>
18+
const createBrowser = async () => {
19+
const browser = await puppeteer.launch({
20+
ignoreHTTPSErrors: true,
21+
args: [
22+
'--disable-notifications',
23+
'--disable-offer-store-unmasked-wallet-cards',
24+
'--disable-offer-upload-credit-cards',
25+
'--disable-setuid-sandbox',
26+
'--enable-async-dns',
27+
'--enable-simple-cache-backend',
28+
'--enable-tcp-fast-open',
29+
'--media-cache-size=33554432',
30+
'--no-default-browser-check',
31+
'--no-pings',
32+
'--no-sandbox',
33+
'--no-zygote',
34+
'--prerender-from-omnibox=disabled'
35+
],
36+
...launchOpts
37+
})
38+
39+
browser.on('disconnected', createBrowser)
40+
41+
return browser
42+
}
43+
44+
const browser = createBrowser()
45+
46+
const createPage = () =>
3947
Promise.resolve(browser).then(async browser => {
4048
const context = incognito ? await browser.createIncognitoBrowserContext() : browser
4149
const page = await context.newPage()
@@ -44,7 +52,7 @@ module.exports = ({
4452
})
4553

4654
const wrapError = fn => async (...args) => {
47-
const page = await newPage()
55+
const page = await createPage()
4856
let error
4957
let res
5058

@@ -76,7 +84,7 @@ module.exports = ({
7684
evaluate,
7785
pdf,
7886
screenshot,
79-
page: newPage,
87+
page: createPage,
8088
goto
8189
}
8290
}

0 commit comments

Comments
 (0)