sitespeedio / sitespeedio/browsertime

Browsertime can't connect to Webdriver if the first ip bound to loopback interface is not 127.0.0.1

Open
#1,820 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
JavaScript
Stars
652
Forks
141
Avg merge
3h 56m
Merged PRs (30d)
5

Description

Have you read the documentation?
URL

https://ya.ru

What are you trying to accomplish

I'm trying to run sitespeed docker container in Yandex.Cloud Serverless Containers (analog for AWS Lambda Container Images as I see it). Serverless container runs with two address on loopback interfaces. First is for metadata server 169.254.169.254/32 and second common loopback address 127.0.0.1/8 (the order matters). In such conditions broswertime can't connect to webdriver server because it chooses wrong ip addr (first one from addresses bound to loopback interface).

I would love to have at least an option to specify which address to use.

I've found workaround by hardcoding ip address and rebuilding browsertime. I used setHostname method from Selenium Service Builder. Patch below.

--- lib/chrome/webdriver/builder.js.old 2022-07-23 12:19:53.144422149 +0300
+++ lib/chrome/webdriver/builder.js.new 2022-07-23 12:19:09.031838969 +0300
@@ -28,6 +28,7 @@
 
     // Remove the check that matches the Chromedriver version with Chrome version.
     serviceBuilder.addArguments('--disable-build-check');
