diff --git a/.taskcluster.yml b/.taskcluster.yml new file mode 100644 index 00000000000000..b590d5e1cefb36 --- /dev/null +++ b/.taskcluster.yml @@ -0,0 +1,687 @@ +allowPullRequests: collaborators +tasks: +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 1 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 2 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 3 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 4 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 5 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome reftest 6 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome wdspec 1 1"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 1 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 2 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 3 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 4 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 5 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 6 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 7 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 8 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 9 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 10 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 11 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ chrome testharness 12 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 1 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 2 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 3 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 4 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 5 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox reftest 6 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox wdspec 1 1"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 1 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 2 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 3 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 4 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 5 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 6 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 7 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 8 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 9 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 10 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 11 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- 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 &&\n \ + \ cd /home/test/web-platform-tests &&\n git fetch {{event.head.repo.url}}\ + \ &&\n git config advice.detachedHead false &&\n git\ + \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ + \ firefox testharness 12 12"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 5400 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +version: 0 diff --git a/content-security-policy/support/dedicated-worker-helper.js b/content-security-policy/support/dedicated-worker-helper.js new file mode 100644 index 00000000000000..c1ed208e931e7f --- /dev/null +++ b/content-security-policy/support/dedicated-worker-helper.js @@ -0,0 +1,2 @@ +var url = new URL("../support/ping.js", document.baseURI).toString(); +assert_worker_is_loaded(url, document.getElementById("foo").getAttribute("data-desc-fallback")); \ No newline at end of file diff --git a/content-security-policy/support/service-worker-helper.js b/content-security-policy/support/service-worker-helper.js new file mode 100644 index 00000000000000..4e8f8b5f5d2e6c --- /dev/null +++ b/content-security-policy/support/service-worker-helper.js @@ -0,0 +1,2 @@ +var url = new URL("../support/ping.js", document.baseURI).toString(); +assert_service_worker_is_loaded(url, document.getElementById("foo").getAttribute("data-desc-fallback")); \ No newline at end of file diff --git a/content-security-policy/support/shared-worker-helper.js b/content-security-policy/support/shared-worker-helper.js new file mode 100644 index 00000000000000..d0637ec4717141 --- /dev/null +++ b/content-security-policy/support/shared-worker-helper.js @@ -0,0 +1,2 @@ +var url = new URL("../support/ping.js", document.baseURI).toString(); +assert_shared_worker_is_loaded(url, document.getElementById("foo").getAttribute("data-desc-fallback")); \ No newline at end of file diff --git a/content-security-policy/worker-src/dedicated-worker-src-child-fallback.sub.html b/content-security-policy/worker-src/dedicated-worker-src-child-fallback.sub.html new file mode 100644 index 00000000000000..9c37dfb6301406 --- /dev/null +++ b/content-security-policy/worker-src/dedicated-worker-src-child-fallback.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for dedicated worker allowed by child-src self + + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/dedicated-worker-src-default-fallback.sub.html b/content-security-policy/worker-src/dedicated-worker-src-default-fallback.sub.html new file mode 100644 index 00000000000000..5bded3f59a05f2 --- /dev/null +++ b/content-security-policy/worker-src/dedicated-worker-src-default-fallback.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for dedicated worker allowed by default-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/dedicated-worker-src-script-fallback.sub.html b/content-security-policy/worker-src/dedicated-worker-src-script-fallback.sub.html new file mode 100644 index 00000000000000..ca922076762c1d --- /dev/null +++ b/content-security-policy/worker-src/dedicated-worker-src-script-fallback.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for dedicated worker allowed by script-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/dedicated-worker-src-self-fallback.sub.html b/content-security-policy/worker-src/dedicated-worker-src-self-fallback.sub.html new file mode 100644 index 00000000000000..06e79db006286c --- /dev/null +++ b/content-security-policy/worker-src/dedicated-worker-src-self-fallback.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for dedicated worker allowed by worker-src self + + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/service-worker-src-child-fallback.https.sub.html b/content-security-policy/worker-src/service-worker-src-child-fallback.https.sub.html new file mode 100644 index 00000000000000..0053b1098aa062 --- /dev/null +++ b/content-security-policy/worker-src/service-worker-src-child-fallback.https.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for service worker allowed by child-src self + + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/service-worker-src-default-fallback.https.sub.html b/content-security-policy/worker-src/service-worker-src-default-fallback.https.sub.html new file mode 100644 index 00000000000000..f9df743909f380 --- /dev/null +++ b/content-security-policy/worker-src/service-worker-src-default-fallback.https.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for service worker allowed by default-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/service-worker-src-script-fallback.https.sub.html b/content-security-policy/worker-src/service-worker-src-script-fallback.https.sub.html new file mode 100644 index 00000000000000..ce03f24f176b4d --- /dev/null +++ b/content-security-policy/worker-src/service-worker-src-script-fallback.https.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for service worker allowed by script-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/service-worker-src-self-fallback.https.sub.html b/content-security-policy/worker-src/service-worker-src-self-fallback.https.sub.html new file mode 100644 index 00000000000000..58bc8cdb7a7a92 --- /dev/null +++ b/content-security-policy/worker-src/service-worker-src-self-fallback.https.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for service worker allowed by worker-src self + + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html b/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html new file mode 100644 index 00000000000000..53510852ef0d18 --- /dev/null +++ b/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for shared worker allowed by child-src self + + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html b/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html new file mode 100644 index 00000000000000..4a07db76aaeb61 --- /dev/null +++ b/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for shared worker allowed by default-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html b/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html new file mode 100644 index 00000000000000..0a854da3ad2260 --- /dev/null +++ b/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html @@ -0,0 +1,8 @@ + + +Web platform test for shared worker allowed by script-src self + + + + + \ No newline at end of file diff --git a/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html b/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html new file mode 100644 index 00000000000000..353a3a0d51b353 --- /dev/null +++ b/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html @@ -0,0 +1,9 @@ + + +Web platform test for shared worker allowed by worker-src self + + + + + + \ No newline at end of file diff --git a/css/css-align/content-distribution/place-content-shorthand-007-ref.html b/css/css-align/content-distribution/place-content-shorthand-007-ref.html new file mode 100644 index 00000000000000..67727f4fd26fb9 --- /dev/null +++ b/css/css-align/content-distribution/place-content-shorthand-007-ref.html @@ -0,0 +1,22 @@ + + +CSS Test Reference + + +Should see a green square centered and at the bottom of the blue square. +
diff --git a/css/css-align/content-distribution/place-content-shorthand-007.html b/css/css-align/content-distribution/place-content-shorthand-007.html new file mode 100644 index 00000000000000..be954c9712189d --- /dev/null +++ b/css/css-align/content-distribution/place-content-shorthand-007.html @@ -0,0 +1,22 @@ + + +CSS Box Alignment: place-content shorthand with fallback + + + + + +Should see a green square centered and at the bottom of the blue square. +
diff --git a/css/css-scoping/slotted-invalidation.html b/css/css-scoping/slotted-invalidation.html new file mode 100644 index 00000000000000..f8471062e1d0b2 --- /dev/null +++ b/css/css-scoping/slotted-invalidation.html @@ -0,0 +1,35 @@ + +CSS Test: Style invalidation for ::slotted() + + + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ diff --git a/css/css-text/astral-bidi/adlam-anti-ref.html b/css/css-text/astral-bidi/adlam-anti-ref.html new file mode 100644 index 00000000000000..db4c2fdfea2f4b --- /dev/null +++ b/css/css-text/astral-bidi/adlam-anti-ref.html @@ -0,0 +1,13 @@ + + + + + Adlam + + + + +

