diff --git a/package.json b/package.json index ce1f63a..d357381 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "listr": "^0.12.0", "lodash": "^4.17.4", "phantomjs-prebuilt": "^2.1.14", - "puppeteer": "^0.12.0", + "puppeteer": "^19.0.0", "request": "^2.81.0", "rsvp": "^4.0.1" }, diff --git a/src/renderers/chrome/index.js b/src/renderers/chrome/index.js index 9ee03f3..e046920 100644 --- a/src/renderers/chrome/index.js +++ b/src/renderers/chrome/index.js @@ -6,7 +6,10 @@ import Renderer from '../../renderer'; const { isString } = _; -const DEFAULT_BOOT_OPTIONS = {}; // use puppeteer defaults, https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions +const DEFAULT_BOOT_OPTIONS = { + executablePath: '/usr/bin/chromium', + args: ['--no-sandbox', '--disable-setuid-sandbox'] +}; export class ChromeRenderer extends Renderer { static get DEFAULT_BOOT_OPTIONS() { @@ -114,7 +117,7 @@ export class ChromeRenderer extends Renderer { } async renderPage(page, options = {}) { - let { path: filepath, type } = options; + let { path: filepath, type, waitForNavigation } = options; let buffer; if (!isString(type)) { @@ -122,6 +125,20 @@ export class ChromeRenderer extends Renderer { type = type.length > 0 ? type : 'html'; } + if (waitForNavigation !== null && waitForNavigation !== undefined) { + if (waitForNavigation === false) { + return; + } else if (waitForNavigation === Object(waitForNavigation)) { + await page._chromePage.waitForNavigation(waitForNavigation); + } else { + await page._chromePage.waitForNavigation({ + waitUntil: 'networkidle0', + timeout: 0 + }); + } + delete options.waitForNavigation; + } + switch (type) { case 'html': buffer = await page._chromePage.content(); @@ -130,7 +147,7 @@ export class ChromeRenderer extends Renderer { let { emulateMedia } = options; if (emulateMedia !== null && emulateMedia !== undefined) { - await page._chromePage.emulateMedia(emulateMedia); + await page._chromePage.emulateMediaType(emulateMedia); delete options.emulateMedia; }