+    serviceBuilder.setHostname('127.0.0.1');
 
     if (options.chrome && options.chrome.chromedriverPort) {
       serviceBuilder.setPort(options.chrome.chromedriverPort);
What browser did you use?

Chrome, Firefox, Edge

How to reproduce
$ docker run --rm -ti --cap-add NET_ADMIN --entrypoint "/bin/bash" sitespeedio/sitespeed.io:25.5.1

root@16f8ff08e5bd:/sitespeed.io# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
1081: eth0@if1082: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

root@16f8ff08e5bd:/sitespeed.io# ip addr del 127.0.0.1/8 dev lo scope host
root@16f8ff08e5bd:/sitespeed.io# ip addr add 169.254.169.254/32 dev lo scope host
root@16f8ff08e5bd:/sitespeed.io# ip addr add 127.0.0.1/8 dev lo scope host

root@16f8ff08e5bd:/sitespeed.io# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 169.254.169.254/32 scope host lo
       valid_lft forever preferred_lft forever
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
1081: eth0@if1082: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

root@16f8ff08e5bd:/sitespeed.io# /start.sh -b chrome -n 1 https://ya.ru
Relevant log output
Google Chrome 103.0.5060.114 
Mozilla Firefox 102.0
Microsoft Edge 103.0.1264.51 
groupadd: group 'sitespeedio' already exists
useradd: user 'sitespeedio' already exists
[2022-07-23 08:31:57] INFO: [sitespeedio] Versions OS: linux 5.4.0-99-generic nodejs: v16.16.0 sitespeed.io: 25.5.0 browsertime: 16.11.3 coach: 7.1.2
[2022-07-23 08:31:57] DEBUG: [sitespeedio] Running with options: {
  "_": [
    "https://ya.ru"
  ],
  "b": "chrome",
  "browsertime": {
    "browser": "chrome",
    "iterations": 1,
    "debug": true,
    "docker": "true",
    "xvfb": true,
    "xvfbParams": {
      "display": 99
    },
    "xvfb-params": {
      "display": 99
    },
    "spa": false,
    "gnirehtet": false,
    "connectivity": {
      "profile": "native",
      "engine": "external"
    },
    "timeouts": {
      "pageCompleteCheck": 2147483647,
      "page-complete-check": 120000,
      "pageload": 2147483647,
      "script": 2147483647
    },
    "pageCompleteWaitTime": 5000,
    "page-complete-wait-time": 5000,
    "pageCompleteCheckInactivity": false,
    "page-complete-check-inactivity": false,
    "pageCompleteCheckPollTimeout": 1500,
    "page-complete-check-poll-timeout": 1500,
    "pageCompleteCheckStartWait": 500,
    "page-complete-check-start-wait": 500,
    "pageLoadStrategy": "none",
    "page-load-strategy": "none",
    "viewPort": "1366x708",
    "view-port": "1366x708",
    "scriptInput": {
      "longTask": 50
    },
    "script-input": {
      "long-task": 50
    },
    "videoParams": {
      "framerate": 30,
      "crf": 23,
      "addTimer": true,
      "convert": true,
      "keepOriginalVideo": false,
      "filmstripFullSize": false,
      "filmstripQuality": 75,
      "createFilmstrip": true,
      "thumbsize": 400
    },
    "video-params": {
      "framerate": 30,
      "crf": 23,
      "add-timer": true,
      "convert": true,
      "keep-original-video": false,
      "filmstrip-full-size": false,
      "filmstrip-quality": 75,
      "create-filmstrip": true,
      "thumbsize": 400
    },
    "tcpdump": false,
    "firefox": {
      "includeResponseBodies": "none",
      "include-response-bodies": "none",
      "memoryReport": false,
      "memory-report": false,
      "memoryReportParams": {
        "minizeFirst": false
      },
      "memory-report-params": {
        "minize-first": false
      },
      "geckoProfiler": false,
      "gecko-profiler": false,
      "geckoProfilerParams": {
        "features": "js,stackwalk,leaf",
        "threads": "GeckoMain,Compositor,Renderer",
        "bufferSize": 1000000
      },
      "gecko-profiler-params": {
        "features": "js,stackwalk,leaf",
        "threads": "GeckoMain,Compositor,Renderer",
        "buffer-size": 1000000
      },
      "windowRecorder": false,
      "window-recorder": false,
      "disableSafeBrowsing": true,
      "disable-safe-browsing": true,
      "disableTrackingProtection": true,
      "disable-tracking-protection": true
    },
    "chrome": {
      "timeline": true,
      "cdp": {
        "performance": true
      },
      "ignoreCertificateErrors": true,
      "ignore-certificate-errors": true,
      "includeResponseBodies": "none",
      "include-response-bodies": "none"
    },
    "android": false,
    "androidRooted": false,
    "android-rooted": false,
    "androidBatteryTemperatureWaitTimeInSeconds": 120,
    "android-battery-temperature-wait-time-in-seconds": 120,
    "androidVerifyNetwork": false,
    "android-verify-network": false,
    "safari": {
      "ios": false,
      "useTechnologyPreview": false,
      "use-technology-preview": false,
      "useSimulator": false,
      "use-simulator": false
    },
    "headless": false,
    "iqr": false,
    "preWarmServer": false,
    "pre-warm-server": false,
    "preWarmServerWaitTime": 5000,
    "pre-warm-server-wait-time": 5000,
    "screenshot": true,
    "screenshotParams": {
      "type": "png",
      "png": {
        "compressionLevel": 6
      },
      "jpg": {
        "quality": 80
      },
      "maxSize": 2000
    },
    "screenshot-params": {
      "type": "png",
      "png": {
        "compression-level": 6
      },
      "jpg": {
        "quality": 80
      },
      "max-size": 2000
    },
    "video": true,
    "visualMetrics": true
  },
  "browser": "chrome",
  "n": 1,
  "v": 3,
  "verbose": 3,
  "debug": true,
  "xvfb": true,
  "debugMessages": false,
  "debug-messages": false,
  "xvfbParams": {
    "display": 99
  },
  "xvfb-params": {
    "display": 99
  },
  "spa": false,
  "gnirehtet": false,
  "c": "native",
  "connectivity": {
    "engine": "external"
  },
  "maxLoadTime": 120000,
  "max-load-time": 120000,
  "pageCompleteWaitTime": 5000,
  "page-complete-wait-time": 5000,
  "pageCompleteCheckInactivity": false,
  "page-complete-check-inactivity": false,
  "pageCompleteCheckPollTimeout": 1500,
  "page-complete-check-poll-timeout": 1500,
  "pageCompleteCheckStartWait": 500,
  "page-complete-check-start-wait": 500,
  "pageLoadStrategy": "none",
  "page-load-strategy": "none",
  "viewPort": "1366x708",
  "view-port": "1366x708",
  "minLongTaskLength": 50,
  "min-long-task-length": 50,
  "videoParams": {
    "framerate": 30,
    "crf": 23,
    "addTimer": true,
    "convert": true,
    "keepOriginalVideo": false,
    "filmstripFullSize": false,
    "filmstripQuality": 75,
    "createFilmstrip": true,
    "thumbsize": 400
  },
  "fps": 30,
  "video-params": {
    "framerate": 30,
    "crf": 23,
    "add-timer": true,
    "convert": true,
    "keep-original-video": false,
    "filmstrip-full-size": false,
    "filmstrip-quality": 75,
    "create-filmstrip": true,
    "thumbsize": 400
  },
  "filmstrip": {
    "showAll": false,
    "show-all": false
  },
  "tcpdump": false,
  "firefox": {
    "includeResponseBodies": "none",
    "include-response-bodies": "none",
    "memoryReport": false,
    "memory-report": false,
    "memoryReportParams": {
      "minizeFirst": false
    },
    "memory-report-params": {
      "minize-first": false
    },
    "geckoProfiler": false,
    "gecko-profiler": false,
    "geckoProfilerParams": {
      "features": "js,stackwalk,leaf",
      "threads": "GeckoMain,Compositor,Renderer",
      "bufferSize": 1000000
    },
    "gecko-profiler-params": {
      "features": "js,stackwalk,leaf",
      "threads": "GeckoMain,Compositor,Renderer",
      "buffer-size": 1000000
    },
    "windowRecorder": false,
    "window-recorder": false,
    "disableSafeBrowsing": true,
    "disable-safe-browsing": true,
    "disableTrackingProtection": true,
    "disable-tracking-protection": true
  },
  "chrome": {
    "timeline": true,
    "cdp": {
      "performance": true
    },
    "ignoreCertificateErrors": true,
    "ignore-certificate-errors": true,
    "includeResponseBodies": "none",
    "include-response-bodies": "none"
  },
  "android": false,
  "androidRooted": false,
  "android-rooted": false,
  "androidBatteryTemperatureWaitTimeInSeconds": 120,
  "android-battery-temperature-wait-time-in-seconds": 120,
  "androidVerifyNetwork": false,
  "android-verify-network": false,
  "safari": {
    "ios": false,
    "useTechnologyPreview": false,
    "use-technology-preview": false,
    "useSimulator": false,
    "use-simulator": false
  },
  "headless": false,
  "preWarmServer": false,
  "pre-warm-server": false,
  "crawler": {
    "ignoreRobotsTxt": false,
    "ignore-robots-txt": false
  },
  "scp": {
    "port": 22,
    "removeLocalResult": true,
    "remove-local-result": true
  },
  "grafana": {
    "port": 80,
    "annotationScreenshot": false,
    "annotation-screenshot": false
  },
  "graphite": {
    "port": 2003,
    "httpPort": 8080,
    "http-port": 8080,
    "namespace": "sitespeed_io.default",
    "includeQueryParams": false,
    "include-query-params": false,
    "arrayTags": true,
    "array-tags": true,
    "annotationScreenshot": false,
    "annotation-screenshot": false,
    "sendAnnotation": true,
    "send-annotation": true,
    "statsd": false,
    "addSlugToKey": true,
    "add-slug-to-key": true,
    "bulkSize": null,
    "bulk-size": null,
    "skipSummary": false,
    "skip-summary": false,
    "perIteration": false,
    "per-iteration": false
  },
  "screenshot": {
    "type": "png",
    "png": {
      "compressionLevel": 6,
      "compression-level": 6
    },
    "jpg": {
      "quality": 80
    },
    "maxSize": 2000,
    "max-size": 2000
  },
  "influxdb": {
    "protocol": "http",
    "port": 8086,
    "database": "sitespeed",
    "tags": "category=default",
    "includeQueryParams": false,
    "include-query-params": false,
    "groupSeparator": "_",
    "group-separator": "_",
    "annotationScreenshot": false,
    "annotation-screenshot": false
  },
  "metrics": {
    "list": false,
    "filterList": false,
    "filter-list": false
  },
  "slack": {
    "userName": "Sitespeed.io",
    "user-name": "Sitespeed.io",
    "type": "all",
    "limitWarning": 90,
    "limit-warning": 90,
    "limitError": 80,
    "limit-error": 80,
    "limitMetric": "coachScore",
    "limit-metric": "coachScore"
  },
  "s3": {
    "removeLocalResult": false,
    "remove-local-result": false
  },
  "gcs": {
    "public": false,
    "gzip": false,
    "removeLocalResult": false,
    "remove-local-result": false
  },
  "html": {
    "showAllWaterfallSummary": false,
    "show-all-waterfall-summary": false,
    "fetchHARFiles": false,
    "fetch-h-a-r-files": false,
    "logDownloadLink": false,
    "log-download-link": false,
    "topListSize": 10,
    "top-list-size": 10,
    "showScript": false,
    "show-script": false,
    "pageSummaryMetrics": [
      "transferSize.total",
      "requests.total",
      "thirdParty.requests",
      "transferSize.javascript",
      "transferSize.css",
      "transferSize.image",
      "score.performance"
    ],
    "page-summary-metrics": [
      "transferSize.total",
      "requests.total",
      "thirdParty.requests",
      "transferSize.javascript",
      "transferSize.css",
      "transferSize.image",
      "score.performance"
    ],
    "summaryBoxes": [
      "score.score",
      "score.accessibility",
      "score.bestpractice",
      "score.privacy",
      "score.performance",
      "timings.firstPaint",
      "timings.firstContentfulPaint",
      "timings.fullyLoaded",
      "timings.pageLoadTime",
      "timings.largestContentfulPaint",
      "timings.FirstVisualChange",
      "timings.LastVisualChange",
      "timings.SpeedIndex",
      "timings.PerceptualSpeedIndex",
      "timings.VisualReadiness",
      "timings.VisualComplete",
      "timings.backEndTime",
      "googleWebVitals.cumulativeLayoutShift",
      "requests.total",
      "requests.javascript",
      "requests.css",
      "requests.image",
      "transferSize.total",
      "transferSize.html",
      "transferSize.javascript",
      "contentSize.javascript",
      "transferSize.css",
      "transferSize.image",
      "thirdParty.transferSize",
      "thirdParty.requests",
      "webpagetest.SpeedIndex",
      "webpagetest.lastVisualChange",
      "webpagetest.render",
      "webpagetest.visualComplete",
      "webpagetest.visualComplete95",
      "webpagetest.TTFB",
      "webpagetest.fullyLoaded",
      "axe.critical",
      "axe.serious",
      "axe.minor",
      "axe.moderate",
      "cpu.longTasksTotalDuration",
      "cpu.longTasks",
      "cpu.totalBlockingTime",
      "cpu.maxPotentialFid",
      "sustainable.totalCO2",
      "sustainable.co2PerPageView",
      "sustainable.co2FirstParty",
      "sustainable.co2ThirdParty"
    ],
    "summary-boxes": [
      "score.score",
      "score.accessibility",
      "score.bestpractice",
      "score.privacy",
      "score.performance",
      "timings.firstPaint",
      "timings.firstContentfulPaint",
      "timings.fullyLoaded",
      "timings.pageLoadTime",
      "timings.largestContentfulPaint",
      "timings.FirstVisualChange",
      "timings.LastVisualChange",
      "timings.SpeedIndex",
      "timings.PerceptualSpeedIndex",
      "timings.VisualReadiness",
      "timings.VisualComplete",
      "timings.backEndTime",
      "googleWebVitals.cumulativeLayoutShift",
      "requests.total",
      "requests.javascript",
      "requests.css",
      "requests.image",
      "transferSize.total",
      "transferSize.html",
      "transferSize.javascript",
      "contentSize.javascript",
      "transferSize.css",
      "transferSize.image",
      "thirdParty.transferSize",
      "thirdParty.requests",
      "webpagetest.SpeedIndex",
      "webpagetest.lastVisualChange",
      "webpagetest.render",
      "webpagetest.visualComplete",
      "webpagetest.visualComplete95",
      "webpagetest.TTFB",
      "webpagetest.fullyLoaded",
      "axe.critical",
      "axe.serious",
      "axe.minor",
      "axe.moderate",
      "cpu.longTasksTotalDuration",
      "cpu.longTasks",
      "cpu.totalBlockingTime",
      "cpu.maxPotentialFid",
      "sustainable.totalCO2",
      "sustainable.co2PerPageView",
      "sustainable.co2FirstParty",
      "sustainable.co2ThirdParty"
    ]
  },
  "summary": false,
  "summary-detail": false,
  "summaryDetail": false,
  "sustainable": {
    "disableHosting": false,
    "disable-hosting": false,
    "useGreenWebHostingAPI": false,
    "use-green-web-hosting-a-p-i": false
  },
  "crux": {
    "enable": true,
    "formFactor": "ALL",
    "form-factor": "ALL",
    "collect": "ALL"
  },
  "matrix": {
    "messages": [
      "error",
      "budget"
    ]
  },
  "mobile": false,
  "gzipHAR": false,
  "gzip-h-a-r": false,
  "copyLatestFilesToBase": false,
  "copy-latest-files-to-base": false,
  "utc": false,
  "logToFile": false,
  "log-to-file": false,
  "useHash": false,
  "use-hash": false,
  "multi": false,
  "$0": "/usr/src/app/bin/sitespeed.js",
  "explicitOptions": {
    "_": [],
    "browsertime": {
      "browser": "chrome",
      "iterations": 1,
      "debug": "https://ya.ru"
    },
    "b": "chrome",
    "n": 1,
    "verbose": [
      true,
      true,
      true
    ],
    "v": [
      true,
      true,
      true
    ],
    "debug": "https://ya.ru",
    "$0": "/usr/src/app/bin/sitespeed.js"
  },
  "urls": [
    "https://ya.ru"
  ],
  "urlsMetaData": {},
  "slug": "ya_ru"
}
[2022-07-23 08:31:57] VERBOSE: [browsertime] cpuBenchmark is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] userAgent is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] windowSize is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] cumulativeLayoutShift is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] cumulativeLayoutShiftInfo is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] documentHeight is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] documentSize is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] documentTitle is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] documentWidth is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] domElements is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] generator is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] interactionToNextPaintInfo is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] largestContentfulPaintInfo is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] longTask is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] navigationStartTime is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] nextHopProtocol is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] resources is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] responsive is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] url is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] visualElements is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] elementTimings is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] firstInput is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] firstPaint is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] interactionToNextPaint is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] largestContentfulPaint is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] loadEventEnd is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] navigationTiming is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] pageTimings is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] paintTiming is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] serverTimings is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] timeToContentfulPaint is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] timeToDomContentFlushed is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] timeToFirstInteractive is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] ttfb is an old-style script object.
[2022-07-23 08:31:57] VERBOSE: [browsertime] userTimings is an old-style script object.
[2022-07-23 08:31:57] DEBUG: [browsertime] Running with options: {
  "scripts": [],
  "iterations": 1,
  "delay": 0,
  "videoParams": {
    "framerate": 30,
    "crf": 23,
    "addTimer": true,
    "convert": true,
    "keepOriginalVideo": false,
    "filmstripFullSize": false,
    "filmstripQuality": 75,
    "createFilmstrip": true,
    "thumbsize": 400
  },
  "statistics": true,
  "browser": "chrome",
  "connectivity": {
    "profile": "native",
    "engine": "external"
  },
  "screenshot": true,
  "screenshotLCP": true,
  "screenshotLS": true,
  "screenshotParams": {
    "type": "png",
    "png": {
      "compressionLevel": 6
    },
    "jpg": {
      "quality": 80
    },
    "maxSize": 2000
  },
  "viewPort": "1366x708",
  "xvfbParams": {
    "display": 99
  },
  "debug": true,
  "docker": "true",
  "xvfb": true,
  "xvfb-params": {
    "display": 99
  },
  "spa": false,
  "gnirehtet": false,
  "timeouts": {
    "pageCompleteCheck": 2147483647,
    "page-complete-check": 120000,
    "pageload": 2147483647,
    "script": 2147483647
  },
  "pageCompleteWaitTime": 5000,
  "page-complete-wait-time": 5000,
  "pageCompleteCheckInactivity": false,
  "page-complete-check-inactivity": false,
  "pageCompleteCheckPollTimeout": 1500,
  "page-complete-check-poll-timeout": 1500,
  "pageCompleteCheckStartWait": 500,
  "page-complete-check-start-wait": 500,
  "pageLoadStrategy": "none",
  "page-load-strategy": "none",
  "view-port": "1366x708",
  "scriptInput": {
    "longTask": 50
  },
  "script-input": {
    "long-task": 50
  },
  "video-params": {
    "framerate": 30,
    "crf": 23,
    "add-timer": true,
    "convert": true,
    "keep-original-video": false,
    "filmstrip-full-size": false,
    "filmstrip-quality": 75,
    "create-filmstrip": true,
    "thumbsize": 400
  },
  "tcpdump": false,
  "firefox": {
    "includeResponseBodies": "none",
    "include-response-bodies": "none",
    "memoryReport": false,
    "memory-report": false,
    "memoryReportParams": {
      "minizeFirst": false
    },
    "memory-report-params": {
      "minize-first": false
    },
    "geckoProfiler": false,
    "gecko-profiler": false,
    "geckoProfilerParams": {
      "features": "js,stackwalk,leaf",
      "threads": "GeckoMain,Compositor,Renderer",
      "bufferSize": 1000000
    },
    "gecko-profiler-params": {
      "features": "js,stackwalk,leaf",
      "threads": "GeckoMain,Compositor,Renderer",
      "buffer-size": 1000000
    },
    "windowRecorder": false,
    "window-recorder": false,
    "disableSafeBrowsing": true,
    "disable-safe-browsing": true,
    "disableTrackingProtection": true,
    "disable-tracking-protection": true
  },
  "chrome": {
    "timeline": true,
    "cdp": {
      "performance": true
    },
    "ignoreCertificateErrors": true,
    "ignore-certificate-errors": true,
    "includeResponseBodies": "none",
    "include-response-bodies": "none"
  },
  "android": false,
  "androidRooted": false,
  "android-rooted": false,
  "androidBatteryTemperatureWaitTimeInSeconds": 120,
  "android-battery-temperature-wait-time-in-seconds": 120,
  "androidVerifyNetwork": false,
  "android-verify-network": false,
  "safari": {
    "ios": false,
    "useTechnologyPreview": false,
    "use-technology-preview": false,
    "useSimulator": false,
    "use-simulator": false
  },
  "headless": false,
  "iqr": false,
  "preWarmServer": false,
  "pre-warm-server": false,
  "preWarmServerWaitTime": 5000,
  "pre-warm-server-wait-time": 5000,
  "screenshot-params": {
    "type": "png",
    "png": {
      "compression-level": 6
    },
    "jpg": {
      "quality": 80
    },
    "max-size": 2000
  },
  "video": true,
  "visualMetrics": true,
  "verbose": 3,
  "mobile": false,
  "screenshotType": "png",
  "coach": true,
  "resultDir": "/sitespeed.io/sitespeed-result/ya.ru/2022-07-23-08-31-57"
}
[2022-07-23 08:31:57] DEBUG: [browsertime] Preparing port 9222 for devtools on Chrome/Edge
[2022-07-23 08:31:57] INFO: [browsertime] Running tests using Chrome - 1 iteration(s)
[2022-07-23 08:31:57] DEBUG: [browsertime.chrome] Setting the following Selenium options: {"map_":{},"options_":{"prefs":{"profile.password_manager_enable":false,"profile.default_content_setting_values.notifications":2,"credentials_enable_service":false},"args":["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--window-position=0,0","--window-size=1366,708","--host-resolver-rules=\"MAP cache.pack.google.com 127.0.0.1\",\"MAP clients1.google.com 127.0.0.1\",\"MAP update.googleapis.com 127.0.0.1\",\"MAP redirector.gvt1.com 127.0.0.1\",\"MAP laptop-updates.brave.com 127.0.0.1\",\"MAP offlinepages-pa.googleapis.com 127.0.0.1\",\"MAP edge.microsoft.com 127.0.0.1\",\"MAP optimizationguide-pa.googleapis.com 127.0.0.1\"","--auto-open-devtools-for-tabs","--ignore-certificate-errors","--disable-background-networking","--no-default-browser-check","--no-first-run","--new-window","--allow-running-insecure-content","--disable-client-side-phishing-detection","--disable-component-update","--disable-default-apps","--disable-device-discovery-notifications","--disable-domain-reliability","--disable-background-timer-throttling","--load-media-router-component-extension=0","--mute-audio","--disable-hang-monitor","--password-store=basic","--disable-breakpad","--dont-require-litepage-redirect-infobar","--override-https-image-compression-infobar","--disable-fetching-hints-at-navigation-start","--disable-dev-shm-usage","--disable-back-forward-cache","--disable-site-isolation-trials","--remote-debugging-port=9222","--disable-features=ChromeWhatsNewUI"],"perfLoggingPrefs":{"enableNetwork":true,"enablePage":true},"excludeSwitches":["enable-automation"]}}
[2022-07-23 08:32:28] INFO: [browsertime] chrome failed to start, trying 2 more time(s): Timed out waiting for the WebDriver server at http://169.254.169.254:46873/
[2022-07-23 08:32:28] DEBUG: [browsertime.chrome] Setting the following Selenium options: {"map_":{},"options_":{"prefs":{"profile.password_manager_enable":false,"profile.default_content_setting_values.notifications":2,"credentials_enable_service":false},"args":["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--window-position=0,0","--window-size=1366,708","--host-resolver-rules=\"MAP cache.pack.google.com 127.0.0.1\",\"MAP clients1.google.com 127.0.0.1\",\"MAP update.googleapis.com 127.0.0.1\",\"MAP redirector.gvt1.com 127.0.0.1\",\"MAP laptop-updates.brave.com 127.0.0.1\",\"MAP offlinepages-pa.googleapis.com 127.0.0.1\",\"MAP edge.microsoft.com 127.0.0.1\",\"MAP optimizationguide-pa.googleapis.com 127.0.0.1\"","--auto-open-devtools-for-tabs","--ignore-certificate-errors","--disable-background-networking","--no-default-browser-check","--no-first-run","--new-window","--allow-running-insecure-content","--disable-client-side-phishing-detection","--disable-component-update","--disable-default-apps","--disable-device-discovery-notifications","--disable-domain-reliability","--disable-background-timer-throttling","--load-media-router-component-extension=0","--mute-audio","--disable-hang-monitor","--password-store=basic","--disable-breakpad","--dont-require-litepage-redirect-infobar","--override-https-image-compression-infobar","--disable-fetching-hints-at-navigation-start","--disable-dev-shm-usage","--disable-back-forward-cache","--disable-site-isolation-trials","--remote-debugging-port=9222","--disable-features=ChromeWhatsNewUI"],"perfLoggingPrefs":{"enableNetwork":true,"enablePage":true},"excludeSwitches":["enable-automation"]}}
[2022-07-23 08:32:28] INFO: [browsertime] chrome failed to start, trying 1 more time(s): Timed out waiting for the WebDriver server at http://169.254.169.254:46873/
[2022-07-23 08:32:28] DEBUG: [browsertime.chrome] Setting the following Selenium options: {"map_":{},"options_":{"prefs":{"profile.password_manager_enable":false,"profile.default_content_setting_values.notifications":2,"credentials_enable_service":false},"args":["--no-sandbox","--disable-setuid-sandbox","--disable-gpu","--window-position=0,0","--window-size=1366,708","--host-resolver-rules=\"MAP cache.pack.google.com 127.0.0.1\",\"MAP clients1.google.com 127.0.0.1\",\"MAP update.googleapis.com 127.0.0.1\",\"MAP redirector.gvt1.com 127.0.0.1\",\"MAP laptop-updates.brave.com 127.0.0.1\",\"MAP offlinepages-pa.googleapis.com 127.0.0.1\",\"MAP edge.microsoft.com 127.0.0.1\",\"MAP optimizationguide-pa.googleapis.com 127.0.0.1\"","--auto-open-devtools-for-tabs","--ignore-certificate-errors","--disable-background-networking","--no-default-browser-check","--no-first-run","--new-window","--allow-running-insecure-content","--disable-client-side-phishing-detection","--disable-component-update","--disable-default-apps","--disable-device-discovery-notifications","--disable-domain-reliability","--disable-background-timer-throttling","--load-media-router-component-extension=0","--mute-audio","--disable-hang-monitor","--password-store=basic","--disable-breakpad","--dont-require-litepage-redirect-infobar","--override-https-image-compression-infobar","--disable-fetching-hints-at-navigation-start","--disable-dev-shm-usage","--disable-back-forward-cache","--disable-site-isolation-trials","--remote-debugging-port=9222","--disable-features=ChromeWhatsNewUI"],"perfLoggingPrefs":{"enableNetwork":true,"enablePage":true},"excludeSwitches":["enable-automation"]}}
[2022-07-23 08:32:28] INFO: [browsertime] chrome failed to start, trying 0 more time(s): Timed out waiting for the WebDriver server at http://169.254.169.254:46873/
[2022-07-23 08:32:28] ERROR: [browsertime] BrowserError: Could not start chrome with 3 tries
    at SeleniumRunner.start (/usr/src/app/node_modules/browsertime/lib/core/seleniumRunner.js:91:13)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Iteration.run (/usr/src/app/node_modules/browsertime/lib/core/engine/iteration.js:114:7)
    at async Engine.runByScript (/usr/src/app/node_modules/browsertime/lib/core/engine/index.js:270:20)
    at async Object.analyzeUrl (/usr/src/app/lib/plugins/browsertime/analyzer.js:178:21)
    at async Object.processMessage (/usr/src/app/lib/plugins/browsertime/index.js:150:26)
