addyosmani/critical

critical does not work with a remote browser

Open

#376 opened on Jun 12, 2019

View on GitHub
 (7 comments) (0 reactions) (0 assignees)JavaScript (457 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (9,902 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Running something like this doesn't work.

const browser = puppeteer.connect({
    browserWSEndpoint: 'ws://127.0.0.1:3000',
});

critical.generate({
    src: 'https://www.google.com/',
    penthouse: {
        puppeteer: {
            getBrowser: () => browser,
        },
    },
});

This results in an error.

{
    "errorMessage": "Protocol error (Page.navigate): Cannot navigate to invalid URL",
    "errorType": "Error",
    "stackTrace": [
        "Error: Protocol error (Page.navigate): Cannot navigate to invalid URL",
        "at Promise (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Connection.js:185:56)",
        "at new Promise (<anonymous>)",
        "at CDPSession.send (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Connection.js:184:12)",
        "at navigate (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:119:39)",
        "at FrameManager.navigateFrame (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:96:7)",
        "at Frame.goto (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:407:37)",
        "at Frame.<anonymous> (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\helper.js:111:23)",
        "at Page.goto (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Page.js:629:49)",
        "at Page.<anonymous> (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\helper.js:111:23)",
        "at loadPage (C:\\Users\\user\\Projects\\project\\node_modules\\penthouse\\lib\\core.js:54:30)",
        "at Promise (C:\\Users\\user\\Projects\\project\\node_modules\\penthouse\\lib\\core.js:384:29)",
        "at process._tickCallback (internal/process/next_tick.js:68:7)"
    ]
}

It tries to connect to 'file://C:\\Users\\user\\AppData\\Local\\Temp\\6df8ea397e6c2d676ff1b27a1e00f391\\79f06439b62759c632b77f71ef3d3cd0.html'.

Would it somehow be possible to get this working using a remote browser? I'm running a headless chrome instance in a docker container which I let puppeteer connect to and it obviously can't connect to a local temp file.

Contributor guide