sitespeedio / sitespeedio/sitespeed.io
preUrl and preWarmServer don't inherit headers
Open
Nobody has claimed this yet.
bug
- Dominant language
- JavaScript
- Stars
- 5k
- Forks
- 624
- Avg merge
- 4h 8m
- Merged PRs (30d)
- 2
Description
Have you read the documentation?
- Yes, I've read the how to make a reproducable bug guide
- Yes, I've read the how to debug my script guide
URL
https://httpbin.org/basic-auth/foo/bar
What are you trying to accomplish
While trying to test an url behind basic auth, I noticed that preWarmServer doesn't inherit set headers and there doesn't seem to be a way to manually specify headers for pre-warming requests.
What browser did you use?
Chrome, Firefox, Edge
How to reproduce
Without `--preWarmServer` the following test works: `docker run sitespeedio/sitespeed.io:34.9.0 --browsertime.requestheader "Authorization:Basic Zm9vOmJhcg==" https://httpbin.org/basic-auth/foo/bar`
Adding `--preWarmServer` to the same run results in a failed `pre-testing` step.
`docker run sitespeedio/sitespeed.io:34.9.0 --browsertime.requestheader "Authorization:Basic Zm9vOmJhcg==" --preWarmServer https://httpbin.org/basic-auth/foo/bar
Log output
Google Chrome 127.0.6533.72
Mozilla Firefox 128.0
Microsoft Edge 126.0.2592.113
[2024-08-21 10:51:41] INFO: [sitespeedio] Versions OS: linux 6.10.5-arch1-1 nodejs: v20.15.1 sitespeed.io: 34.9.0 browsertime: 22.8.0 coach: 8.0.2
[2024-08-21 10:51:41] DEBUG: [sitespeedio] Running with options: {
"_": [
"https://httpbin.org/basic-auth/foo/bar"
],
"browsertime": {
"requestheader": "Authorization:Basic Zm9vOmJhcg==",
"preWarmServer": true,
"pre-warm-server": true,
"docker": "true",
"xvfb": true,
"browser": "chrome",
"iterations": 3,
"xvfbParams": {
"display": 99
},
"xvfb-params": {
"display": 99
},
"spa": false,
"debug": false,
"limitedRunData": true,
"limited-run-data": true,
"android": {
"gnirehtet": false,
"rooted": false,
"batteryTemperatureWaitTimeInSeconds": 120,
"battery-temperature-wait-time-in-seconds": 120,
"verifyNetwork": false,
"verify-network": false
},
"gnirehtet": false,
"connectivity": {
"profile": "native",
"engine": "external"
},
"timeouts": {
"pageCompleteCheck": 120000,
"page-complete-check": 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,
"pageCompleteCheckNetworkIdle": false,
"page-complete-check-network-idle": false,
"pageLoadStrategy": "none",
"page-load-strategy": "none",
"viewPort": "1366x708",
"view-port": "1366x708",
"visualMetricsPortable": true,
"visual-metrics-portable": true,
"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
},
"cjs": 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
},
"powerConsumption": false,
"power-consumption": false,
"windowRecorder": false,
"window-recorder": false,
"disableSafeBrowsing": true,
"disable-safe-browsing": true,
"disableTrackingProtection": true,
"disable-tracking-protection": true
},
"chrome": {
"timeline": false,
"cdp": {
"performance": true
},
"ignoreCertificateErrors": true,
"ignore-certificate-errors": true,
"includeResponseBodies": "none",
"include-response-bodies": "none"
},
"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,
"preWarmServerWaitTime": 5000,
"pre-warm-server-wait-time": 5000,
"screenshotLCP": true,
"screenshot-l-c-p": true,
"screenshotLS": true,
"screenshot-l-s": true,
"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
},
"r": "Authorization:Basic Zm9vOmJhcg==",
"requestheader": "Authorization:Basic Zm9vOmJhcg==",
"preWarmServer": true,
"pre-warm-server": true,
"verbose": 1,
"v": 1,
"xvfb": true,
"debugMessages": false,
"debug-messages": false,
"b": "chrome",
"browser": "chrome",
"n": 3,
"xvfbParams": {
"display": 99
},
"xvfb-params": {
"display": 99
},
"spa": false,
"debug": 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,
"pageCompleteCheckNetworkIdle": false,
"page-complete-check-network-idle": false,
"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
},
"cjs": 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
},
"powerConsumption": false,
"power-consumption": false,
"windowRecorder": false,
"window-recorder": false,
"disableSafeBrowsing": true,
"disable-safe-browsing": true,
"disableTrackingProtection": true,
"disable-tracking-protection": true
},
"chrome": {
"timeline": false,
"cdp": {
"performance": true
},
"ignoreCertificateErrors": true,
"ignore-certificate-errors": true,
"includeResponseBodies": "none",
"include-response-bodies": "none"
},
"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,
"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,
"proxyPath": "",
"proxy-path": "",
"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,
"messages": [
"pageSummary",
"summary"
]
},
"influxdb": {
"protocol": "http",
"port": 8086,
"version": 1,
"database": "sitespeed",
"tags": "category=default",
"includeQueryParams": false,
"include-query-params": false,
"groupSeparator": "_",
"group-separator": "_",
"annotationScreenshot": false,
"annotation-screenshot": false
},
"screenshotLCP": true,
"screenshot-l-c-p": true,
"screenshotLS": true,
"screenshot-l-s": true,
"screenshot": {
"type": "png",
"png": {
"compressionLevel": 6,
"compression-level": 6
},
"jpg": {
"quality": 80
},
"maxSize": 2000,
"max-size": 2000
},
"metrics": {
"list": false,
"filterList": false,
"filter-list": false
},
"matrix": {
"messages": [
"error",
"budget"
]
},
"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
},
"crux": {
"enable": true,
"formFactor": "ALL",
"form-factor": "ALL",
"collect": "ALL"
},
"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",
"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",
"axe.critical",
"axe.serious",
"axe.minor",
"axe.moderate",
"cpu.longTasksTotalDuration",
"cpu.longTasks",
"cpu.totalBlockingTime",
"cpu.maxPotentialFid",
"sustainable.totalCO2",
"sustainable.co2PerPageView",
"sustainable.co2FirstParty",
"sustainable.co2ThirdParty"
],
"darkMode": false,
"dark-mode": false,
"homeurl": "https://www.sitespeed.io/"
},
"darkMode": false,
"dark-mode": false,
"summary": false,
"summary-detail": false,
"summaryDetail": false,
"sustainable": {
"model": "1byte",
"modelVersion": 3,
"model-version": 3,
"disableHosting": false,
"disable-hosting": false,
"useGreenWebHostingAPI": false,
"use-green-web-hosting-a-p-i": false
},
"api": {
"action": "addAndGetResult",
"silent": false
},
"compare": {
"saveBaseline": false,
"save-baseline": false,
"testType": "mannwhitneyu",
"test-type": "mannwhitneyu",
"alternative": "greater",
"wilcoxon": {
"correction": false,
"zeroMethod": "zsplit",
"zero-method": "zsplit"
},
"mannwhitneyu": {
"useContinuity": false,
"use-continuity": false,
"method": "auto"
}
},
"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,
"disableAPI": false,
"disable-a-p-i": false,
"android": false,
"$0": "/usr/src/app/bin/sitespeed.js",
"explicitOptions": {
"_": [],
"browsertime": {
"requestheader": "Authorization:Basic Zm9vOmJhcg==",
"preWarmServer": true
},
"preWarmServer": true,
"verbose": "https://httpbin.org/basic-auth/foo/bar",
"$0": "/usr/src/app/bin/sitespeed.js"
},
"urls": [
"https://httpbin.org/basic-auth/foo/bar"
],
"urlsMetaData": {}
}
[2024-08-21 10:51:41] DEBUG: [browsertime] Running with options: {
"scripts": [],
"iterations": 1,
"delay": 0,
"videoParams": {},
"browser": "chrome",
"xvfb": true,
"docker": "true",
"headless": false
}
[2024-08-21 10:51:41] DEBUG: [browsertime] Preparing port 9222 for devtools on Chrome/Edge
[2024-08-21 10:51:41] INFO: [plugin.browsertime] Start pre-testing/warming https://httpbin.org/basic-auth/foo/bar
[2024-08-21 10:51:41] INFO: [browsertime] Running tests using Chrome - 1 iteration(s)
[2024-08-21 10:51:41] 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","--disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,HeavyAdPrivacyMitigations,InterestFeedContentSuggestions,MediaRouter,OfflinePagesPrefetching,OptimizationHints,SidePanelPinning,Translate,msAutofillEdgeCoupons,msShoppingTrigger,msEdgeShoppingUI,msEntityExtraction,msEntityExtractionProactive,msWebAssist","--window-position=0,0","--window-size=1366,768","--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 content-autofill.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\"","--allow-running-insecure-content","--disable-background-networking","--disable-background-timer-throttling","--disable-backgrounding-occluded-windows","--disable-breakpad","--disable-client-side-phishing-detection","--disable-component-update","--disable-default-apps","--disable-dev-shm-usage","--disable-domain-reliability","--disable-fetching-hints-at-navigation-start","--disable-hang-monitor","--disable-ipc-flooding-protection","--disable-prompt-on-repost","--disable-renderer-backgrounding","--disable-search-engine-choice-screen","--disable-site-isolation-trials","--disable-sync","--metrics-recording-only","--mute-audio","--new-window","--no-default-browser-check","--no-first-run","--password-store=basic","--use-mock-keychain","--remote-debugging-port=9222","--disable-features=ChromeWhatsNewUI"],"perfLoggingPrefs":{"enableNetwork":true,"enablePage":true},"excludeSwitches":["enable-automation"]}}
[2024-08-21 10:51:42] INFO: [browsertime.command.measure] Testing url https://httpbin.org/basic-auth/foo/bar iteration 1
[2024-08-21 10:51:42] DEBUG: [browsertime] Using window.location to navigate
[2024-08-21 10:51:43] DEBUG: [browsertime.chrome.cdp] Could not load document:net::ERR_INVALID_AUTH_CREDENTIALS
[2024-08-21 10:51:44] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:49] INFO: [browsertime] URL failed to load, trying 5 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:50] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:50] INFO: [browsertime] URL failed to load, trying 4 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:51] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:51] INFO: [browsertime] URL failed to load, trying 3 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:52] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:52] INFO: [browsertime] URL failed to load, trying 2 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:53] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:53] INFO: [browsertime] URL failed to load, trying 1 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:54] DEBUG: [browsertime] Waiting for script pageCompleteCheck at most 60000 ms
[2024-08-21 10:51:54] INFO: [browsertime] URL failed to load, trying 0 more time(s): Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
[2024-08-21 10:51:54] ERROR: [browsertime] Could not load URL https://httpbin.org/basic-auth/foo/bar UrlLoadError: Could not load https://httpbin.org/basic-auth/foo/bar is the web page down?
at SeleniumRunner.loadAndWait (file:///usr/src/app/node_modules/browsertime/lib/core/seleniumRunner.js:314:19)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Measure.start (file:///usr/src/app/node_modules/browsertime/lib/core/engine/command/measure.js:340:9)
at async file:///usr/src/app/node_modules/browsertime/lib/core/engine/run.js:4:7
at async Iteration.run (file:///usr/src/app/node_modules/browsertime/lib/core/engine/iteration.js:162:9)
at async Engine.runByScript (file:///usr/src/app/node_modules/browsertime/lib/core/engine/index.js:308:20)
at async preWarmServer (file:///usr/src/app/lib/plugins/browsertime/analyzer.js:63:3)
at async analyzeUrl (file:///usr/src/app/lib/plugins/browsertime/analyzer.js:190:5)
at async BrowsertimePlugin.processMessage (file:///usr/src/app/lib/plugins/browsertime/index.js:173:26)
[2024-08-21 10:51:54] INFO: [browsertime.command.measure] Mark run as failure with message: Failed to load https://httpbin.org/basic-auth/foo/bar
[2024-08-21 10:51:54] ERROR: [browsertime] UrlLoadError: Failed to load https://httpbin.org/basic-auth/foo/bar
at SeleniumRunner.loadAndWait (file:///usr/src/app/node_modules/browsertime/lib/core/seleniumRunner.js:356:19)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Measure.start (file:///usr/src/app/node_modules/browsertime/lib/core/engine/command/measure.js:340:9)
at async file:///usr/src/app/node_modules/browsertime/lib/core/engine/run.js:4:7
at async Iteration.run (file:///usr/src/app/node_modules/browsertime/lib/core/engine/iteration.js:162:9)
at async Engine.runByScript (file:///usr/src/app/node_modules/browsertime/lib/core/engine/index.js:308:20)
at async preWarmServer (file:///usr/src/app/lib/plugins/browsertime/analyzer.js:63:3)
at async analyzeUrl (file:///usr/src/app/lib/plugins/browsertime/analyzer.js:190:5)
at async BrowsertimePlugin.processMessage (file:///usr/src/app/lib/plugins/browsertime/index.js:173:26)
[2024-08-21 10:51:54] INFO: [browsertime] https://httpbin.org/basic-auth/foo/bar
[2024-08-21 10:51:54] INFO: [plugin.browsertime] Pre-testing done, closed the browser.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the provided sitespeed.io Docker commands, comparing runs with and without --preWarmServer and --browsertime.requestheader. Trace the preWarmServer and requestheader option handling; done means pre-warming an authenticated URL succeeds using the configured headers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, javascript
- Domain
- cli, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100