𞤀𞤁𞤂𞤁𞤄

+

U+1E900 U+1E901 U+1E902 U+1E901 U+1E904

+ + diff --git a/css/css-text/astral-bidi/adlam-ref.html b/css/css-text/astral-bidi/adlam-ref.html new file mode 100644 index 00000000000000..d039127044e0bc --- /dev/null +++ b/css/css-text/astral-bidi/adlam-ref.html @@ -0,0 +1,12 @@ + + + + + Adlam + + + +

𞤀𞤁𞤂𞤁𞤄

+

U+1E900 U+1E901 U+1E902 U+1E901 U+1E904

+ + diff --git a/css/css-text/astral-bidi/adlam.html b/css/css-text/astral-bidi/adlam.html new file mode 100644 index 00000000000000..613aa3ce79369c --- /dev/null +++ b/css/css-text/astral-bidi/adlam.html @@ -0,0 +1,15 @@ + + + + + Adlam + + + + + + +

𞤀𞤁𞤂𞤁𞤄

+

U+1E900 U+1E901 U+1E902 U+1E901 U+1E904

+ + diff --git a/css/css-text/astral-bidi/cypriot-anti-ref.html b/css/css-text/astral-bidi/cypriot-anti-ref.html new file mode 100644 index 00000000000000..66ffc08275915c --- /dev/null +++ b/css/css-text/astral-bidi/cypriot-anti-ref.html @@ -0,0 +1,13 @@ + + + + + Cypriot + + + + +

𐠀𐠰𐠦𐠡𐠩

+

U+10800 U+10830 U+10826 U+10821 U+10829

+ + diff --git a/css/css-text/astral-bidi/cypriot-ref.html b/css/css-text/astral-bidi/cypriot-ref.html new file mode 100644 index 00000000000000..ad8accd3a095ae --- /dev/null +++ b/css/css-text/astral-bidi/cypriot-ref.html @@ -0,0 +1,12 @@ + + + + + Cypriot + + + +

𐠀𐠰𐠦𐠡𐠩

+

U+10800 U+10830 U+10826 U+10821 U+10829

+ + diff --git a/css/css-text/astral-bidi/cypriot.html b/css/css-text/astral-bidi/cypriot.html new file mode 100644 index 00000000000000..e8dcbceea240a0 --- /dev/null +++ b/css/css-text/astral-bidi/cypriot.html @@ -0,0 +1,15 @@ + + + + + Cypriot + + + + + + +

𐠀𐠰𐠦𐠡𐠩

+

U+10800 U+10830 U+10826 U+10821 U+10829

+ + diff --git a/css/css-text/astral-bidi/support/adlam.css b/css/css-text/astral-bidi/support/adlam.css new file mode 100644 index 00000000000000..56020cae6039c1 --- /dev/null +++ b/css/css-text/astral-bidi/support/adlam.css @@ -0,0 +1,9 @@ +@font-face { + font-family: "Noto Sans Adlam"; + font-weight: normal; + font-style: normal; + src: url("../../../fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf") format("truetype"); +} +p { + font-family: "Noto Sans Adlam"; +} diff --git a/css/css-text/astral-bidi/support/cypriot.css b/css/css-text/astral-bidi/support/cypriot.css new file mode 100644 index 00000000000000..23fcb7db5d3a82 --- /dev/null +++ b/css/css-text/astral-bidi/support/cypriot.css @@ -0,0 +1,9 @@ +@font-face { + font-family: "Noto Sans Cypriot"; + font-weight: normal; + font-style: normal; + src: url("../../../fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf") format("truetype"); +} +p { + font-family: "Noto Sans Cypriot"; +} diff --git a/css/css-ui/appearance-dynamic-001-ref.html b/css/css-ui/appearance-dynamic-001-ref.html new file mode 100644 index 00000000000000..c51871fee50b84 --- /dev/null +++ b/css/css-ui/appearance-dynamic-001-ref.html @@ -0,0 +1,12 @@ + + +CSS Test Reference + + +

