For its telemetry benchmarks, WebRTC uses the test pages and sample pages from the WebRTC GitHub project.
These are downloaded by the update_webrtc_cases
script into the webrtc_cases
directory, and then referenced in webrtc_cases.py
, which controls the user interactions and duration of the test.
The webrtc.py
benchmark specifies which metrics should be collected for the test pages, and extra options that we pass to the test to fake the real camera and skip assign permission to get access to the video and audio from the user.
To run the tests in the browser you should simply open the page, either in GitHub or the webrtc_cases
directory.
To collect traces and compute metrics you can run the following command (assuming you are in chromium/src
):
./tools/perf/run_benchmark webrtc --browser-executable=out/Release/chrome
You can filter the pages you want to test using the --story-tag-filter
flag with the tags specified in webrtc_cases.py
.
For example, to run only the multiple-peerconnections test page, you can use the following command:
./tools/perf/run_benchmark webrtc --browser-executable=out/Release/chrome --story-tag-filter=stress
Or you can run the single story directly:
./tools/perf/run_benchmark webrtc --story multiple-peerconnections --browser-executable=out/Release/chrome
To add a new test page you should:
src
directory in the gh-pages branch.The test page should be named index.html
, and the logic for the test should be inside the js
folder in a file named main.js
. Don’t forget to reference it at the index page.
See the multiple-peerconnections test page for an example.
update_webrtc_cases_script
to reference the page you added, and run it.This will download the index.html
file and the main.js
file into the webrtc_cases
directory, and rename them with the name of the test.
For example, the multiple-peerconnections test page will be downloaded as multiple-peerconnections.html
and multiple-peerconnections.js
.
webrtc_cases.py
to load the page and control the user interactions.See the MultiplePeerConnections
class for example.
WebrtcPageSet
class.See here for example.