1# This Source Code Form is subject to the terms of the Mozilla Public
2# License, v. 2.0. If a copy of the MPL was not distributed with this
3# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4---
5job-defaults:
6    worker-type: t-win10-64-1803-hw
7    fetches:
8        build:
9            - artifact: target.perftests.tests.tar.gz
10            - artifact: target.zip
11        toolchain:
12            - win64-node-12
13            - win64-geckodriver
14    platform: windows10-64-shippable/opt
15    require-build:
16        windows10-64-shippable/opt: build-win64-shippable/opt
17    scopes:
18        - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
19
20try-browsertime:
21    description: Run ./mach perftest on windows
22    treeherder:
23        symbol: perftest(win-bt)
24    run:
25        command: >-
26            mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
27            cd $MOZ_FETCHES_DIR &&
28            python3.exe python/mozperftest/mozperftest/runner.py
29            --on-try
30            --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
31            --flavor desktop-browser
32            --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
33            --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
34            --output $MOZ_FETCHES_DIR/../artifacts
35
36domcount:
37    description: Run DOM test
38    treeherder:
39        symbol: perftest(win-dom)
40    attributes:
41        batch: false
42        cron: true
43    run:
44        command: >-
45            mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
46            cd $MOZ_FETCHES_DIR &&
47            python3.exe python/mozperftest/mozperftest/runner.py
48            browser/base/content/test/perftest_browser_xhtml_dom.js
49            --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
50            --flavor desktop-browser
51            --perfherder
52            --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count
53            --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
54            --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
55            --output $MOZ_FETCHES_DIR/../artifacts
56
57
58livesites:
59    description: Live site performance testing
60    variants: [http3]
61    treeherder:
62        symbol: perftest({symbol})
63    attributes:
64        batch: false
65        cron: true
66    perftest:
67        - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js]
68        # broken: bug 1678588
69        # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js]
70        - [g-image, netwerk/test/perf/perftest_http3_google_image.js]
71        - [g-search, netwerk/test/perf/perftest_http3_google_search.js]
72        - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js]
73        # broken: bug 1695871
74        # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js]
75        # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js]
76    perftest-metrics:
77        by-perftest:
78            cloudflare:
79                # Example of how the specify settings for each metric
80                resources:
81                    extraOptions: []
82                firstPaint: {}
83                navigationTiming: {}
84                pageTimings: {}
85                timeToContentfulPaint: {}
86            # broken: bug 1678588
87            # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond]
88            g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime]
89            g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
90            lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed]
91            # broken: bug 1695871
92            # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
93            # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
94            default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
95    # Leave this here so people know this exists when looking
96    # for examples
97    perftest-perfherder-global:
98        extraOptions: []
99    perftest-extra-options:
100        by-perftest:
101            cloudflare:
102                - --perfherder-split-by browserScripts.pageinfo.url
103            g-search:
104                - --perfherder-split-by browserScripts.pageinfo.url
105            lq-fetch:
106                - --perfherder-split-by browserScripts.pageinfo.url
107            default: []
108    perftest-btime-variants:
109        by-perftest:
110            cloudflare:
111                - ["10s", browsertime.waitTime=10000]
112                - ["25s", browsertime.waitTime=25000]
113                - ["35s", browsertime.waitTime=35000]
114                - ["60s", browsertime.waitTime=60000]
115            # broken: bug 1678588
116            # fb-scroll:
117            #     - ["10s", browsertime.waitTime=10000]
118            #     - ["25s", browsertime.waitTime=25000]
119            #     - ["35s", browsertime.waitTime=35000]
120            #     - ["60s", browsertime.waitTime=60000]
121            g-search:
122                - ["10s", browsertime.waitTime=10000]
123                - ["25s", browsertime.waitTime=25000]
124                - ["35s", browsertime.waitTime=35000]
125                - ["60s", browsertime.waitTime=60000]
126            lq-fetch:
127                - [null, "browsertime.waitTime=1000,browsertime.cycles=5"]
128            # broken: bug 1695871
129            # ytw:
130            #     - [null, browsertime.waitTime=20000]
131            # ytw-scroll:
132            #     - [null, browsertime.waitTime=20000]
133            default:
134                - [null, browsertime.waitTime=1000]
135    run:
136        command: >-
137            mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
138            cd $MOZ_FETCHES_DIR &&
139            python3.exe python/mozperftest/mozperftest/runner.py
140            {perftest_testname}
141            --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
142            --browsertime-iterations 10
143            --flavor desktop-browser
144            --perfherder
145            --perfherder-metrics {perftest_metrics}
146            --perfherder-simplify-names
147            --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
148            --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
149            --output $MOZ_FETCHES_DIR/../artifacts
150
151controlled:
152    description: Controlled performance testing
153    treeherder:
154        symbol: perftest(controlled)
155    worker:
156        max-run-time: 14400
157    attributes:
158        batch: false
159        cron: false
160    run:
161        command: >-
162            mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
163            cd $MOZ_FETCHES_DIR &&
164            python3.exe python/mozperftest/mozperftest/runner.py
165            netwerk/test/perf/perftest_http3_controlled.js
166            --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
167            --browsertime-iterations 1
168            --browsertime-cycles 96
169            --hooks netwerk/test/perf/hooks_throttling.py
170            --flavor desktop-browser
171            --perfherder
172            --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms
173            --perfherder-simplify-names
174            --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
175            --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
176            --output $MOZ_FETCHES_DIR/../artifacts
177
178perfstats:
179    description: Run PerfStats pageload test
180    treeherder:
181        symbol: perftest(win-perfstats)
182    attributes:
183        batch: false
184        cron: false
185    run:
186        command: >-
187            mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
188            cd $MOZ_FETCHES_DIR &&
189            python3.exe python/mozperftest/mozperftest/runner.py
190            --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
191            --flavor desktop-browser
192            --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
193            --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
194            --output $MOZ_FETCHES_DIR/../artifacts
195            --perfherder
196            --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
197            --browsertime-iterations 10
198            --hooks testing/performance/hooks_perfstats.py
199            testing/performance/perftest_perfstats.js
200