Should see form controls with their default styling

+ + + + + + diff --git a/css/css-ui/appearance-dynamic-001.html b/css/css-ui/appearance-dynamic-001.html new file mode 100644 index 00000000000000..81fe45a8f3fdf5 --- /dev/null +++ b/css/css-ui/appearance-dynamic-001.html @@ -0,0 +1,23 @@ + + +CSS Basic User Interface Test: dynamic appearance switching + + + + + +

Should see form controls with their default styling

+ + + + + + + + diff --git a/css/css-values/calc-ch-ex-lang-ref.html b/css/css-values/calc-ch-ex-lang-ref.html new file mode 100644 index 00000000000000..e0ac1ead1e5247 --- /dev/null +++ b/css/css-values/calc-ch-ex-lang-ref.html @@ -0,0 +1,12 @@ + + +CSS Test Reference + + +
diff --git a/css/css-values/calc-ch-ex-lang.html b/css/css-values/calc-ch-ex-lang.html new file mode 100644 index 00000000000000..eb447475d52887 --- /dev/null +++ b/css/css-values/calc-ch-ex-lang.html @@ -0,0 +1,16 @@ + + +CSS Test: Calc in font-size with ch / ex units across lang changes + + + + + + +
+
+
diff --git a/css/css-values/calc-rem-lang-ref.html b/css/css-values/calc-rem-lang-ref.html new file mode 100644 index 00000000000000..a0f6add684a57f --- /dev/null +++ b/css/css-values/calc-rem-lang-ref.html @@ -0,0 +1,6 @@ + + +CSS Test Reference + +

You should see a green box twice-the-initial-font-size wide.

+
diff --git a/css/css-values/calc-rem-lang.html b/css/css-values/calc-rem-lang.html new file mode 100644 index 00000000000000..3994efc003b5a1 --- /dev/null +++ b/css/css-values/calc-rem-lang.html @@ -0,0 +1,17 @@ + + + +CSS Test: Calc with rem and relative units on the root element + + + + + + +

You should see a green box twice-the-initial-font-size wide.

+
+ diff --git a/css/cssom-view/elementFromPoint-dynamic-anon-box.html b/css/cssom-view/elementFromPoint-dynamic-anon-box.html new file mode 100644 index 00000000000000..e0acb90fb8fe76 --- /dev/null +++ b/css/cssom-view/elementFromPoint-dynamic-anon-box.html @@ -0,0 +1,44 @@ + + +CSS Test: Hit testing on element previously hidden by an anonymous scroll box + + + + + +
+
+
+Should be clickable + diff --git a/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt b/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt new file mode 100644 index 00000000000000..d952d62c065f3f --- /dev/null +++ b/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt @@ -0,0 +1,92 @@ +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf b/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf new file mode 100644 index 00000000000000..0ab5d995c96402 Binary files /dev/null and b/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf differ diff --git a/css/fonts/noto/NotoSansAdlam-hinted/README b/css/fonts/noto/NotoSansAdlam-hinted/README new file mode 100644 index 00000000000000..d22876499aa332 --- /dev/null +++ b/css/fonts/noto/NotoSansAdlam-hinted/README @@ -0,0 +1,11 @@ +This package is part of the noto project. Visit +google.com/get/noto for more information. + +Built on 2017-10-24 from the following noto repository: +----- +Repo: noto-fonts +Tag: v2017-10-24-phase3-second-cleanup +Date: 2017-10-24 12:10:34 GMT +Commit: 8ef14e6c606a7a0ef3943b9ca01fd49445620d79 + +Remove some files that aren't for release. diff --git a/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt b/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt new file mode 100644 index 00000000000000..d952d62c065f3f --- /dev/null +++ b/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt @@ -0,0 +1,92 @@ +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf b/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf new file mode 100644 index 00000000000000..6727e13d62857f Binary files /dev/null and b/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf differ diff --git a/css/fonts/noto/NotoSansCypriot-hinted/README b/css/fonts/noto/NotoSansCypriot-hinted/README new file mode 100644 index 00000000000000..d22876499aa332 --- /dev/null +++ b/css/fonts/noto/NotoSansCypriot-hinted/README @@ -0,0 +1,11 @@ +This package is part of the noto project. Visit +google.com/get/noto for more information. + +Built on 2017-10-24 from the following noto repository: +----- +Repo: noto-fonts +Tag: v2017-10-24-phase3-second-cleanup +Date: 2017-10-24 12:10:34 GMT +Commit: 8ef14e6c606a7a0ef3943b9ca01fd49445620d79 + +Remove some files that aren't for release. diff --git a/css/selectors/invalidation/selectorText-dynamic-001.html b/css/selectors/invalidation/selectorText-dynamic-001.html new file mode 100644 index 00000000000000..c705c2b3e85f59 --- /dev/null +++ b/css/selectors/invalidation/selectorText-dynamic-001.html @@ -0,0 +1,24 @@ + + +CSS Test: invalidation of class changes when the selector in a rule has changed + + + + + + + +Should have a green background. + + diff --git a/css/selectors/invalidation/sheet-going-away-001.html b/css/selectors/invalidation/sheet-going-away-001.html new file mode 100644 index 00000000000000..7b704eca97ff5b --- /dev/null +++ b/css/selectors/invalidation/sheet-going-away-001.html @@ -0,0 +1,26 @@ + + +CSS Test: invalidation of class changes when the sheet the style depends on goes away + + + + + + + + +Should have a green background. + + diff --git a/css/selectors/invalidation/sheet-going-away-002-ref.html b/css/selectors/invalidation/sheet-going-away-002-ref.html new file mode 100644 index 00000000000000..67841617736730 --- /dev/null +++ b/css/selectors/invalidation/sheet-going-away-002-ref.html @@ -0,0 +1,7 @@ + + +CSS Test Reference + +

