GoogleChromeLabs / lighthousebot

Run Lighthouse in CI, as a web service, using Docker. Pass/Fail GH pull requests.
Apache License 2.0
2.24k stars 127 forks source link

LHError: INVALID_URL #86

Open bizmate opened 4 years ago

bizmate commented 4 years ago

I was hoping to run lighthouse in my CI so I tried to build the image from the Dockerfile on master. I had to apply the fix as per PR https://github.com/GoogleChromeLabs/lighthousebot/pull/84 (so it would be nice if the PR was approved and merged) and when i get a working image I run it using docker-compose (no much difference from docker on its own but it is just nice as it can call other containers using service references) with the following setup:

  speedtest:
    #image: justinribeiro/lighthouse
    build: docker/lighthouse_ci
    volumes:
      - reports:/home/chrome/reports
#    command: ['lighthouse', '--chrome-flags="--headless --disable-gpu "', 'http://web/component/FullVerticalLayout']
    command: ['lighthouse_ci', 'http://web/component/FullVerticalLayout']
    depends_on:
      - web
    cap_add:
      - SYS_ADMIN

and when running it I get error

$ docker-compose logs speedtest
Attaching to myreviews-styleguide_speedtest_1
speedtest_1  | Tue, 31 Mar 2020 17:17:48 GMT ChromeLauncher No debugging port found on port 9222, launching a new Chrome.
speedtest_1  | Tue, 31 Mar 2020 17:17:48 GMT ChromeLauncher Waiting for browser.
speedtest_1  | Tue, 31 Mar 2020 17:17:48 GMT ChromeLauncher Waiting for browser...
speedtest_1  | Tue, 31 Mar 2020 17:17:48 GMT ChromeLauncher Waiting for browser.....
speedtest_1  | Tue, 31 Mar 2020 17:17:49 GMT ChromeLauncher Waiting for browser.......
speedtest_1  | Tue, 31 Mar 2020 17:17:49 GMT ChromeLauncher Waiting for browser.......✓
speedtest_1  | Tue, 31 Mar 2020 17:17:49 GMT config:warn IFrameElements gatherer requested, however no audit requires it.
speedtest_1  | Tue, 31 Mar 2020 17:17:49 GMT config:warn MainDocumentContent gatherer requested, however no audit requires it.
speedtest_1  | Tue, 31 Mar 2020 17:17:49 GMT ChromeLauncher Killing Chrome instance 27
speedtest_1  | Runtime error encountered: The URL you have provided appears to be invalid.
speedtest_1  | LHError: INVALID_URL
speedtest_1  |     at Function.run (/usr/local/lib/node_modules/lighthouse/lighthouse-core/runner.js:78:17)
speedtest_1  |     at lighthouse (/usr/local/lib/node_modules/lighthouse/lighthouse-core/index.js:48:17)
speedtest_1  |     at runLighthouse (/usr/local/lib/node_modules/lighthouse/lighthouse-cli/run.js:193:32)
speedtest_1  |     at process._tickCallback (internal/process/next_tick.js:68:7)

http://web/component/FullVerticalLayout is a perfectly healthy and working url as in docker-compose the service with name web is mapped as a local resolved domain.

For instance if i exec in one of the containers i can easily curl the web service/container

I have no name!@022c7770bd41:/var/www/html$ curl -fv http://web/component/FullVerticalLayout?render=1 | head
* Expire in 0 ms for 6 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 1 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 2 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 2 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 2 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
* Expire in 0 ms for 1 (transfer 0x55bde8e01dc0)
*   Trying 172.26.0.6...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55bde8e01dc0)
* Connected to web (172.26.0.6) port 80 (#0)
> GET /component/FullVerticalLayout?render=1 HTTP/1.1
> Host: web
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.17.9
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/7.3.15
< Cache-Control: no-cache, private
< Date: Tue, 31 Mar 2020 17:30:09 GMT
< 
{ [2549 bytes data]
100  2542    0  2542    0     0  25676      0 --:--:-- --:--:-- --:--:-- 25676
* Connection #0 to host web left intact
<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
...

Is it possible to run lighthouse ci in CI style and so with a perfectly working url like the one above?