6 event_str: {$json: {$eval: event}}
9 - $if: tasks_for == "github-push"
14 event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}],
15 event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}],
16 event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}]
20 - [testharness, 1, 15]
21 - [testharness, 2, 15]
22 - [testharness, 3, 15]
23 - [testharness, 4, 15]
24 - [testharness, 5, 15]
25 - [testharness, 6, 15]
26 - [testharness, 7, 15]
27 - [testharness, 8, 15]
28 - [testharness, 9, 15]
29 - [testharness, 10, 15]
30 - [testharness, 11, 15]
31 - [testharness, 12, 15]
32 - [testharness, 13, 15]
33 - [testharness, 14, 15]
34 - [testharness, 15, 15]
47 taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'}
48 taskGroupId: {$eval: 'as_slugid("task group")'}
49 created: {$fromNow: ''}
50 deadline: {$fromNow: '24 hours'}
51 provisionerId: aws-provisioner-v1
53 $if: event.repository.full_name == 'web-platform-tests/wpt'
59 name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
61 A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]}
62 of ${chunk[2]}), run in the ${browser.channel} release of
64 owner: ${event.pusher.email}
65 source: ${event.repository.url}
67 image: harjgam/web-platform-tests:0.30
71 path: /home/test/artifacts
74 TASK_EVENT: "${event_str}"
80 echo "wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}";
82 ${event.repository.url}
85 cd ~/web-platform-tests;
89 --browser=${browser.name}
90 --channel=${browser.channel}
93 ./tools/ci/taskcluster-run.py
96 --channel=${browser.channel}
97 --log-wptreport=../artifacts/wpt_report.json
98 --log-wptscreenshot=../artifacts/wpt_screenshot.txt
99 --no-fail-on-unexpected
100 --test-type=${chunk[0]}
101 --this-chunk=${chunk[1]}
102 --total-chunks=${chunk[2]};
103 - $if: tasks_for == "github-pull-request"
104 # PR tasks that run the tests in various configurations
106 # Taskcluster responds to a number of events issued by the GitHub API
107 # which should not trigger re-validation.
108 $if: event.action in ['opened', 'reopened', 'synchronize']
110 $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}]
113 # This is the main place to define new stability checks
114 - name: wpt-${browser.name}-${browser.channel}-stability
118 Verify that all tests affected by a pull request are stable
119 when executed in ${browser.name}.
120 extra_args: '--verify'
121 - name: wpt-${browser.name}-${browser.channel}-results
125 Collect results for all tests affected by a pull request in
128 --no-fail-on-unexpected
129 --log-wptreport=../artifacts/wpt_report.json
130 --log-wptscreenshot=../artifacts/wpt_screenshot.txt
131 - name: wpt-${browser.name}-${browser.channel}-results-without-changes
132 checkout: FETCH_HEAD^
133 diff_range: FETCH_HEAD
135 Collect results for all tests affected by a pull request in
136 ${browser.name} but without the changes in the PR.
138 --no-fail-on-unexpected
139 --log-wptreport=../artifacts/wpt_report.json
140 --log-wptscreenshot=../artifacts/wpt_screenshot.txt
142 taskId: {$eval: 'as_slugid(operation.name)'}
143 taskGroupId: {$eval: 'as_slugid("task group")'}
144 created: {$fromNow: ''}
145 deadline: {$fromNow: '24 hours'}
146 provisionerId: aws-provisioner-v1
148 $if: event.repository.full_name == 'web-platform-tests/wpt'
154 name: ${operation.name}
155 description: ${operation.description}
156 owner: ${event.pull_request.user.login}@users.noreply.github.com
157 source: ${event.repository.url}
159 image: harjgam/web-platform-tests:0.30
163 path: /home/test/artifacts
166 TASK_EVENT: "${event_str}"
167 # Fetch the GitHub-provided merge commit (rather than the pull
168 # request branch) so that the tasks simulate the behavior of the
169 # submitted patch after it is merged. Using the merge commit also
170 # simplifies detection of modified files because the first parent
171 # of the merge commit can consistently be used to summarize the
178 echo "${operation.name}";
180 ${event.repository.clone_url}
181 refs/pull/${event.number}/merge
183 cd web-platform-tests;
185 --checkout=${operation.checkout}
187 --browser=${browser.name}
188 --channel=${browser.channel}
191 ./tools/ci/taskcluster-run.py
192 --commit-range ${operation.diff_range}
195 --channel=${browser.channel}
196 ${operation.extra_args};
198 # This is the main point to define new CI checks other than stability checks
201 Lint for wpt-specific requirements
202 script: ./tools/ci/run_tc.py --no-hosts lint tools/ci/ci_lint.sh
206 - name: update built tests
208 Ensure test suites that require a build step are updated
209 script: ./tools/ci/run_tc.py --no-hosts update_built tools/ci/ci_built_diff.sh
212 - name: tools/ unittests (Python 2)
214 Unit tests for tools running under Python 2.7, excluding wptrunner
217 export HYPOTHESIS_PROFILE=ci;
218 ./tools/ci/run_tc.py \
220 tools/ci/ci_tools_unittest.sh
224 - name: tools/ unittests (Python 3)
226 Unit tests for tools running under Python 3, excluding wptrunner
229 export HYPOTHESIS_PROFILE=ci;
230 sudo apt install -qqy python3-pip;
231 ./tools/ci/run_tc.py \
233 tools/ci/ci_tools_unittest.sh
237 - name: tools/wpt/ tests
239 Integration tests for wpt commands
242 sudo apt install -qqy libnss3-tools;
243 ./tools/ci/run_tc.py \
247 --channel=experimental \
253 - name: resources/ tests
255 Tests for testharness.js and other files in resources/
258 ./tools/ci/run_tc.py \
260 --channel=experimental \
263 tools/ci/ci_resources_unittest.sh
266 - name: infrastructure/ tests
268 Smoketests for wptrunner
270 sudo apt install -qqy libnss3-tools libappindicator1 fonts-liberation;
271 ./tools/ci/run_tc.py \
275 --channel=experimental \
278 wptrunner_infrastructure \
279 tools/ci/ci_wptrunner_infrastructure.sh
283 # Note: jsone doesn't short-circuit evaluation so all parts of the conditional are evaluated
284 # Accessing properties using the [] notation allows them to evaluate as null in case they're undefined
285 # TODO: Allow running pushes on branches other than master
286 - $if: ("push" in operation.conditions && tasks_for == "github-push" && event['ref'] == "refs/heads/master") || ("pull-request" in operation.conditions && tasks_for == "github-pull-request" && event['action'] in ['opened', 'reopened', 'synchronize'])
290 $if: tasks_for == "github-push"
294 refs/pull/${event.number}/merge
296 taskId: {$eval: 'as_slugid(operation.name)'}
297 taskGroupId: {$eval: 'as_slugid("task group")'}
298 created: {$fromNow: ''}
299 deadline: {$fromNow: '24 hours'}
300 provisionerId: aws-provisioner-v1
302 $if: event.repository.full_name == 'web-platform-tests/wpt'
308 name: ${operation.name}
309 description: ${operation.description}
310 owner: ${event.sender.login}@users.noreply.github.com
311 source: ${event.repository.url}
313 image: harjgam/web-platform-tests:0.30
317 path: /home/test/artifacts
320 TASK_EVENT: "${event_str}"
326 echo "${operation.name}";
328 ${event.repository.clone_url}
331 cd ~/web-platform-tests;