+ Should be green. +

diff --git a/css/selectors/invalidation/sheet-going-away-002.html b/css/selectors/invalidation/sheet-going-away-002.html new file mode 100644 index 00000000000000..41778239518d4d --- /dev/null +++ b/css/selectors/invalidation/sheet-going-away-002.html @@ -0,0 +1,23 @@ + + +CSS Test: invalidation of class changes when the sheet the style depends on goes away + + + + + + + +

+ Should be green. +

+ + diff --git a/custom-elements/attribute-changed-callback.html b/custom-elements/attribute-changed-callback.html index bd467912b99959..5090bfbfbfecdf 100644 --- a/custom-elements/attribute-changed-callback.html +++ b/custom-elements/attribute-changed-callback.html @@ -11,6 +11,7 @@
+ diff --git a/custom-elements/parser/parser-sets-attributes-and-children.html b/custom-elements/parser/parser-sets-attributes-and-children.html index ba331370a78daa..ef4689fac0729e 100644 --- a/custom-elements/parser/parser-sets-attributes-and-children.html +++ b/custom-elements/parser/parser-sets-attributes-and-children.html @@ -8,6 +8,7 @@ +
@@ -15,6 +16,7 @@ var numberOfAttributesInConstructor; var numberOfChildNodesInConstructor; +var attributesChangedCalls = []; class MyCustomElement extends HTMLElement { constructor(...args) { @@ -22,6 +24,14 @@ numberOfAttributesInConstructor = this.attributes.length; numberOfChildNodesInConstructor = this.childNodes.length; } + + attributeChangedCallback(...args) { + attributesChangedCalls.push(create_attribute_changed_callback_log(this, ...args)); + } + + static get observedAttributes() { + return ['id', 'class']; + } }; customElements.define('my-custom-element', MyCustomElement); @@ -54,6 +64,12 @@ assert_equals(numberOfChildNodesInConstructor, 0, 'HTML parser must not append child nodes to a custom element before invoking the constructor'); }, 'HTML parser must set the attributes or append children before calling constructor'); +test(function () { + assert_equals(attributesChangedCalls.length, 2); + assert_attribute_log_entry(attributesChangedCalls[0], {name: 'id', oldValue: null, newValue: 'custom-element-id', namespace: null}); + assert_attribute_log_entry(attributesChangedCalls[1], {name: 'class', oldValue: null, newValue: 'class1 class2', namespace: null}); +}, 'HTML parser must enqueue attributeChanged reactions'); + diff --git a/fetch/api/response/response-init-002.html b/fetch/api/response/response-init-002.html index 0bb2e8d0b3b28d..a48af833644efe 100644 --- a/fetch/api/response/response-init-002.html +++ b/fetch/api/response/response-init-002.html @@ -65,6 +65,11 @@ }); }, "Testing empty Response Content-Type header"); + test(function() { + var response = new Response(null, {status: 204}); + assert_equals(response.body, null); + }, "Testing null Response body"); + diff --git a/resource-timing/resource_timing.worker.js b/resource-timing/resource_timing.worker.js new file mode 100644 index 00000000000000..92687f0f7b62b9 --- /dev/null +++ b/resource-timing/resource_timing.worker.js @@ -0,0 +1,64 @@ +importScripts("/resources/testharness.js"); + +function check(initiatorType, protocol) { + let entries = performance.getEntries(); + assert_equals(entries.length, 1); + + assert_true(entries[0] instanceof PerformanceEntry); + assert_equals(entries[0].entryType, "resource"); + assert_true(entries[0].startTime > 0); + assert_true(entries[0].duration > 0); + + assert_true(entries[0] instanceof PerformanceResourceTiming); + assert_equals(entries[0].initiatorType, initiatorType); + assert_equals(entries[0].nextHopProtocol, protocol); +} + +async_test(t => { + performance.clearResourceTimings(); + + // Fetch + fetch("resources/empty.js") + .then(r => r.blob()) + .then(blob => { + check("fetch", "http/1.1"); + }) + + // XMLHttpRequest + .then(() => { + return new Promise(resolve => { + performance.clearResourceTimings(); + let xhr = new XMLHttpRequest(); + xhr.onload = () => { + check("xmlhttprequest", "http/1.1"); + resolve(); + }; + xhr.open("GET", "resources/empty.js"); + xhr.send(); + }); + }) + + // Sync XMLHttpREquest + .then(() => { + performance.clearResourceTimings(); + let xhr = new XMLHttpRequest(); + xhr.open("GET", "resources/empty.js", false); + xhr.send(); + + check("xmlhttprequest", "http/1.1"); + }) + + // ImportScripts + .then(() => { + performance.clearResourceTimings(); + importScripts(["resources/empty.js"]); + check("other", "http/1.1"); + }) + + // All done. + .then(() => { + t.done(); + }); +}, "Performance Resouce Entries in workers"); + +done(); diff --git a/resource-timing/resources/empty.js b/resource-timing/resources/empty.js new file mode 100644 index 00000000000000..3b44754e301ded --- /dev/null +++ b/resource-timing/resources/empty.js @@ -0,0 +1 @@ +/* Nothing here */ diff --git a/service-workers/service-worker/local-url-inherit-controller.https.html b/service-workers/service-worker/local-url-inherit-controller.https.html new file mode 100644 index 00000000000000..e3f0b24f1c94a1 --- /dev/null +++ b/service-workers/service-worker/local-url-inherit-controller.https.html @@ -0,0 +1,79 @@ + +Service Worker: local URL windows and workers inherit controller + + + + + + + + diff --git a/service-workers/service-worker/resources/local-url-inherit-controller-frame.html b/service-workers/service-worker/resources/local-url-inherit-controller-frame.html new file mode 100644 index 00000000000000..769c2681c0897b --- /dev/null +++ b/service-workers/service-worker/resources/local-url-inherit-controller-frame.html @@ -0,0 +1,85 @@ + + + + diff --git a/tools/ci/.bashrc b/tools/ci/.bashrc new file mode 100644 index 00000000000000..bbe03c489aa528 --- /dev/null +++ b/tools/ci/.bashrc @@ -0,0 +1,4 @@ +function xvfb_start() { + GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH" + xvfb-run --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" $@ +} diff --git a/tools/ci/Dockerfile b/tools/ci/Dockerfile new file mode 100644 index 00000000000000..28fdd78b3ec008 --- /dev/null +++ b/tools/ci/Dockerfile @@ -0,0 +1,76 @@ +FROM ubuntu:16.04 + +# No interactive frontend during docker build +ENV DEBIAN_FRONTEND=noninteractive \ + DEBCONF_NONINTERACTIVE_SEEN=true + +# General requirements not in the base image +RUN apt-get -qqy update \ + && apt-get -qqy install \ + bzip2 \ + ca-certificates \ + dbus-x11 \ + git \ + locales \ + pulseaudio \ + python \ + python-pip \ + tzdata \ + sudo \ + unzip \ + wget \ + xvfb + +# Installing just the deps of firefox and chrome is moderately tricky, so +# just install the default versions of them, and some extra deps we happen +# to know that chrome requires + +RUN apt-get -qqy install \ + firefox \ + chromium-browser \ + libnss3-tools \ + fonts-liberation \ + indicator-application \ + libappindicator1 \ + libappindicator3-1 \ + libdbusmenu-gtk3-4 \ + libindicator3-7 \ + libindicator7 + +RUN pip install --upgrade pip +RUN pip install virtualenv + +ENV TZ "UTC" +RUN echo "${TZ}" > /etc/timezone \ + && dpkg-reconfigure --frontend noninteractive tzdata + +RUN useradd test \ + --shell /bin/bash \ + --create-home \ + && usermod -a -G sudo test \ + && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ + && echo 'test:secret' | chpasswd + +ENV SCREEN_WIDTH 1280 +ENV SCREEN_HEIGHT 1024 +ENV SCREEN_DEPTH 24 +ENV DISPLAY :99.0 + +USER test + +WORKDIR /home/test + +COPY .bashrc /home/test/.bashrc + +COPY start.sh /home/test/start.sh + +# Remove information on how to use sudo on login +RUN sudo echo "" + +RUN git clone --depth=1 https://github.com/w3c/web-platform-tests.git + +RUN mkdir -p /home/test/.fonts && \ + cp web-platform-tests/fonts/Ahem.ttf ~/.fonts && \ + fc-cache -f -v + +RUN mkdir -p /home/test/artifacts \ No newline at end of file diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh new file mode 100755 index 00000000000000..38c84628f15d53 --- /dev/null +++ b/tools/ci/ci_taskcluster.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ $1 == "firefox" ]; then + ./wpt run firefox --log-tbpl=- --log-tbpl-level=debug --log-wptreport=../artifacts/wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser --no-pause --no-restart-on-unexpected +elif [ $1 == "chrome" ]; then + ./wpt run chrome --log-tbpl=- --log-tbpl-level=debug --log-wptreport=../artifacts/wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --no-pause --no-restart-on-unexpected +fi diff --git a/tools/ci/commands.json b/tools/ci/commands.json index d682d2a506440c..862fde037b5a3b 100644 --- a/tools/ci/commands.json +++ b/tools/ci/commands.json @@ -2,5 +2,7 @@ "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"]} + "virtualenv": true, "install": ["requests"], "requirements": ["../wptrunner/requirements.txt"]}, + "generate-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"]} } diff --git a/tools/ci/start.sh b/tools/ci/start.sh new file mode 100755 index 00000000000000..f4adb90d7cb22e --- /dev/null +++ b/tools/ci/start.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +sudo sh -c 'echo " +127.0.0.1 web-platform.test +127.0.0.1 www.web-platform.test +127.0.0.1 www1.web-platform.test +127.0.0.1 www2.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 xn--lve-6lad.web-platform.test +0.0.0.0 nonexistent-origin.web-platform.test" >> /etc/hosts' + +cd web-platform-tests +git pull --depth=1 + +# Install Chome unstable +deb_archive=google-chrome-unstable_current_amd64.deb +wget https://dl.google.com/linux/direct/$deb_archive + +# Installation will fail in cases where the package has unmet dependencies. +# When this occurs, attempt to use the system package manager to fetch the +# required packages and retry. +if ! sudo dpkg --install $deb_archive; then + sudo apt-get -y install --fix-broken + sudo dpkg --install $deb_archive +fi + +sudo Xvfb $DISPLAY -screen 0 ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH} & diff --git a/tools/ci/taskgraph.py b/tools/ci/taskgraph.py new file mode 100644 index 00000000000000..523bf286433abf --- /dev/null +++ b/tools/ci/taskgraph.py @@ -0,0 +1,119 @@ +import argparse +import copy +import os + +import yaml + + +here = os.path.dirname(__file__) +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) + + +task_template = { + "provisionerId": "{{ taskcluster.docker.provisionerId }}", + "workerType": "{{ taskcluster.docker.workerType }}", + "extra": { + "github": { + "events": ["push"], + "branches": ["master"], + }, + }, + "payload": { + "maxRunTime": 5400, + "image": "harjgam/web-platform-tests:0.5", + "command":[ + "/bin/bash", + "--login", + "-c", + """>- + ~/start.sh && + cd /home/test/web-platform-tests && + git fetch {{event.head.repo.url}} && + git config advice.detachedHead false && + git checkout {{event.head.sha}} && + %(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": 12}, + "reftest": {"chunks": 6}, + "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, (str, unicode)): + 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, int, long)): + 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 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: + yaml.dump(task_config, f) diff --git a/tools/wpt/run.py b/tools/wpt/run.py index d1e3e49519c914..c6f3dbc0d240e4 100644 --- a/tools/wpt/run.py +++ b/tools/wpt/run.py @@ -397,7 +397,8 @@ def log(x): def run_single(venv, **kwargs): from wptrunner import wptrunner - return wptrunner.start(**kwargs) + wptrunner.start(**kwargs) + return def main(): diff --git a/tools/wpt/utils.py b/tools/wpt/utils.py index e1f4cd4bb5c75d..40e1a45d28d0e5 100644 --- a/tools/wpt/utils.py +++ b/tools/wpt/utils.py @@ -39,7 +39,7 @@ def call(*args): Returns a bytestring of the subprocess output if no error. """ - logger.debug("%s" % " ".join(args)) + logger.info("%s" % " ".join(args)) try: return subprocess.check_output(args) except subprocess.CalledProcessError as e: diff --git a/tools/wpt/virtualenv.py b/tools/wpt/virtualenv.py index 8f36aa93585ffd..6abaec5f875811 100644 --- a/tools/wpt/virtualenv.py +++ b/tools/wpt/virtualenv.py @@ -7,6 +7,7 @@ logger = logging.getLogger(__name__) + class Virtualenv(object): def __init__(self, path): self.path = path @@ -21,7 +22,7 @@ def exists(self): def create(self): if os.path.exists(self.path): shutil.rmtree(self.path) - call(self.virtualenv, self.path) + call(self.virtualenv, self.path, "-p", sys.executable) @property def bin_path(self): @@ -38,7 +39,14 @@ def pip_path(self): def activate(self): path = os.path.join(self.bin_path, "activate_this.py") + logger.info("Activating virtualenv %s" % path) + old_sys_path = sys.path[:] + logger.info(sys.path) execfile(path, {"__file__": path}) + logger.info(sys.path) + for item in sys.path: + if item not in old_sys_path: + logger.info(item) def start(self): if not self.exists: @@ -46,7 +54,7 @@ def start(self): self.activate() def install(self, *requirements): - call(self.pip_path, "install", *requirements) + logger.info(call(self.pip_path, "install", *requirements)) def install_requirements(self, requirements_path): - call(self.pip_path, "install", "-r", requirements_path) + logger.info(call(self.pip_path, "install", "-r", requirements_path)) diff --git a/tools/wpt/wpt.py b/tools/wpt/wpt.py index 49f463d2a9ed1e..e183bef230da97 100644 --- a/tools/wpt/wpt.py +++ b/tools/wpt/wpt.py @@ -90,7 +90,7 @@ def setup_virtualenv(path, props): def main(prog=None, argv=None): - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.DEBUG) if prog is None: prog = sys.argv[0] diff --git a/web-animations/README.md b/web-animations/README.md index 475f58a57b1283..f6efbf977f95bc 100644 --- a/web-animations/README.md +++ b/web-animations/README.md @@ -98,10 +98,19 @@ Guidelines for writing tests Remember, even if we do need to make all tests take, say 200s each, text editors are very good at search and replace. -* Use the `assert_times_equal` assertion for comparing calculated times. - It tests times are equal using the precision recommended in the spec whilst - allowing implementations to override the function to meet their own - precision requirements. +* Use the `assert_times_equal` assertion for comparing times returned from + the API. This asserts that the time values are equal using a tolerance + based on the precision recommended in the spec. This tolerance is applied + to *both* of the values being compared. That is, it effectively allows + double the epsilon that is used when comparing with an absolute value. + + For comparing a time value returned from the API to an absolute value, use + `assert_time_equals_literal`. This tests that the actual value is equal to + the expected value within the precision recommended in the spec. + + Both `assert_times_equal` and `assert_time_equals_literal` are defined in a + way that implementations can override them to meet their own precision + requirements. * There are quite a few bad tests in the repository. We're learning as we go. Don't just copy them blindly—please fix them! diff --git a/web-animations/interfaces/Animation/playbackRate.html b/web-animations/interfaces/Animation/playbackRate.html index 9a3b76240f0272..be5bf969498ceb 100644 --- a/web-animations/interfaces/Animation/playbackRate.html +++ b/web-animations/interfaces/Animation/playbackRate.html @@ -14,16 +14,14 @@ previousAnimationCurrentTime, previousTimelineCurrentTime, description) { - const accuracy = 0.001; /* accuracy of DOMHighResTimeStamp */ const animationCurrentTimeDifference = animation.currentTime - previousAnimationCurrentTime; const timelineCurrentTimeDifference = animation.timeline.currentTime - previousTimelineCurrentTime; - assert_approx_equals(animationCurrentTimeDifference, - timelineCurrentTimeDifference * animation.playbackRate, - accuracy, - description); + assert_times_equal(animationCurrentTimeDifference, + timelineCurrentTimeDifference * animation.playbackRate, + description); } promise_test(t => { diff --git a/web-animations/interfaces/AnimationEffectTiming/direction.html b/web-animations/interfaces/AnimationEffectTiming/direction.html index 7bc315da967162..3238f5d7a5e842 100644 --- a/web-animations/interfaces/AnimationEffectTiming/direction.html +++ b/web-animations/interfaces/AnimationEffectTiming/direction.html @@ -31,13 +31,13 @@ const div = createDiv(t); const anim = div.animate(null, { duration: 10000, direction: 'normal' }); anim.currentTime = 7000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress before updating direction'); anim.effect.timing.direction = 'reverse'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress after updating direction'); }, 'Can be changed from \'normal\' to \'reverse\' while in progress'); test(t => { @@ -78,13 +78,13 @@ duration: 10000, direction: 'normal' }); anim.currentTime = 17000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress before updating direction'); anim.effect.timing.direction = 'alternate'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress after updating direction'); }, 'Can be changed from \'normal\' to \'alternate\' while in progress'); test(t => { @@ -94,13 +94,13 @@ duration: 10000, direction: 'alternate' }); anim.currentTime = 17000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress before updating direction'); anim.effect.timing.direction = 'alternate-reverse'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress after updating direction'); }, 'Can be changed from \'alternate\' to \'alternate-reverse\' while in' + ' progress'); diff --git a/web-animations/interfaces/AnimationEffectTiming/duration.html b/web-animations/interfaces/AnimationEffectTiming/duration.html index 9caa0e36e05d03..42913f552dd40b 100644 --- a/web-animations/interfaces/AnimationEffectTiming/duration.html +++ b/web-animations/interfaces/AnimationEffectTiming/duration.html @@ -19,10 +19,10 @@ const div = createDiv(t); const anim = div.animate({ opacity: [ 0, 1 ] }, 2000); anim.effect.timing.duration = 123.45; - assert_times_equal(anim.effect.timing.duration, 123.45, - 'set duration 123.45'); - assert_times_equal(anim.effect.getComputedTiming().duration, 123.45, - 'getComputedTiming() after set duration 123.45'); + assert_time_equals_literal(anim.effect.timing.duration, 123.45, + 'set duration 123.45'); + assert_time_equals_literal(anim.effect.getComputedTiming().duration, 123.45, + 'getComputedTiming() after set duration 123.45'); }, 'Can be set to a double value'); test(t => { @@ -176,8 +176,8 @@ assert_equals(anim.effect.getComputedTiming().progress, 1, 'progress when animation is finished'); anim.effect.timing.duration *= 2; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5, - 'progress after doubling the duration'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5, + 'progress after doubling the duration'); anim.effect.timing.duration = 0; assert_equals(anim.effect.getComputedTiming().progress, 1, 'progress after setting duration to zero'); diff --git a/web-animations/interfaces/AnimationEffectTiming/endDelay.html b/web-animations/interfaces/AnimationEffectTiming/endDelay.html index b6793edaed5b1b..3062c8c1565d4d 100644 --- a/web-animations/interfaces/AnimationEffectTiming/endDelay.html +++ b/web-animations/interfaces/AnimationEffectTiming/endDelay.html @@ -19,10 +19,10 @@ const div = createDiv(t); const anim = div.animate({ opacity: [ 0, 1 ] }, 2000); anim.effect.timing.endDelay = 123.45; - assert_times_equal(anim.effect.timing.endDelay, 123.45, - 'set endDelay 123.45'); - assert_times_equal(anim.effect.getComputedTiming().endDelay, 123.45, - 'getComputedTiming() after set endDelay 123.45'); + assert_time_equals_literal(anim.effect.timing.endDelay, 123.45, + 'set endDelay 123.45'); + assert_time_equals_literal(anim.effect.getComputedTiming().endDelay, 123.45, + 'getComputedTiming() after set endDelay 123.45'); }, 'Can be set to a positive number'); test(t => { diff --git a/web-animations/interfaces/AnimationEffectTiming/iterationStart.html b/web-animations/interfaces/AnimationEffectTiming/iterationStart.html index 5521f1e85940b9..73bc4810da1958 100644 --- a/web-animations/interfaces/AnimationEffectTiming/iterationStart.html +++ b/web-animations/interfaces/AnimationEffectTiming/iterationStart.html @@ -24,7 +24,7 @@ duration: 100, delay: 1 }); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Changing the value updates computed timing when backwards-filling'); @@ -37,7 +37,7 @@ duration: 100, delay: 0 }); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Changing the value updates computed timing during the active phase'); @@ -51,7 +51,7 @@ delay: 0 }); anim.finish(); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 3); }, 'Changing the value updates computed timing when forwards-filling'); diff --git a/web-animations/interfaces/AnimationEffectTiming/iterations.html b/web-animations/interfaces/AnimationEffectTiming/iterations.html index 32390626463516..3bfaf8e9920d18 100644 --- a/web-animations/interfaces/AnimationEffectTiming/iterations.html +++ b/web-animations/interfaces/AnimationEffectTiming/iterations.html @@ -70,10 +70,12 @@ anim.effect.timing.iterations = 2; - assert_times_equal(anim.effect.getComputedTiming().progress, 0, - 'progress after adding an iteration'); - assert_times_equal(anim.effect.getComputedTiming().currentIteration, 1, - 'current iteration after adding an iteration'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, + 0, + 'progress after adding an iteration'); + assert_time_equals_literal(anim.effect.getComputedTiming().currentIteration, + 1, + 'current iteration after adding an iteration'); anim.effect.timing.iterations = 0; diff --git a/web-animations/testcommon.js b/web-animations/testcommon.js index 51b84dd3e534ea..be3827fd5d8e54 100644 --- a/web-animations/testcommon.js +++ b/web-animations/testcommon.js @@ -21,10 +21,18 @@ const TIME_PRECISION = 0.0005; // ms // times based on their precision requirements. if (!window.assert_times_equal) { window.assert_times_equal = (actual, expected, description) => { - assert_approx_equals(actual, expected, TIME_PRECISION, description); + assert_approx_equals(actual, expected, TIME_PRECISION * 2, description); }; } +// Allow implementations to substitute an alternative method for comparing +// a time value based on its precision requirements with a fixed value. +if (!window.assert_time_equals_literal) { + window.assert_time_equals_literal = (actual, expected, description) => { + assert_approx_equals(actual, expected, TIME_PRECISION, description); + } +} + // creates div element, appends it to the document body and // removes the created element during test cleanup function createDiv(test, doc) { diff --git a/web-animations/timing-model/animation-effects/active-time.html b/web-animations/timing-model/animation-effects/active-time.html index 3e3b528d534b10..a2feb2323c3308 100644 --- a/web-animations/timing-model/animation-effects/active-time.html +++ b/web-animations/timing-model/animation-effects/active-time.html @@ -25,19 +25,19 @@ test(t => { const anim = createDiv(t).animate(null, 1000); anim.currentTime = 500; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and no start delay is the local time'); test(t => { const anim = createDiv(t).animate(null, { duration: 1000, delay: 500 }); anim.currentTime = 1000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and positive start delay is the local time' + ' minus the start delay'); test(t => { const anim = createDiv(t).animate(null, { duration: 1000, delay: -500 }); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and negative start delay is the local time' + ' minus the start delay'); @@ -58,7 +58,7 @@ fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with forwards fill is the active duration'); test(t => { @@ -79,7 +79,7 @@ fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with forwards fill and positive end delay' + ' is the active duration'); @@ -91,7 +91,7 @@ fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 1); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in after phase with forwards fill and negative end delay' + ' is the active duration + end delay'); @@ -127,7 +127,7 @@ fill: 'both' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with \'both\' fill is the active duration'); test(t => { diff --git a/web-animations/timing-model/animations/current-time.html b/web-animations/timing-model/animations/current-time.html index d2f5075d1b25fa..08f90d9f0c1cbd 100644 --- a/web-animations/timing-model/animations/current-time.html +++ b/web-animations/timing-model/animations/current-time.html @@ -68,7 +68,7 @@ return animation.ready.then(() => waitForAnimationFrames(1)) .then(() => { - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); }); }, 'The current time does not progress if playback rate is 0'); diff --git a/web-animations/timing-model/animations/playing-an-animation.html b/web-animations/timing-model/animations/playing-an-animation.html index 2beed475e7ec41..1064192051442e 100644 --- a/web-animations/timing-model/animations/playing-an-animation.html +++ b/web-animations/timing-model/animations/playing-an-animation.html @@ -14,26 +14,26 @@ test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.currentTime = 1 * MS_PER_SEC; - assert_times_equal(animation.currentTime, 1 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 1 * MS_PER_SEC); animation.play(); - assert_times_equal(animation.currentTime, 1 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 1 * MS_PER_SEC); }, 'Playing a running animation leaves the current time unchanged'); test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.finish(); - assert_times_equal(animation.currentTime, 100 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); animation.play(); - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); }, 'Playing a finished animation seeks back to the start'); test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.playbackRate = -1; animation.currentTime = 0; - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); animation.play(); - assert_times_equal(animation.currentTime, 100 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); }, 'Playing a finished and reversed animation seeks to end'); test(t => { diff --git a/web-animations/timing-model/animations/set-the-animation-start-time.html b/web-animations/timing-model/animations/set-the-animation-start-time.html index 1526be05766edb..d2a311d4dd4019 100644 --- a/web-animations/timing-model/animations/set-the-animation-start-time.html +++ b/web-animations/timing-model/animations/set-the-animation-start-time.html @@ -80,9 +80,9 @@ // If we set the start time, however, we should clear the hold time. animation.startTime = document.timeline.currentTime - 2000; - assert_times_equal(animation.currentTime, 2000, - 'The current time is calculated from the start time,' - + ' not the hold time'); + assert_time_equals_literal(animation.currentTime, 2000, + 'The current time is calculated from the start' + + ' time, not the hold time'); // Sanity check assert_equals(animation.playState, 'running', @@ -99,13 +99,14 @@ // are resolved). animation.startTime = document.timeline.currentTime - 1000; assert_equals(animation.playState, 'running'); - assert_times_equal(animation.currentTime, 1000, - 'Current time is resolved for a running animation') + assert_time_equals_literal(animation.currentTime, 1000, + 'Current time is resolved for a running animation'); // Clear start time animation.startTime = null; - assert_times_equal(animation.currentTime, 1000, - 'Hold time is set after start time is made unresolved'); + assert_time_equals_literal(animation.currentTime, 1000, + 'Hold time is set after start time is made' + + ' unresolved'); assert_equals(animation.playState, 'paused', 'Animation reports it is paused after setting an unresolved' + ' start time'); diff --git a/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html b/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html index 8a4421309b9eda..24f201d550c469 100644 --- a/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html +++ b/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html @@ -26,7 +26,7 @@ animation.timeline = document.timeline; assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 50 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); }, 'After setting timeline on paused animation it is still paused'); test(t => { @@ -39,7 +39,7 @@ animation.timeline = document.timeline; assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 200 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 200 * MS_PER_SEC); }, 'After setting timeline on animation paused outside active interval' + ' it is still paused'); @@ -141,7 +141,7 @@ assert_false(animation.pending); assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 50 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); }, 'After clearing timeline on paused animation it is still paused'); test(t => {