[2022-07-23 08:32:28] DEBUG: [browsertime] Kill all processes ffmpeg
[2022-07-23 08:32:28] ERROR: [browsertime] No data to collect
[2022-07-23 08:32:28] ERROR: [plugin.browsertime] Caught error from Browsertime TypeError: Cannot read properties of undefined (reading 'alias')
    at Object.processMessage (/usr/src/app/lib/plugins/browsertime/index.js:167:52)
[2022-07-23 08:32:28] DEBUG: [plugin.browsertime] Generate summary metrics from Browsertime
[2022-07-23 08:32:28] DEBUG: [plugin.coach] Generate summary metrics from the Coach
[2022-07-23 08:32:28] DEBUG: [plugin.pagexray] Generate summary metrics from PageXray
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render HTML for 1 page(s) 
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page errors
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page pages
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page index
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page detailed
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page domains
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page assets
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page toplist
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page settings
[2022-07-23 08:32:28] DEBUG: [sitespeedio.plugin.html] Render summary page help
[2022-07-23 08:32:28] INFO: [sitespeedio.plugin.html] HTML stored in /sitespeed.io/sitespeed-result/ya.ru/2022-07-23-08-31-57

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in lib/chrome/webdriver/builder.js, where the issue's workaround calls Selenium Service Builder's setHostname method. Reproduce the failure with the supplied Docker commands and loopback addresses, then determine how the requested hostname option should be exposed across the affected browser builders. Done means Browsertime connects to Webdriver when 169.254.169.254 precedes 127.0.0.1.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, javascript
Domain
testing-qa, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.