Bug 1477872 [wpt PR 12148] - Revert "Taskcluster config v1", a=testonly
authorRobert Ma <bob1211@gmail.com>
Wed, 25 Jul 2018 21:15:27 +0000
changeset 824166 fb5556e787e3caf1064c855f3b2b7f0186393fb0
parent 824165 d07bf928e22d591daebaf304183f0020a0bc1b7e
child 824167 6ee33795ab2d2a1e9470e5a2300dd1bfe8492397
push id117837
push userbmo:aryx.bugmail@gmx-topmail.de
push dateMon, 30 Jul 2018 09:42:15 +0000
reviewerstestonly
bugs1477872, 12148
milestone63.0a1
Bug 1477872 [wpt PR 12148] - Revert "Taskcluster config v1", a=testonly Automatic update from web-platform-testsRevert "[infra] Remove code for generating config file" This reverts commit c8f456094ec0b31d11e1601082d2f76268e75ce4. -- Revert "[infra] Update to latest configuration file format" This reverts commit ce345fbbc3929361d15e8bcceec6a7a7123af5bc. -- wpt-commits: c597cee7678a37f623dace0cd03d652b992daa36, 9f21134354f7d02f1497826d00ba4297ba78c445 wpt-pr: 12148
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/.taskcluster.yml
testing/web-platform/tests/tools/ci/commands.json
testing/web-platform/tests/tools/ci/taskgraph.py
testing/web-platform/tests/tools/docker/start.sh
testing/web-platform/tests/update-built-tests.sh
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -409920,17 +409920,17 @@
    "9e008399bdce736c7c03f7db0c3e8d624083c6b9",
    "support"
   ],
   "./.pyup.yml": [
    "a276808f4f41f6243ca69600d8f9b78ca7f9ed96",
    "support"
   ],
   "./.taskcluster.yml": [
-   "30f94cfc29558a807ad84259f220cea8bcfe3e78",
+   "8dd65b38b4cc39e5f42920c97573889abc401ebd",
    "support"
   ],
   "./.travis.yml": [
    "db79dd9531259cfaf670e7b780a9a205ec712369",
    "support"
   ],
   "./CODEOWNERS": [
    "27076c48623ad8788d0e0cc7679ad86be678744c",
@@ -409964,17 +409964,17 @@
    "0efa39b1f26f86d73f2fce4f9e46003d62057b41",
    "support"
   ],
   "./server-side.md": [
    "c51b17fbac2a2e3121dc74f7badbd2873ce92f61",
    "support"
   ],
   "./update-built-tests.sh": [
-   "e632acfa68de35b71b650db172ffff6d048399a7",
+   "75822374bec6ee3bd6b516027d57f9103629c6bd",
    "support"
   ],
   "./wpt": [
    "4312550682b01b597b993e75d0c521e9a26b09d9",
    "support"
   ],
   "./wpt.py": [
    "d73918dcbe679eb70beff902500df84d56ddc74b",
--- a/testing/web-platform/tests/.taskcluster.yml
+++ b/testing/web-platform/tests/.taskcluster.yml
@@ -1,77 +1,889 @@
-version: 1
-policy:
-  pullRequests: collaborators
+# GENERATED FILE DO NOT EDIT
+# To regenerate this file run ./wpt make-tasks
+allowPullRequests: collaborators
 tasks:
-  $if: tasks_for == "github-push"
-  then:
-    $if: event.ref == "refs/heads/master"
-    then:
-      $flattenDeep:
-        $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}]
-        each(browser):
-          $map:
-            - [testharness, 1, 15]
-            - [testharness, 2, 15]
-            - [testharness, 3, 15]
-            - [testharness, 4, 15]
-            - [testharness, 5, 15]
-            - [testharness, 6, 15]
-            - [testharness, 7, 15]
-            - [testharness, 8, 15]
-            - [testharness, 9, 15]
-            - [testharness, 10, 15]
-            - [testharness, 11, 15]
-            - [testharness, 12, 15]
-            - [testharness, 13, 15]
-            - [testharness, 14, 15]
-            - [testharness, 15, 15]
-            - [reftest, 1, 10]
-            - [reftest, 2, 10]
-            - [reftest, 3, 10]
-            - [reftest, 4, 10]
-            - [reftest, 5, 10]
-            - [reftest, 6, 10]
-            - [reftest, 7, 10]
-            - [reftest, 8, 10]
-            - [reftest, 9, 10]
-            - [reftest, 10, 10]
-            - [wdspec, 1, 1]
-          each(chunk):
-            taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'}
-            taskGroupId: {$eval: 'as_slugid("task group")'}
-            created: {$fromNow: ''}
-            deadline: {$fromNow: '24 hours'}
-            provisionerId: aws-provisioner-v1
-            # Contributors interested in configurating TaskCluster to run
-            # against their fork of WPT should change the `workerType` to
-            # "github-worker".
-            workerType: wpt-docker-worker
-            metadata:
-              name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
-              description: >-
-                A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]}
-                of ${chunk[2]}), run in the ${browser.channel} release of
-                ${browser.name}.
-              owner: ${event.pusher.email}
-              source: ${event.repository.url}
-            payload:
-              image: gsnedders/web-platform-tests:0.13
-              maxRunTime: 7200
-              artifacts:
-                public/results:
-                  path: /home/test/artifacts
-                  type: directory
-              command:
-                - /bin/bash
-                - --login
-                - -c
-                - "~/start.sh ${event.repository.url} ${event.ref[len('refs/heads/'):]} ${event.after} ${browser.name}-${browser.channel} &&
-                  cd ~/web-platform-tests &&
-                  ./tools/ci/ci_taskcluster.sh ${browser.name} ${chunk[0]} ${chunk[1]} ${chunk[2]}"
-    else: []
-  # > NOTE: A well-designed template should produce `tasks: []` for any
-  # > unrecognized `task_for` values; this allows later expansion of this
-  # > service to handle more events.
-  #
-  # https://docs.taskcluster.net/docs/reference/integrations/taskcluster-github/docs/taskcluster-yml-v1
-  else: []
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-1, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 1 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-2, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 2 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-3, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 3 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-4, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 4 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-5, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 5 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-6, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 6 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-7, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 7 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-8, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 8 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-9, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 9 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-reftest-10, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome reftest 10 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-wdspec-1, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome wdspec 1 1"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-1, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 1 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-2, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 2 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-3, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 3 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-4, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 4 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-5, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 5 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-6, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 6 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-7, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 7 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-8, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 8 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-9, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 9 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-10, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 10 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-11, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 11 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-12, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 12 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-13, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 13 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-14, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 14 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-chrome-dev-testharness-15, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} chrome-dev &&\n        \
+        \    cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ chrome testharness 15 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-1, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 1 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-2, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 2 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-3, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 3 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-4, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 4 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-5, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 5 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-6, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 6 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-7, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 7 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-8, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 8 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-9, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 9 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-reftest-10, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox reftest 10 10"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-wdspec-1, owner: '{{ event.head.user.email
+      }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox wdspec 1 1"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-1, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 1 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-2, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 2 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-3, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 3 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-4, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 4 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-5, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 5 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-6, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 6 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-7, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 7 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-8, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 8 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-9, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 9 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-10, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 10 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-11, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 11 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-12, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 12 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-13, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 13 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-14, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 14 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+- extra:
+    github:
+      branches: [master]
+      events: [push]
+  metadata: {description: '', name: wpt-firefox-nightly-testharness-15, owner: '{{
+      event.head.user.email }}', source: '{{ event.head.repo.url }}'}
+  payload:
+    artifacts:
+      public/results: {path: /home/test/artifacts, type: directory}
+    command: [/bin/bash, --login, -c, ">-\n            ~/start.sh {{event.head.repo.url}}\
+        \ {{ event.head.repo.branch }} {{event.head.sha}} firefox-nightly &&\n   \
+        \         cd ~/web-platform-tests &&\n            ./tools/ci/ci_taskcluster.sh\
+        \ firefox testharness 15 15"]
+    image: gsnedders/web-platform-tests:0.13
+    maxRunTime: 7200
+  provisionerId: aws-provisioner-v1
+  workerType: wpt-docker-worker
+version: 0
--- a/testing/web-platform/tests/tools/ci/commands.json
+++ b/testing/web-platform/tests/tools/ci/commands.json
@@ -1,7 +1,9 @@
 {
     "test-jobs": {"path": "jobs.py", "script": "run", "parser": "create_parser", "help": "List test jobs that should run for a set of commits",
                   "virtualenv": false},
     "check-stability": {"path": "check_stability.py", "script": "run", "parser": "get_parser", "parse_known": true, "help": "Check test stability",
                         "virtualenv": true, "install": ["requests"], "requirements": ["../wptrunner/requirements.txt"]},
-    "make-hosts-file": {"path": "make_hosts_file.py", "script": "run", "parser": "create_parser", "help": "Output a hosts file to stdout", "virtualenv": false}
+    "make-hosts-file": {"path": "make_hosts_file.py", "script": "run", "parser": "create_parser", "help": "Output a hosts file to stdout", "virtualenv": false},
+    "make-tasks": {"path": "taskgraph.py", "script": "run", "parser": "get_parser", "parse_known": true, "help": "Generate taskcluster.yml file containing the run tasks",
+                        "virtualenv": true, "install": ["pyyaml"]}
 }
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/tools/ci/taskgraph.py
@@ -0,0 +1,121 @@
+import argparse
+import copy
+import os
+import six
+
+import yaml
+
+
+here = os.path.dirname(__file__)
+wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir))
+
+docker_image = "gsnedders/web-platform-tests:0.13"
+
+task_template = {
+    "provisionerId": "aws-provisioner-v1",
+    "workerType": "wpt-docker-worker",
+    "extra": {
+        "github": {
+            "events": ["push"],
+            "branches": ["master"],
+        },
+    },
+    "payload": {
+        "maxRunTime": 7200,
+        "image": docker_image,
+        "command":[
+            "/bin/bash",
+            "--login",
+            "-c",
+            """>-
+            ~/start.sh {{event.head.repo.url}} {{ event.head.repo.branch }} {{event.head.sha}} %(browser_name)s &&
+            cd ~/web-platform-tests &&
+            %(command)s"""],
+        "artifacts": {
+            "public/results": {
+                "path": "/home/test/artifacts",
+                "type": "directory"
+            }
+        }
+    },
+    "metadata": {
+        "name": "wpt-%(browser_name)s-%(suite)s-%(chunk)s",
+        "description": "",
+        "owner": "{{ event.head.user.email }}",
+        "source": "{{ event.head.repo.url }}",
+    }
+}
+
+
+file_template = {
+    "version": 0,
+    "tasks": [],
+    "allowPullRequests": "collaborators"
+}
+
+suites = {
+    "testharness": {"chunks": 15},
+    "reftest": {"chunks": 10},
+    "wdspec": {"chunks": 1}
+}
+
+browsers = {
+    "firefox": {"name": "firefox-nightly"},
+    "chrome": {"name": "chrome-dev"}
+}
+
+
+def get_parser():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--dest",
+                        action="store",
+                        default=wpt_root,
+                        help="Directory to write the .taskcluster.yml file to")
+    return parser
+
+
+def fill(template, data):
+    rv = {}
+    for key, value in template.iteritems():
+        rv[key] = fill_inner(value, data)
+    return rv
+
+
+def fill_inner(value, data):
+    if isinstance(value, six.string_types):
+        return value % data
+    elif isinstance(value, dict):
+        return fill(value, data)
+    elif isinstance(value, list):
+        return [fill_inner(item, data) for item in value]
+    elif isinstance(value, (float,) + six.integer_types):
+        return value
+    else:
+        raise ValueError
+
+
+def run(venv, *args, **kwargs):
+    if not os.path.isdir(kwargs["dest"]):
+        raise ValueError("Invalid directory %s" % kwargs["dest"])
+
+    task_config = copy.deepcopy(file_template)
+    for browser, browser_props in browsers.iteritems():
+        for suite, suite_props in suites.iteritems():
+            total_chunks = suite_props.get("chunks", 1)
+            for chunk in six.moves.xrange(1, total_chunks + 1):
+                data = {
+                    "suite": suite,
+                    "chunk": chunk,
+                    "browser_name": browser_props["name"],
+                    "command": ("./tools/ci/ci_taskcluster.sh %s %s %s %s" %
+                                (browser, suite, chunk, total_chunks))
+                }
+
+                task_data = fill(task_template, data)
+                task_config["tasks"].append(task_data)
+
+    with open(os.path.join(kwargs["dest"], ".taskcluster.yml"), "w") as f:
+        f.write("""# GENERATED FILE DO NOT EDIT
+# To regenerate this file run ./wpt make-tasks
+""")
+        yaml.dump(task_config, f)
--- a/testing/web-platform/tests/tools/docker/start.sh
+++ b/testing/web-platform/tests/tools/docker/start.sh
@@ -1,16 +1,19 @@
 # This script is embedded in the docker image, and so the image must be updated when changes
 # to the script are made. To do this, assuming you have docker installed:
 # In tools/docker/ :
 #   docker build .
 #   docker ps # and look for the id of the image you just built
 #   docker tag <image> <tag>
 #   docker push <tag>
-# Update the `image` specified in the project's .taskcluster.yml file
+# Edit tools/ci/taskgraph.py and update the docker_image = "<tag>" line
+# In the project root:
+#   ./wpt make-tasks
+# Commit the changes with .taskcluster.yml changes in a separate commit for easier review
 
 
 #!/bin/bash
 set -ex
 
 REMOTE=${1:-https://github.com/web-platform-tests/wpt}
 BRANCH=${2:-master}
 REV=${3:-FETCH_HEAD}
--- a/testing/web-platform/tests/update-built-tests.sh
+++ b/testing/web-platform/tests/update-built-tests.sh
@@ -1,8 +1,11 @@
 #!/usr/bin/env sh
 set -ex
 
 2dcontext/tools/build.sh
 infrastructure/assumptions/tools/build.sh
 html/tools/build.sh
 offscreen-canvas/tools/build.sh
 python mimesniff/mime-types/resources/generated-mime-types.py
+
+# Infrastucture
+python wpt make-tasks