The configuration properties are applied in the following order (from higher to lower precedence):
- arguments passed to the executable in kebab case (e.g.
--url-query
); - environment variables in uppercase snake format (e.g.
URL_QUERY
); config.json
configuration file;- default values.
The page url to load.
Type: string
Default: ""
The query string to append to the page url; the following template variables are replaced: $p
the process pid, $s
the session index, $S
the total sessions, $t
the tab index, $T
the total tabs per session, $i
the tab absolute index.
Type: string
Default: ""
This argument specifies the file path for the custom page URL handler that will be exported by default. The custom page URL handler allows you to define custom URLs that can be used to open your application, and provides the following variables for customization: $p
: the process pid, $s
: the session index, $S
: the total sessions, $t
: the tab index, $T
: the total tabs per session, $i
: the tab absolute index.
You can use these variables to create custom URL schemes that suit your application's needs.
Type: string
Default: ""
The fake video path; if set, the video will be used as fake media source. It accepts a single path or a comma-separated list of videos paths that will be used in round-robin by the started sessions. The docker pre-built image contains a 2 minutes video sequence stored at /app/video.mp4
. It accepts a local file, an http endpoint or a string starting with
generate:
(example: generate:null
will generate a black video with silent audio). The temporary files containing the raw video and audio will be stored at ${VIDEO_CACHE_PATH}/video.${VIDEO_FORMAT}
and ${VIDEO_CACHE_PATH}/audio.wav
.
Type: string
Default: "https://github.com/vpalmisano/webrtcperf/releases/download/v2.0.4/video.mp4"
The fake video resize width.
Type: positive int
Default: 1280
The fake video resize height.
Type: positive int
Default: 720
The fake video framerate.
Type: positive int
Default: 25
The fake audio/video seek position in seconds.
Type: positive int
Default: 0
The fake audio/video duration in seconds.
Type: positive int
Default: 120
If the temporary video and audio raw files can be reused across multiple runs.
Type: boolean
Default: true
The path where the video and audio raw files are stored.
Type: string
Default: "/home/vittoriopalmisano/.webrtcperf/cache"
The fake video file format presented to the browser.
Type: [ "y4m", "mjpeg" ]
Default: "y4m"
If greater than 0, the test will stop after the provided number of seconds.
Type: positive int
Default: 0
A JSON5 string with a valid throtter configuration (https://github.com/vpalmisano/throttler).
Type: string
Default: ""
If not zero, it specifies the maximum period in seconds after which a new random active tab is selected, enabling the getUserMedia audio tracks in that tab and disabling all of the other tabs.
Type: positive int
Default: 0
When using random audio period, it defines the probability % that the selected audio will be activated (value: 0-100).
Type: positive int
Default: 100
When using random audio period, it defines the number of pages to be included into the random selection.
Type: positive int
Default: 0
The Chromium executable path.
Type: string
Default: ""
The Chromium version. It will be downloaded if the chromium path is not provided.
Type: string
Default: "129.0.6668.58"
The remote Chromium URL (http://HOST:PORT
).
If provided, the remote instance will be used instead of running a local
chromium process.
Type: string
Default: ""
Chromium additional field trials.
Type: string
Default: ""
The browser window width.
Type: positive int
Default: 1920
The browser window height.
Type: positive int
Default: 1080
The browser device scale factor.
Type: positive int
Default: 1
Specifies the maximum number of concurrent WebRTC video decoder instances that can be created on the same host.
If set it will disable the received video resolution and jitter buffer stats. This option is supported only when using the custom chromium build. The total decoders count is stored into the virtual file /dev/shm/chromium-video-decoders
Type: number
Default: -1
Applies the maxVideoDecoders option starting from this session ID
.
Type: number
Default: -1
Runs the browser in incognito mode.
Type: boolean
Default: false
If unset, the browser will run in headless mode.
When running on MacOS or Windows, set it to any not-empty string.
On Linux, set it to a valid X server DISPLAY
string (e.g. :0
).
Type: string
Default: ""
The number of browser sessions to start.
Type: positive int
Default: 1
The number of tabs to open in each browser session.
Type: positive int
Default: 1
The starting ID assigned to sessions.
Type: positive int
Default: 0
The start timestamp (in milliseconds). If 0, the value will be calculated using Date.now()
Type: positive int
Default: 0
If true
, each individual participant stats values will be reported.
Type: boolean
Default: false
The pages spawn rate (pages/s).
Type: float
Default: 1
If true
, the pages console logs will be shown on console.
Type: boolean
Default: true
If set, only the logs with the matching text will be printed on console. Regexp string allowed.
Type: string
Default: ""
If set, page console logs will be saved on the selected file path.
Type: string
Default: ""
The user agent override.
Type: string
Default: ""
One or more JavaScript file paths (comma-separated). If set, the files contents will be executed inside each opened tab page; the following global variables will be attached to the window
object: WEBRTC_PERF_SESSION
the session number (0-indexed); WEBRTC_PERF_TAB
the tab number inside the same session (0-indexed); WEBRTC_PERF_INDEX
the page absolute index (0-indexed).
Type: string
Default: ""
Additional parameters (in JSON format) that will be exposed into
the page context as window.PARAMS
.
Type: string
Default: ""
A JSON string with the getUserMedia
constraints to override for each tab in each session; e.g. {"video": {"width": 360, "height": 640}}
Type: string
Default: ""
A JSON string with the getDisplayMedia
constraints to override for each tab in each session; e.g. {"video": {"width": 360, "height": 640}}
Type: string
Default: ""
A string with the video codecs to disable (comma-separated); e.g. vp9,av1
Type: string
Default: ""
The fake display type to use for getDisplayMedia
. It could be monitor
, window
or browser
,
Type: string
Default: "monitor"
An HTML selector used for cropping the getDisplayMedia
video track.
Type: string
Default: ""
A JSON string with the localStorage
object to be set on page load.
Type: string
Default: ""
If true, all the page cookies are cleared.
Type: boolean
Default: false
It enables the GPU acceleration (experimental). Set to "desktop" to use the host X server instance.
Type: string
Default: ""
It enables the Chromium browser logging for the specified session indexes.
Type: index
Default: ""
A comma-separated list of request URLs that will be automatically blocked.
Type: string
Default: ""
A dictionary of headers keyed by the url in JSON5 format (e.g. { "https://url.com/*": { "header-name": "value" } }
).
Type: string
Default: ""
A dictionary of content replacements keyed by the url in JSON5 format. Examples:
- replace strings using a regular expression:
{ "https://url.com/*": [{ search: "searchString": replace: "anotherString" }] }
- completely replace the content:
{ "https://url.com/file.js": [{ file: "path/to/newFile.js" }] }
Type: string
Default: ""
A string with a CSS styles to inject into each page. Rules containing "important" will be replaced with "!important".
Type: string
Default: ""
A string with the cookies to set into each page in JSON format.
Type: string
Default: ""
A comma-separated list of permissions to grant to the opened url.
Type: string
Default: ""
The chrome debugging port. If this value != 0, the chrome instance will listen on the provided port + the start-session-id value.
Type: positive int
Default: 0
The chrome debugging listening address. If unset, the network default interface address will be used.
Type: string
Default: "127.0.0.1"
If the statistics should be displayed on the console output.
Type: boolean
Default: true
The log file path; if set, the stats will be written in a .csv file inside that file.
Type: string
Default: ""
The log file path; if set, the detailed stats will be written in a .csv file inside that file.
Type: string
Default: ""
The stats collect interval in seconds. It should be lower than the Prometheus scraping interval.
Type: positive int
Default: 15
The timeout in seconds after which the RTC stats coming from inactive hosts are removed. It should be higher than the statsInterval
value.
Type: positive int
Default: 60
A dictionary of custom metrics keys in JSON5 format (e.g. '{ statName1: { labels: ["label1"] } }').
Type: string
Default: ""
If set, logs are sent to the specified Prometheus Pushgateway service (example: "http://127.0.0.1:9091").
Type: string
Default: ""
The Prometheus Pushgateway job name.
Type: string
Default: "default"
The Prometheus Pushgateway basic auth (username:password).
Type: string
Default: ""
Allows to use gzip encoded pushgateway requests.
Type: boolean
Default: true
Alert rules definition (in JSON format).
Type: string
Default: ""
The alert rules report output filename.
Type: string
Default: ""
The alert rules report fails percentile (0-100). With the default value the alert will be successful only when at least 95% of the checks pass.
Type: positive int
Default: 95
The URL to push the collected stats.
Type: string
Default: ""
The ID of the collected stats to push.
Type: string
Default: "default"
The HTTP server listening port.
Type: positive int
Default: 0
The HTTP server basic auth secret. The auth user name is set to admin
by default.
Type: string
Default: "secret"
If true, the server will use the HTTPS protocol.
Type: boolean
Default: false
An optional path that the HTTP server will expose with the /data endpoint.
Type: string
Default: ""
When set, it runs the VMAF calculator for the video files saved under the provided directory path.
Type: string
Default: ""
If true, for each VMAF comparison it creates a side-by-side video with the reference and degraded versions.
Type: boolean
Default: false
If true, the VMAF intermediate files will not be deleted.
Type: boolean
Default: false
If true, the VMAF source files will not be deleted.
Type: boolean
Default: true
When set, it runs the visqol calculator for the audio files saved under the provided directory path.
Type: string
Default: ""
If true, the visqol source files will not be deleted.
Type: boolean
Default: true