From e2ba0811a8cadc14ace76392129f801a3e624c98 Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 16 Jan 2018 22:04:25 +0000 Subject: [PATCH 01/48] Run one chunk of tests in firefox on push --- .taskcluster.yml | 27 +++++++++++++++++++++++++++ tools/ci/ci_taskcluster.ci | 4 ++++ 2 files changed, 31 insertions(+) create mode 100644 .taskcluster.yml create mode 100644 tools/ci/ci_taskcluster.ci diff --git a/.taskcluster.yml b/.taskcluster.yml new file mode 100644 index 00000000000000..ad38a865fe4dd7 --- /dev/null +++ b/.taskcluster.yml @@ -0,0 +1,27 @@ +version: 0 +tasks: + - provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' + extra: + github: + events: + - push + branches: + - master + payload: + maxRunTime: 3600 + image: python + command: + - /bin/bash + - '--login' + - '-c' + - >- + git clone {{event.head.repo.url}} repo && cd repo && git config + advice.detachedHead false && git checkout {{event.head.sha}} && + tools/ci/ci_taskcluster.sh firefox testharness 1 12 + metadata: + name: 'firefox-nightly-testharness-1' + description: '' + owner: '{{ event.head.user.email }}' + source: '{{ event.head.repo.url }}' +allowPullRequests: collaborators diff --git a/tools/ci/ci_taskcluster.ci b/tools/ci/ci_taskcluster.ci new file mode 100644 index 00000000000000..871534b372f556 --- /dev/null +++ b/tools/ci/ci_taskcluster.ci @@ -0,0 +1,4 @@ +#!/bin/bash + +pip install virtualenv +./wpt run $1 --log-tbpl=- --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 From 74134e15df53c373fdfacb36b377d4062297e0dd Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 16 Jan 2018 22:16:32 +0000 Subject: [PATCH 02/48] Fixup taskcluster --- .taskcluster.yml | 2 +- tools/ci/{ci_taskcluster.ci => ci_taskcluster.sh} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename tools/ci/{ci_taskcluster.ci => ci_taskcluster.sh} (100%) mode change 100644 => 100755 diff --git a/.taskcluster.yml b/.taskcluster.yml index ad38a865fe4dd7..d4a60c099740c6 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -18,7 +18,7 @@ tasks: - >- git clone {{event.head.repo.url}} repo && cd repo && git config advice.detachedHead false && git checkout {{event.head.sha}} && - tools/ci/ci_taskcluster.sh firefox testharness 1 12 + ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 metadata: name: 'firefox-nightly-testharness-1' description: '' diff --git a/tools/ci/ci_taskcluster.ci b/tools/ci/ci_taskcluster.sh old mode 100644 new mode 100755 similarity index 100% rename from tools/ci/ci_taskcluster.ci rename to tools/ci/ci_taskcluster.sh From 46cb5e8c446eb3fd5623ec7263bca8b4a8aa4e2a Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 16 Jan 2018 22:23:26 +0000 Subject: [PATCH 03/48] Force python2 --- tools/ci/ci_taskcluster.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 871534b372f556..4093a094f2fa9e 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,4 @@ #!/bin/bash pip install virtualenv -./wpt run $1 --log-tbpl=- --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 +python2 wpt run $1 --log-tbpl=- --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 From 8e3d51be16725f49cd1a80f804bddbe4dd9b3c19 Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 16 Jan 2018 22:33:03 +0000 Subject: [PATCH 04/48] fixup! Force python2 --- tools/ci/ci_taskcluster.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 4093a094f2fa9e..307971a83c06f5 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,4 @@ #!/bin/bash -pip install virtualenv -python2 wpt run $1 --log-tbpl=- --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 +pip2 install virtualenv +python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 From 439e78bea09b17be75de7f5b4a4d745a005f0245 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 10:50:14 +0000 Subject: [PATCH 05/48] Increase logging --- tools/ci/ci_taskcluster.sh | 2 +- tools/wpt/utils.py | 2 +- tools/wpt/wpt.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 307971a83c06f5..650b17d8f2dc8a 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,4 @@ #!/bin/bash -pip2 install virtualenv +pip install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 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/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] From a154d54ff5a938de3176883691ad8ad0ecfcd2f4 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 10:56:05 +0000 Subject: [PATCH 06/48] Increase logging --- tools/wpt/virtualenv.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/wpt/virtualenv.py b/tools/wpt/virtualenv.py index 8f36aa93585ffd..d6b606a2a36ac1 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 @@ -38,7 +39,9 @@ def pip_path(self): def activate(self): path = os.path.join(self.bin_path, "activate_this.py") + logger.info("Activating virtualenv %s" % path) execfile(path, {"__file__": path}) + logger.info(sys.path) def start(self): if not self.exists: From 2a9df579b291fc63f6a29115e3d855899a660279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Tue, 16 Jan 2018 23:19:35 +0000 Subject: [PATCH 07/48] Don't allow fallback alignment in place-content shorthand. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430622 gecko-commit: 2ea467872d7fcd3dbb31fcf881e4147b6dd6bebe gecko-integration-branch: autoland gecko-reviewers: xidorn, mats --- .../place-content-shorthand-007-ref.html | 22 +++++++++++++++++++ .../place-content-shorthand-007.html | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 css/css-align/content-distribution/place-content-shorthand-007-ref.html create mode 100644 css/css-align/content-distribution/place-content-shorthand-007.html 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. +
From 2041b3b1e1fdbe3182104aa0a68c440a4abe55bb Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 17 Jan 2018 06:14:41 +0000 Subject: [PATCH 08/48] Accept null for body param in constructor of Response. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1303025 gecko-commit: 62f5c4a3682381134b607d359824b7605ec15156 gecko-integration-branch: autoland gecko-reviewers: bkelly --- fetch/api/response/response-init-002.html | 5 +++++ 1 file changed, 5 insertions(+) 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"); + From 104e3e0399a7bd31e521b0b2b3340bb1b7c52b95 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:03:01 +0000 Subject: [PATCH 09/48] Don't prompt for install --- tools/ci/ci_taskcluster.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 650b17d8f2dc8a..d91e4eae682e30 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,4 @@ #!/bin/bash pip install virtualenv -python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 +python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y From 3582712af4c4df7a169c73c3806962d0115ab6eb Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:03:14 +0000 Subject: [PATCH 10/48] Increase logging --- tools/wpt/virtualenv.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/wpt/virtualenv.py b/tools/wpt/virtualenv.py index d6b606a2a36ac1..a0573c0335d9b7 100644 --- a/tools/wpt/virtualenv.py +++ b/tools/wpt/virtualenv.py @@ -40,8 +40,13 @@ 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: From 11f40d31dc7e50ee115b1740c99b32f5510d3b82 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:15:09 +0000 Subject: [PATCH 11/48] More logging --- tools/wpt/virtualenv.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/wpt/virtualenv.py b/tools/wpt/virtualenv.py index a0573c0335d9b7..7d361d8d70f911 100644 --- a/tools/wpt/virtualenv.py +++ b/tools/wpt/virtualenv.py @@ -54,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)) From 3bd70ad19d1ec22e0b620c89d7d783532310fb1d Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:19:34 +0000 Subject: [PATCH 12/48] Use sys.executable for virtualenv --- tools/wpt/virtualenv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/wpt/virtualenv.py b/tools/wpt/virtualenv.py index 7d361d8d70f911..6abaec5f875811 100644 --- a/tools/wpt/virtualenv.py +++ b/tools/wpt/virtualenv.py @@ -22,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): From 280b22b90765f9b2bca0805624de1c2e4c677ef4 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:23:10 +0000 Subject: [PATCH 13/48] Install browser in TC --- tools/ci/ci_taskcluster.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index d91e4eae682e30..e81ae97ea6c8fc 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,4 @@ #!/bin/bash pip install virtualenv -python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y +python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 853387ea91a39fc712487f0692e609291ce06db1 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:44:56 +0000 Subject: [PATCH 14/48] Install dependencies --- tools/ci/ci_taskcluster.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index e81ae97ea6c8fc..05248a33de40e7 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,4 +1,7 @@ #!/bin/bash -pip install virtualenv +# To make sure we have all the deps installed +sudo apt install firefox + +pip -q install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 4953343aa47f23ad27914b36b39070cff1042518 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 11:52:53 +0000 Subject: [PATCH 15/48] fixup! Install dependencies --- tools/ci/ci_taskcluster.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 05248a33de40e7..019b75d3fa37dd 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,7 +1,9 @@ #!/bin/bash +set -xe + # To make sure we have all the deps installed -sudo apt install firefox +apt install firefox pip -q install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 5f036d1059ef92a9845e98a0504d6c5b538c9e2e Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 12:51:00 +0000 Subject: [PATCH 16/48] apt udpate --- tools/ci/ci_taskcluster.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 019b75d3fa37dd..1a17207d16c760 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -3,6 +3,8 @@ set -xe # To make sure we have all the deps installed +apt update +apt list apt install firefox pip -q install virtualenv From dddaf142d24cd0800ff31965461be5f867666060 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 13:07:46 +0000 Subject: [PATCH 17/48] Use apt-get with --yes --- tools/ci/ci_taskcluster.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 1a17207d16c760..6016dd0563af04 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -3,9 +3,8 @@ set -xe # To make sure we have all the deps installed -apt update -apt list -apt install firefox +apt-get --yes update +apt-get --yes install firefox pip -q install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 33dceb922829ad78eeba361515824b505776f90f Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 13:28:36 +0000 Subject: [PATCH 18/48] Ttry using a taskcluster/desktop-test image --- .taskcluster.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index d4a60c099740c6..87528656495a2e 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,7 +10,7 @@ tasks: - master payload: maxRunTime: 3600 - image: python + image: taskcluster/desktop-test command: - /bin/bash - '--login' From e1209a0e96be6f0d1a6db7278591d36ca5c0f4ed Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 13:37:08 +0000 Subject: [PATCH 19/48] Specify image version --- .taskcluster.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index 87528656495a2e..a824c58a4ec78b 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,7 +10,7 @@ tasks: - master payload: maxRunTime: 3600 - image: taskcluster/desktop-test + image: taskcluster/desktop-test:0.5.7 command: - /bin/bash - '--login' From 0ca79a8224b46dfe1df8f2955581b041be846b70 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 14:21:23 +0000 Subject: [PATCH 20/48] Use more modern image --- .taskcluster.yml | 2 +- tools/ci/ci_taskcluster.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index a824c58a4ec78b..96de583881584a 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,7 +10,7 @@ tasks: - master payload: maxRunTime: 3600 - image: taskcluster/desktop-test:0.5.7 + image: taskcluster/ubuntu1604-test:0.1.3 command: - /bin/bash - '--login' diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 6016dd0563af04..88dd397d012187 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -4,7 +4,7 @@ set -xe # To make sure we have all the deps installed apt-get --yes update -apt-get --yes install firefox +apt-get --yes upgrade pip -q install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 08864cb52490e9f20ce372dbc27e5e9123d60184 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 17 Jan 2018 14:30:43 +0000 Subject: [PATCH 21/48] Don't update --- tools/ci/ci_taskcluster.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index 88dd397d012187..b78e5a782ae82b 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -3,8 +3,8 @@ set -xe # To make sure we have all the deps installed -apt-get --yes update -apt-get --yes upgrade +#apt-get --yes update +#apt-get --yes upgrade pip -q install virtualenv python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser From 51db1b732976c29243156e8db4483929f3215aef Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 14:16:48 +0000 Subject: [PATCH 22/48] USe custom dockerfile with taskcluster --- .taskcluster.yml | 7 ++-- tools/ci/.bashrc | 3 ++ tools/ci/Dockerfile | 68 ++++++++++++++++++++++++++++++++++++++ tools/ci/ci_taskcluster.sh | 13 +++----- tools/ci/start.sh | 35 ++++++++++++++++++++ 5 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 tools/ci/.bashrc create mode 100644 tools/ci/Dockerfile create mode 100755 tools/ci/start.sh diff --git a/.taskcluster.yml b/.taskcluster.yml index 96de583881584a..3f39c4077985c4 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,14 +10,15 @@ tasks: - master payload: maxRunTime: 3600 - image: taskcluster/ubuntu1604-test:0.1.3 + image: harjgam/web-platform-tests:0.1 command: - /bin/bash - '--login' - '-c' - >- - git clone {{event.head.repo.url}} repo && cd repo && git config - advice.detachedHead false && git checkout {{event.head.sha}} && + /usr/bin/shart.sh && + cd /home/test/web-platform-tests && + git checkout {{event.head.sha}} && ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 metadata: name: 'firefox-nightly-testharness-1' diff --git a/tools/ci/.bashrc b/tools/ci/.bashrc new file mode 100644 index 00000000000000..c08adf6326d953 --- /dev/null +++ b/tools/ci/.bashrc @@ -0,0 +1,3 @@ +function xvfb_start() { + 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..7629cb837db0f4 --- /dev/null +++ b/tools/ci/Dockerfile @@ -0,0 +1,68 @@ +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 \ + 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 +# TODO: just add the Google Chrome repository here + +RUN apt-get -qqy install \ + firefox \ + chromium-browser \ + libnss3 + +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 + +ENV DBUS_SESSION_BUS_ADDRESS=/dev/null + +COPY start.sh /usr/bin/start.sh + +USER test + +WORKDIR /home/test + +COPY .bashrc /home/test/.bashrc + +# Remove information on how to use sudo on login +RUN sudo echo "" + +RUN git clone https://github.com/w3c/web-platform-tests.git + +ENTRYPOINT ["/usr/bin/start.sh"] + +CMD ["--shell"] \ No newline at end of file diff --git a/tools/ci/ci_taskcluster.sh b/tools/ci/ci_taskcluster.sh index b78e5a782ae82b..55e8b9df205f21 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,10 +1,7 @@ #!/bin/bash -set -xe - -# To make sure we have all the deps installed -#apt-get --yes update -#apt-get --yes upgrade - -pip -q install virtualenv -python2 wpt run $1 --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser +if [ $1 == "firefox" ]; then + ./wpt run firefox --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser +elif [ $1 == "chrome" ]; then + ./wpt run chrome --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y +fi diff --git a/tools/ci/start.sh b/tools/ci/start.sh new file mode 100755 index 00000000000000..27219e15c66ed9 --- /dev/null +++ b/tools/ci/start.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH" + +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 + +# Install Chome unstable +deb_archive=google-chrome-unstable_current_amd64.deb +wget https://dl.google.com/linux/direct/$deb_archive + +if sudo update-alternatives --list google-chrome; then + sudo update-alternatives --remove-all google-chrome +fi + +# 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 install --fix-broken + sudo dpkg --install $deb_archive +fi + +if [ "$1" == "--shell" ]; then +do + /bin/bash --login +fi From 468818b8bfd0be75afca3c867ff1a80ee9a76904 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 14:56:47 +0000 Subject: [PATCH 23/48] Update start script --- tools/ci/start.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/ci/start.sh b/tools/ci/start.sh index 27219e15c66ed9..a8105c0d9bbca6 100755 --- a/tools/ci/start.sh +++ b/tools/ci/start.sh @@ -2,13 +2,14 @@ export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH" -sudo sh -c 'echo "127.0.0.1 web-platform.test +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' +0.0.0.0 nonexistent-origin.web-platform.test" >> /etc/hosts' cd web-platform-tests git pull @@ -25,7 +26,7 @@ fi # 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 install --fix-broken + sudo apt-get -y install --fix-broken sudo dpkg --install $deb_archive fi From 0a0690628c08673633f4c71f32c5564594e2aa76 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 15:10:58 +0000 Subject: [PATCH 24/48] Fix syntax error in start script, use a shallow clone by default --- tools/ci/Dockerfile | 2 +- tools/ci/start.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/ci/Dockerfile b/tools/ci/Dockerfile index 7629cb837db0f4..b554b23161a429 100644 --- a/tools/ci/Dockerfile +++ b/tools/ci/Dockerfile @@ -61,7 +61,7 @@ COPY .bashrc /home/test/.bashrc # Remove information on how to use sudo on login RUN sudo echo "" -RUN git clone https://github.com/w3c/web-platform-tests.git +RUN git clone --depth=1 https://github.com/w3c/web-platform-tests.git ENTRYPOINT ["/usr/bin/start.sh"] diff --git a/tools/ci/start.sh b/tools/ci/start.sh index a8105c0d9bbca6..105447d6dda126 100755 --- a/tools/ci/start.sh +++ b/tools/ci/start.sh @@ -31,6 +31,5 @@ if ! sudo dpkg --install $deb_archive; then fi if [ "$1" == "--shell" ]; then -do /bin/bash --login fi From 9f5761b8db74f67978975000b6ab2039c9476aa8 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 15:22:14 +0000 Subject: [PATCH 25/48] Bump image version --- .taskcluster.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index 3f39c4077985c4..d45f58ee42cb68 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,7 +10,7 @@ tasks: - master payload: maxRunTime: 3600 - image: harjgam/web-platform-tests:0.1 + image: harjgam/web-platform-tests:0.2 command: - /bin/bash - '--login' From faeb7b7e26e45452174e7f5f184de7649fafab5d Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 15:41:10 +0000 Subject: [PATCH 26/48] Remove ENTRYPOINT --- tools/ci/Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/ci/Dockerfile b/tools/ci/Dockerfile index b554b23161a429..b8a9c986b268a9 100644 --- a/tools/ci/Dockerfile +++ b/tools/ci/Dockerfile @@ -62,7 +62,3 @@ COPY .bashrc /home/test/.bashrc RUN sudo echo "" RUN git clone --depth=1 https://github.com/w3c/web-platform-tests.git - -ENTRYPOINT ["/usr/bin/start.sh"] - -CMD ["--shell"] \ No newline at end of file From 1d25f7140b77dfff03f7f5dc8fb8726015a69c34 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 18:25:56 +0000 Subject: [PATCH 27/48] Update docker image --- .taskcluster.yml | 6 +++--- tools/ci/Dockerfile | 21 ++++++++++++++++----- tools/ci/start.sh | 8 -------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index d45f58ee42cb68..a192f0f8ccde5d 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,18 +10,18 @@ tasks: - master payload: maxRunTime: 3600 - image: harjgam/web-platform-tests:0.2 + image: harjgam/web-platform-tests:0.4 command: - /bin/bash - '--login' - '-c' - >- - /usr/bin/shart.sh && + /usr/bin/start.sh && cd /home/test/web-platform-tests && git checkout {{event.head.sha}} && ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 metadata: - name: 'firefox-nightly-testharness-1' + name: 'wpt-firefox-nightly-testharness-1' description: '' owner: '{{ event.head.user.email }}' source: '{{ event.head.repo.url }}' diff --git a/tools/ci/Dockerfile b/tools/ci/Dockerfile index b8a9c986b268a9..4e882eafd1a4ac 100644 --- a/tools/ci/Dockerfile +++ b/tools/ci/Dockerfile @@ -21,13 +21,20 @@ RUN apt-get -qqy update \ xvfb # Installing just the deps of firefox and chrome is moderately tricky, so -# just install the default versions of them -# TODO: just add the Google Chrome repository here +# 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 + libnss3 \ + fonts-liberation \ + indicator-application \ + libappindicator1 \ + libappindicator3-1 \ + libdbusmenu-gtk3-4 \ + libindicator3-7 \ + libindicator7 RUN pip install --upgrade pip RUN pip install virtualenv @@ -50,15 +57,19 @@ ENV DISPLAY :99.0 ENV DBUS_SESSION_BUS_ADDRESS=/dev/null -COPY start.sh /usr/bin/start.sh - 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 \ No newline at end of file diff --git a/tools/ci/start.sh b/tools/ci/start.sh index 105447d6dda126..fe3ad7dac5db70 100755 --- a/tools/ci/start.sh +++ b/tools/ci/start.sh @@ -18,10 +18,6 @@ git pull deb_archive=google-chrome-unstable_current_amd64.deb wget https://dl.google.com/linux/direct/$deb_archive -if sudo update-alternatives --list google-chrome; then - sudo update-alternatives --remove-all google-chrome -fi - # 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. @@ -29,7 +25,3 @@ if ! sudo dpkg --install $deb_archive; then sudo apt-get -y install --fix-broken sudo dpkg --install $deb_archive fi - -if [ "$1" == "--shell" ]; then - /bin/bash --login -fi From 765ea6658335331e670ec214770780252b7c3476 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 18:29:43 +0000 Subject: [PATCH 28/48] Update path --- .taskcluster.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index a192f0f8ccde5d..063fd0775a4cca 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -16,7 +16,7 @@ tasks: - '--login' - '-c' - >- - /usr/bin/start.sh && + ~/start.sh && cd /home/test/web-platform-tests && git checkout {{event.head.sha}} && ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 From 484fe22520a09ffd4a8038722511416d3d87b8d0 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 22 Jan 2018 18:55:19 +0000 Subject: [PATCH 29/48] Ensure we have commits from the correct repo --- .taskcluster.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.taskcluster.yml b/.taskcluster.yml index 063fd0775a4cca..a8c4798d50be67 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -18,6 +18,8 @@ tasks: - >- ~/start.sh && cd /home/test/web-platform-tests && + git fetch {{event.head.repo.url}} && + git config advice.detachedHead false && git checkout {{event.head.sha}} && ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 metadata: From 7bc0a99f73de8394308c219511b583f2a77031ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 22 Jan 2018 13:13:31 +0000 Subject: [PATCH 30/48] Fix slotted invalidation. This is a partial revert of https://github.com/servo/servo/commit/ce1d8cd232dfbc9e0a52f9467ba2bc209087ea63 If you're in a shadow tree, you may not be slotted but you still need to look at the slotted rules, since a could be a descendant of yours. Just use the same invalidation map everywhere, and remove complexity. This means that we can do some extra work while trying to gather invalidation if there are slotted rules, but I don't think it's a problem. The test is ported from https://cs.chromium.org/chromium/src/third_party/WebKit/LayoutTests/fast/css/invalidation/slotted.html?l=1&rcl=58d68fdf783d7edde1c82a642e037464861f2787 Curiously, Blink fails the test as written, presumably because they don't flush styles from getComputedStyle correctly (in their test they do via updateStyleAndReturnAffectedElementCount), due to s not being in the flat tree in their implementation. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1429846 gecko-commit: bec4537b2efd4f8381c5f398c71bc0f09d4da981 gecko-integration-branch: central gecko-reviewers: heycam --- css/css-scoping/slotted-invalidation.html | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 css/css-scoping/slotted-invalidation.html 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() + + + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ From d99985d0b818e3920377582277918aa8f6fe795d Mon Sep 17 00:00:00 2001 From: Edgar Chen Date: Mon, 22 Jan 2018 13:13:47 +0000 Subject: [PATCH 31/48] Fix attributeChangedCallback isn't fired with correct newValue when the attribute value is an empty string; bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430034 gecko-commit: ec468ee9dfc697960b74d83b6889223e9be8de95 gecko-integration-branch: central gecko-reviewers: smaug --- .../attribute-changed-callback.html | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) 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 @@
+ From 53a1aedab673ac37e2e7e032658800920ea10d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 22 Jan 2018 17:49:59 +0000 Subject: [PATCH 32/48] Tests for calc() on font-size on various situations. It makes no sense to pass a custom base size of zero in presence of rem, ex, or ch units. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1431031 gecko-commit: a984a3218ffe8ebaad26bff890bc25f00612d859 gecko-integration-branch: central gecko-reviewers: Manishearth --- css/css-values/calc-ch-ex-lang-ref.html | 12 ++++++++++++ css/css-values/calc-ch-ex-lang.html | 16 ++++++++++++++++ css/css-values/calc-rem-lang-ref.html | 6 ++++++ css/css-values/calc-rem-lang.html | 17 +++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 css/css-values/calc-ch-ex-lang-ref.html create mode 100644 css/css-values/calc-ch-ex-lang.html create mode 100644 css/css-values/calc-rem-lang-ref.html create mode 100644 css/css-values/calc-rem-lang.html 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.

+
+ From 16cab564ecbde46902f32c07a7972d6aadcfa4e8 Mon Sep 17 00:00:00 2001 From: Edgar Chen Date: Tue, 16 Jan 2018 23:09:01 +0000 Subject: [PATCH 33/48] Add WPT test for the attributeChangedCallback which is triggered from parser; bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1425079 gecko-commit: e862a06e4337d21d77adbd8eee3ddde485182ee2 gecko-integration-branch: central gecko-reviewers: smaug --- .../parser-sets-attributes-and-children.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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'); + From 27d28570b073780f32bb403aa236a3fce6cdf937 Mon Sep 17 00:00:00 2001 From: Hiroyuki Ikezoe Date: Tue, 23 Jan 2018 00:34:42 +0000 Subject: [PATCH 34/48] Introduce assert_time_equals_literal and use it. This assertion is supposed to be used where the first argument has a tolerance but the second argument doesn't have such tolerance. Whereas assert_times_equal() is supposed to be used for the case both arguments have the same tolerance, actually it hasn't, it will be fixed in a subsequent patch in this patch series. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430654 gecko-commit: edbac2302f907df4fca6aea3843bd033a1a1bb89 gecko-integration-branch: central gecko-reviewers: birtles --- web-animations/README.md | 17 +++++++++---- .../AnimationEffectTiming/direction.html | 24 +++++++++---------- .../AnimationEffectTiming/duration.html | 12 +++++----- .../AnimationEffectTiming/endDelay.html | 8 +++---- .../AnimationEffectTiming/iterationStart.html | 6 ++--- .../AnimationEffectTiming/iterations.html | 10 ++++---- web-animations/testcommon.js | 8 +++++++ .../animation-effects/active-time.html | 14 +++++------ .../timing-model/animations/current-time.html | 2 +- .../animations/playing-an-animation.html | 12 +++++----- .../set-the-animation-start-time.html | 15 ++++++------ .../set-the-timeline-of-an-animation.html | 6 ++--- 12 files changed, 77 insertions(+), 57 deletions(-) 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/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..1acb02ae59b6f3 100644 --- a/web-animations/testcommon.js +++ b/web-animations/testcommon.js @@ -25,6 +25,14 @@ if (!window.assert_times_equal) { }; } +// 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 => { From 04cfc8e8789865a22c5907becf2b54e3376d6be4 Mon Sep 17 00:00:00 2001 From: Hiroyuki Ikezoe Date: Tue, 23 Jan 2018 00:34:46 +0000 Subject: [PATCH 35/48] Double epsilon value for assert_times_equal. Since the function assumes that both of actual and expected values have the same precision requirements. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430654 gecko-commit: a226a272784c3ac44a6b93136111fb78f2f312e5 gecko-integration-branch: central gecko-reviewers: birtles --- web-animations/testcommon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-animations/testcommon.js b/web-animations/testcommon.js index 1acb02ae59b6f3..be3827fd5d8e54 100644 --- a/web-animations/testcommon.js +++ b/web-animations/testcommon.js @@ -21,7 +21,7 @@ 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); }; } From 18b20d14c98db5db288ed63b98079774f25726e8 Mon Sep 17 00:00:00 2001 From: Hiroyuki Ikezoe Date: Tue, 23 Jan 2018 00:34:50 +0000 Subject: [PATCH 36/48] Use assert_times_equal for comparing timing values. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430654 gecko-commit: 235797f7083a060ada86a217dc7c4e83d238f252 gecko-integration-branch: central gecko-reviewers: birtles --- web-animations/interfaces/Animation/playbackRate.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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 => { From ef92ae53b1e79e3da37e07f1b7118822dd95a40e Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 24 Jan 2018 21:01:45 +0000 Subject: [PATCH 37/48] update docker image --- .taskcluster.yml | 33 ++++++++++++++++++++++++++++++++- tools/ci/.bashrc | 1 + tools/ci/Dockerfile | 9 +++++---- tools/ci/ci_taskcluster.sh | 4 ++-- tools/ci/start.sh | 6 +++--- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index a8c4798d50be67..95948822bdc1e1 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -10,7 +10,7 @@ tasks: - master payload: maxRunTime: 3600 - image: harjgam/web-platform-tests:0.4 + image: harjgam/web-platform-tests:0.5 command: - /bin/bash - '--login' @@ -27,4 +27,35 @@ tasks: description: '' owner: '{{ event.head.user.email }}' source: '{{ event.head.repo.url }}' + artifacts: + public/results: + path: /home/test/artifacts + type: directory + - provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' + extra: + github: + events: + - push + branches: + - master + payload: + maxRunTime: 3600 + 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}} && + ./tools/ci/ci_taskcluster.sh chrome testharness 1 12 + metadata: + name: 'wpt-chrome-dev-testharness-1' + description: '' + owner: '{{ event.head.user.email }}' + source: '{{ event.head.repo.url }}' allowPullRequests: collaborators diff --git a/tools/ci/.bashrc b/tools/ci/.bashrc index c08adf6326d953..bbe03c489aa528 100644 --- a/tools/ci/.bashrc +++ b/tools/ci/.bashrc @@ -1,3 +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 index 4e882eafd1a4ac..28fdd78b3ec008 100644 --- a/tools/ci/Dockerfile +++ b/tools/ci/Dockerfile @@ -9,6 +9,7 @@ RUN apt-get -qqy update \ && apt-get -qqy install \ bzip2 \ ca-certificates \ + dbus-x11 \ git \ locales \ pulseaudio \ @@ -27,7 +28,7 @@ RUN apt-get -qqy update \ RUN apt-get -qqy install \ firefox \ chromium-browser \ - libnss3 \ + libnss3-tools \ fonts-liberation \ indicator-application \ libappindicator1 \ @@ -55,8 +56,6 @@ ENV SCREEN_HEIGHT 1024 ENV SCREEN_DEPTH 24 ENV DISPLAY :99.0 -ENV DBUS_SESSION_BUS_ADDRESS=/dev/null - USER test WORKDIR /home/test @@ -72,4 +71,6 @@ 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 \ No newline at end of file + 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 index 55e8b9df205f21..38c84628f15d53 100755 --- a/tools/ci/ci_taskcluster.sh +++ b/tools/ci/ci_taskcluster.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $1 == "firefox" ]; then - ./wpt run firefox --log-tbpl=- --log-tbpl-level=debug --log-wptreport=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y --install-browser + ./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=wpt_report.json --this-chunk=$3 --total-chunks=$4 --test-type=$2 -y + ./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/start.sh b/tools/ci/start.sh index fe3ad7dac5db70..f4adb90d7cb22e 100755 --- a/tools/ci/start.sh +++ b/tools/ci/start.sh @@ -1,7 +1,5 @@ #!/bin/bash -export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH" - sudo sh -c 'echo " 127.0.0.1 web-platform.test 127.0.0.1 www.web-platform.test @@ -12,7 +10,7 @@ sudo sh -c 'echo " 0.0.0.0 nonexistent-origin.web-platform.test" >> /etc/hosts' cd web-platform-tests -git pull +git pull --depth=1 # Install Chome unstable deb_archive=google-chrome-unstable_current_amd64.deb @@ -25,3 +23,5 @@ 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} & From 6c3dcca97ca4f1763c893d3a6295667b447cd3c3 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 24 Jan 2018 21:12:29 +0000 Subject: [PATCH 38/48] Remove attempt to upload artifacts --- .taskcluster.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index 95948822bdc1e1..359ad7f12bcc2c 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -27,10 +27,6 @@ tasks: description: '' owner: '{{ event.head.user.email }}' source: '{{ event.head.repo.url }}' - artifacts: - public/results: - path: /home/test/artifacts - type: directory - provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' extra: From cd1ed8e8e49fe63c6487f2d0db26950a2e6c01b0 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 24 Jan 2018 21:45:21 +0000 Subject: [PATCH 39/48] Upload artifacts and change wpt run exit code --- .taskcluster.yml | 4 ++++ tools/wpt/run.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index 359ad7f12bcc2c..aa8262615d7b7a 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -22,6 +22,10 @@ tasks: git config advice.detachedHead false && git checkout {{event.head.sha}} && ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 + artifacts: + public/results: + path: /home/test/artifacts + type: directory metadata: name: 'wpt-firefox-nightly-testharness-1' description: '' 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(): From 01b25397fefd14f1181234164592cae4b81d8f69 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 25 Jan 2018 11:14:44 +0000 Subject: [PATCH 40/48] Add code for generating a complete static taskgraph for Chrome and Forefox runs --- .taskcluster.yml | 746 +++++++++++++++++++++++++++++++++++++---- tools/ci/commands.json | 4 +- tools/ci/taskgraph.py | 121 +++++++ 3 files changed, 810 insertions(+), 61 deletions(-) create mode 100644 tools/ci/taskgraph.py diff --git a/.taskcluster.yml b/.taskcluster.yml index aa8262615d7b7a..f19874b8788245 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -1,61 +1,687 @@ -version: 0 -tasks: - - provisionerId: '{{ taskcluster.docker.provisionerId }}' - workerType: '{{ taskcluster.docker.workerType }}' - extra: - github: - events: - - push - branches: - - master - payload: - maxRunTime: 3600 - 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}} && - ./tools/ci/ci_taskcluster.sh firefox testharness 1 12 - artifacts: - public/results: - path: /home/test/artifacts - type: directory - metadata: - name: 'wpt-firefox-nightly-testharness-1' - description: '' - owner: '{{ event.head.user.email }}' - source: '{{ event.head.repo.url }}' - - provisionerId: '{{ taskcluster.docker.provisionerId }}' - workerType: '{{ taskcluster.docker.workerType }}' - extra: - github: - events: - - push - branches: - - master - payload: - maxRunTime: 3600 - 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}} && - ./tools/ci/ci_taskcluster.sh chrome testharness 1 12 - metadata: - name: 'wpt-chrome-dev-testharness-1' - description: '' - owner: '{{ event.head.user.email }}' - source: '{{ event.head.repo.url }}' allowPullRequests: collaborators +tasks: +- 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 1 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 2 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 3 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 4 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 5 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-chrome-dev-reftests-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 reftests 6 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + 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: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 1 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 2 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 3 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 4 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 5 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +- extra: + github: + branches: [master] + events: [push] + metadata: {description: '', name: wpt-firefox-nightly-reftests-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 reftests 6 6"] + image: harjgam/web-platform-tests:0.5 + maxRunTime: 3600 + provisionerId: '{{ taskcluster.docker.provisionerId }}' + workerType: '{{ taskcluster.docker.workerType }}' +version: 0 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/taskgraph.py b/tools/ci/taskgraph.py new file mode 100644 index 00000000000000..c87089ca251536 --- /dev/null +++ b/tools/ci/taskgraph.py @@ -0,0 +1,121 @@ +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": 3600, + "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}, + "reftests": {"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) + + From d2eb4e598d2b0434e649eaa01e2950b5d298ca9f Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 25 Jan 2018 11:52:52 +0000 Subject: [PATCH 41/48] Fix reftest type name --- .taskcluster.yml | 176 +++++++++++++++++++++--------------------- tools/ci/taskgraph.py | 3 +- 2 files changed, 89 insertions(+), 90 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index f19874b8788245..fed74f53010faa 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -4,7 +4,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-wdspec-1, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-1, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -13,7 +13,7 @@ tasks: \ 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"] + \ chrome reftest 1 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -22,7 +22,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-1, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-2, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -31,7 +31,7 @@ tasks: \ 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"] + \ chrome reftest 2 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -40,7 +40,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-2, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-3, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -49,7 +49,7 @@ tasks: \ 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"] + \ chrome reftest 3 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -58,7 +58,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-3, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-4, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -67,7 +67,7 @@ tasks: \ 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"] + \ chrome reftest 4 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -76,7 +76,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-4, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-5, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -85,7 +85,7 @@ tasks: \ 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"] + \ chrome reftest 5 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -94,7 +94,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-5, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-reftest-6, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -103,7 +103,7 @@ tasks: \ 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"] + \ chrome reftest 6 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -112,7 +112,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-6, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-wdspec-1, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -121,7 +121,7 @@ tasks: \ 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"] + \ chrome wdspec 1 1"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -130,7 +130,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-7, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-1, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -139,7 +139,7 @@ tasks: \ 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"] + \ chrome testharness 1 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -148,7 +148,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-8, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-2, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -157,7 +157,7 @@ tasks: \ 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"] + \ chrome testharness 2 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -166,7 +166,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-9, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-3, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -175,7 +175,7 @@ tasks: \ 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"] + \ chrome testharness 3 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -184,7 +184,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-10, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-4, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -193,7 +193,7 @@ tasks: \ 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"] + \ chrome testharness 4 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -202,7 +202,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-11, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-5, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -211,7 +211,7 @@ tasks: \ 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"] + \ chrome testharness 5 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -220,7 +220,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-testharness-12, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-6, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -229,7 +229,7 @@ tasks: \ 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"] + \ chrome testharness 6 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -238,7 +238,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-1, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-7, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -247,7 +247,7 @@ tasks: \ 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 reftests 1 6"] + \ chrome testharness 7 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -256,7 +256,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-2, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-8, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -265,7 +265,7 @@ tasks: \ 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 reftests 2 6"] + \ chrome testharness 8 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -274,7 +274,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-3, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-9, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -283,7 +283,7 @@ tasks: \ 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 reftests 3 6"] + \ chrome testharness 9 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -292,7 +292,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-4, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-10, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -301,7 +301,7 @@ tasks: \ 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 reftests 4 6"] + \ chrome testharness 10 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -310,7 +310,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-5, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-11, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -319,7 +319,7 @@ tasks: \ 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 reftests 5 6"] + \ chrome testharness 11 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -328,7 +328,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-chrome-dev-reftests-6, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-chrome-dev-testharness-12, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -337,7 +337,7 @@ tasks: \ 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 reftests 6 6"] + \ chrome testharness 12 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -346,7 +346,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-wdspec-1, owner: '{{ event.head.user.email + metadata: {description: '', name: wpt-firefox-nightly-reftest-1, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -355,7 +355,7 @@ tasks: \ 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"] + \ firefox reftest 1 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -364,8 +364,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-1, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -373,7 +373,7 @@ tasks: \ 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"] + \ firefox reftest 2 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -382,8 +382,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-2, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -391,7 +391,7 @@ tasks: \ 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"] + \ firefox reftest 3 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -400,8 +400,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-3, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -409,7 +409,7 @@ tasks: \ 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"] + \ firefox reftest 4 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -418,8 +418,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-4, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -427,7 +427,7 @@ tasks: \ 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"] + \ firefox reftest 5 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -436,8 +436,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-5, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -445,7 +445,7 @@ tasks: \ 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"] + \ firefox reftest 6 6"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -454,8 +454,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-6, owner: '{{ - event.head.user.email }}', source: '{{ event.head.repo.url }}'} + 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} @@ -463,7 +463,7 @@ tasks: \ 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"] + \ firefox wdspec 1 1"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -472,7 +472,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-7, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-1, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -481,7 +481,7 @@ tasks: \ 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"] + \ firefox testharness 1 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -490,7 +490,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-8, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-2, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -499,7 +499,7 @@ tasks: \ 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"] + \ firefox testharness 2 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -508,7 +508,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-9, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-3, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -517,7 +517,7 @@ tasks: \ 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"] + \ firefox testharness 3 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -526,7 +526,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-10, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-4, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -535,7 +535,7 @@ tasks: \ 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"] + \ firefox testharness 4 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -544,7 +544,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-11, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-5, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -553,7 +553,7 @@ tasks: \ 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"] + \ firefox testharness 5 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -562,7 +562,7 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-testharness-12, owner: '{{ + metadata: {description: '', name: wpt-firefox-nightly-testharness-6, owner: '{{ event.head.user.email }}', source: '{{ event.head.repo.url }}'} payload: artifacts: @@ -571,7 +571,7 @@ tasks: \ 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"] + \ firefox testharness 6 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -580,8 +580,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-1, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -589,7 +589,7 @@ tasks: \ 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 reftests 1 6"] + \ firefox testharness 7 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -598,8 +598,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-2, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -607,7 +607,7 @@ tasks: \ 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 reftests 2 6"] + \ firefox testharness 8 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -616,8 +616,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-3, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -625,7 +625,7 @@ tasks: \ 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 reftests 3 6"] + \ firefox testharness 9 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -634,8 +634,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-4, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -643,7 +643,7 @@ tasks: \ 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 reftests 4 6"] + \ firefox testharness 10 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -652,8 +652,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-5, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -661,7 +661,7 @@ tasks: \ 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 reftests 5 6"] + \ firefox testharness 11 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' @@ -670,8 +670,8 @@ tasks: github: branches: [master] events: [push] - metadata: {description: '', name: wpt-firefox-nightly-reftests-6, owner: '{{ event.head.user.email - }}', source: '{{ event.head.repo.url }}'} + 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} @@ -679,7 +679,7 @@ tasks: \ 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 reftests 6 6"] + \ firefox testharness 12 12"] image: harjgam/web-platform-tests:0.5 maxRunTime: 3600 provisionerId: '{{ taskcluster.docker.provisionerId }}' diff --git a/tools/ci/taskgraph.py b/tools/ci/taskgraph.py index c87089ca251536..e404def4655b51 100644 --- a/tools/ci/taskgraph.py +++ b/tools/ci/taskgraph.py @@ -56,7 +56,7 @@ suites = { "testharness": {"chunks": 12}, - "reftests": {"chunks": 6}, + "reftest": {"chunks": 6}, "wdspec": {"chunks": 1} } @@ -118,4 +118,3 @@ def run(venv, *args, **kwargs): with open(os.path.join(kwargs["dest"], ".taskcluster.yml"), "w") as f: yaml.dump(task_config, f) - From 6bf22ec6b8c446aeca7bf0b415361bd516eb965f Mon Sep 17 00:00:00 2001 From: James Graham Date: Fri, 26 Jan 2018 14:37:03 +0000 Subject: [PATCH 42/48] Fix lint error in taskgraph and increase task timeout --- .taskcluster.yml | 76 +++++++++++++++++++++---------------------- tools/ci/taskgraph.py | 3 +- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/.taskcluster.yml b/.taskcluster.yml index fed74f53010faa..b590d5e1cefb36 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -15,7 +15,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 1 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -33,7 +33,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 2 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -51,7 +51,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 3 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -69,7 +69,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 4 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -87,7 +87,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 5 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -105,7 +105,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome reftest 6 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -123,7 +123,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome wdspec 1 1"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -141,7 +141,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 1 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -159,7 +159,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 2 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -177,7 +177,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 3 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -195,7 +195,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 4 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -213,7 +213,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 5 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -231,7 +231,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 6 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -249,7 +249,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 7 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -267,7 +267,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 8 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -285,7 +285,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 9 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -303,7 +303,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 10 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -321,7 +321,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 11 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -339,7 +339,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ chrome testharness 12 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -357,7 +357,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 1 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -375,7 +375,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 2 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -393,7 +393,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 3 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -411,7 +411,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 4 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -429,7 +429,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 5 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -447,7 +447,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox reftest 6 6"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -465,7 +465,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox wdspec 1 1"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -483,7 +483,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 1 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -501,7 +501,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 2 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -519,7 +519,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 3 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -537,7 +537,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 4 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -555,7 +555,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 5 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -573,7 +573,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 6 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -591,7 +591,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 7 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -609,7 +609,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 8 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -627,7 +627,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 9 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -645,7 +645,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 10 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -663,7 +663,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 11 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' - extra: @@ -681,7 +681,7 @@ tasks: \ checkout {{event.head.sha}} &&\n ./tools/ci/ci_taskcluster.sh\ \ firefox testharness 12 12"] image: harjgam/web-platform-tests:0.5 - maxRunTime: 3600 + maxRunTime: 5400 provisionerId: '{{ taskcluster.docker.provisionerId }}' workerType: '{{ taskcluster.docker.workerType }}' version: 0 diff --git a/tools/ci/taskgraph.py b/tools/ci/taskgraph.py index e404def4655b51..523bf286433abf 100644 --- a/tools/ci/taskgraph.py +++ b/tools/ci/taskgraph.py @@ -19,7 +19,7 @@ }, }, "payload": { - "maxRunTime": 3600, + "maxRunTime": 5400, "image": "harjgam/web-platform-tests:0.5", "command":[ "/bin/bash", @@ -117,4 +117,3 @@ def run(venv, *args, **kwargs): with open(os.path.join(kwargs["dest"], ".taskcluster.yml"), "w") as f: yaml.dump(task_config, f) - From 015776d55a99230301fe7120da209038a9224d69 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 24 Jan 2018 16:21:14 +0000 Subject: [PATCH 43/48] Resource timing entries Workers - part 8 - WPT, bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1425458 gecko-commit: b96d58fd945ced9050f9b4602b9dfdf857d0954c gecko-integration-branch: mozilla-inbound gecko-reviewers: smaug --- resource-timing/resource_timing.worker.js | 64 +++++++++++++++++++++++ resource-timing/resources/empty.js | 1 + 2 files changed, 65 insertions(+) create mode 100644 resource-timing/resource_timing.worker.js create mode 100644 resource-timing/resources/empty.js 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 */ From 472ced1fa31752541f78bd80a2ab1ee96cd13f4a Mon Sep 17 00:00:00 2001 From: Henri Sivonen Date: Wed, 24 Jan 2018 11:08:14 +0000 Subject: [PATCH 44/48] Avoid surrogate math in HasRTLChars(). Behavior change: Certain unpaired high surrogates will result in the text being considered RTL where that wasn't the case before. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1428774 gecko-commit: 1e903401fe835f02ccfefef39ffc2706d5a8c032 gecko-integration-branch: autoland gecko-reviewers: jfkthame --- css/css-text/astral-bidi/adlam-anti-ref.html | 13 +++ css/css-text/astral-bidi/adlam-ref.html | 12 +++ css/css-text/astral-bidi/adlam.html | 15 +++ .../astral-bidi/cypriot-anti-ref.html | 13 +++ css/css-text/astral-bidi/cypriot-ref.html | 12 +++ css/css-text/astral-bidi/cypriot.html | 15 +++ css/css-text/astral-bidi/support/adlam.css | 9 ++ css/css-text/astral-bidi/support/cypriot.css | 9 ++ .../noto/NotoSansAdlam-hinted/LICENSE_OFL.txt | 92 ++++++++++++++++++ .../NotoSansAdlam-Regular.ttf | Bin 0 -> 83160 bytes css/fonts/noto/NotoSansAdlam-hinted/README | 11 +++ .../NotoSansCypriot-hinted/LICENSE_OFL.txt | 92 ++++++++++++++++++ .../NotoSansCypriot-Regular.ttf | Bin 0 -> 15420 bytes css/fonts/noto/NotoSansCypriot-hinted/README | 11 +++ 14 files changed, 304 insertions(+) create mode 100644 css/css-text/astral-bidi/adlam-anti-ref.html create mode 100644 css/css-text/astral-bidi/adlam-ref.html create mode 100644 css/css-text/astral-bidi/adlam.html create mode 100644 css/css-text/astral-bidi/cypriot-anti-ref.html create mode 100644 css/css-text/astral-bidi/cypriot-ref.html create mode 100644 css/css-text/astral-bidi/cypriot.html create mode 100644 css/css-text/astral-bidi/support/adlam.css create mode 100644 css/css-text/astral-bidi/support/cypriot.css create mode 100644 css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt create mode 100644 css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf create mode 100644 css/fonts/noto/NotoSansAdlam-hinted/README create mode 100644 css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt create mode 100644 css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf create mode 100644 css/fonts/noto/NotoSansCypriot-hinted/README 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/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 0000000000000000000000000000000000000000..0ab5d995c964021dc613e92646eae47b5a511b2d GIT binary patch literal 83160 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 aU%jT*#Q~!Pbjf8Dg*sl>>gaGdr2ik1E!9N; literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6727e13d62857f92dac08e1be54dd36f8aedc15d GIT binary patch literal 15420 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 literal 0 HcmV?d00001 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. From 76c0e9a8b940a5e5b581ded3a10ea09a1d07d74b Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Wed, 24 Jan 2018 02:51:05 +0000 Subject: [PATCH 45/48] P2 Add local-url-inherit-controller.https.html wpt test. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1431814 gecko-commit: 4fe6b13848c8a9ab5897a5d9958e16d1eb83edd9 gecko-integration-branch: mozilla-inbound gecko-reviewers: asuth --- .../local-url-inherit-controller.https.html | 79 +++++++++++++++++ .../local-url-inherit-controller-frame.html | 85 +++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 service-workers/service-worker/local-url-inherit-controller.https.html create mode 100644 service-workers/service-worker/resources/local-url-inherit-controller-frame.html 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 @@ + + + + From 5f0c05dde71c75e340a461316504658196e3464a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 29 Jan 2018 11:54:32 +0000 Subject: [PATCH 46/48] Look at the snapshots when invalidating due to stylesheet changes. The selectorText test happens to pass right now because well, we don't implement the setter yet[1], but would fail if we implemented an specific invalidation in the way I'd have done it yesterday. [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=37468 bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1432850 gecko-commit: e5ab5177f799a0d13a51db79e520a5db2cb08af7 gecko-integration-branch: central gecko-reviewers: bz --- .../selectorText-dynamic-001.html | 24 +++++++++++++++++ .../invalidation/sheet-going-away-001.html | 26 +++++++++++++++++++ .../sheet-going-away-002-ref.html | 7 +++++ .../invalidation/sheet-going-away-002.html | 23 ++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 css/selectors/invalidation/selectorText-dynamic-001.html create mode 100644 css/selectors/invalidation/sheet-going-away-001.html create mode 100644 css/selectors/invalidation/sheet-going-away-002-ref.html create mode 100644 css/selectors/invalidation/sheet-going-away-002.html 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. +

+ + From 06ac7e231c5ae231c1b1ca50286c3932cb6e6a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 29 Jan 2018 11:55:05 +0000 Subject: [PATCH 47/48] Test that dynamic changes properly affect hit-testing for elements that have anon boxes. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1433591 gecko-commit: 30d915de546242961f2f3ce4e1cfbee5ec9e54bb gecko-integration-branch: central gecko-reviewers: bz --- .../elementFromPoint-dynamic-anon-box.html | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 css/cssom-view/elementFromPoint-dynamic-anon-box.html 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 + From 18ea11dce1addbdd29cbaca39170d1108e3db918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 29 Jan 2018 18:47:57 +0000 Subject: [PATCH 48/48] Update tests. bugzilla-url: https://bugzilla-dev.allizom.org/show_bug.cgi?id=1430817 gecko-commit: a257c8b3582a423d1fdd0ae92574cc50ca07685b gecko-integration-branch: autoland gecko-reviewers: mats --- .../place-content-shorthand-002.html | 6 ++-- .../resources/alignment-parsing-utils.js | 8 +++-- .../place-self-shorthand-002.html | 6 ++-- .../place-self-shorthand-006.html | 6 ++-- ...bspos-staticpos-align-content-001-ref.html | 4 --- ...ex-abspos-staticpos-align-content-001.html | 4 --- ...bspos-staticpos-align-content-002-ref.html | 4 --- ...ex-abspos-staticpos-align-content-002.html | 4 --- ...bspos-staticpos-align-content-003-ref.html | 4 --- ...ex-abspos-staticpos-align-content-003.html | 4 --- ...bspos-staticpos-align-content-004-ref.html | 4 --- ...ex-abspos-staticpos-align-content-004.html | 4 --- ...bspos-staticpos-align-content-005-ref.html | 4 --- ...ex-abspos-staticpos-align-content-005.html | 4 --- ...bspos-staticpos-align-content-006-ref.html | 4 --- ...ex-abspos-staticpos-align-content-006.html | 4 --- ...bspos-staticpos-align-content-007-ref.html | 4 --- ...ex-abspos-staticpos-align-content-007.html | 4 --- ...bspos-staticpos-align-content-008-ref.html | 4 --- ...ex-abspos-staticpos-align-content-008.html | 4 --- ...s-staticpos-align-content-rtl-001-ref.html | 4 --- ...bspos-staticpos-align-content-rtl-001.html | 4 --- ...s-staticpos-align-content-rtl-002-ref.html | 4 --- ...bspos-staticpos-align-content-rtl-002.html | 4 --- ...taticpos-align-content-vertWM-001-ref.html | 4 --- ...os-staticpos-align-content-vertWM-001.html | 4 --- ...taticpos-align-content-vertWM-002-ref.html | 4 --- ...os-staticpos-align-content-vertWM-002.html | 4 --- ...x-abspos-staticpos-align-self-001-ref.html | 4 --- .../flex-abspos-staticpos-align-self-001.html | 4 --- ...x-abspos-staticpos-align-self-002-ref.html | 4 --- .../flex-abspos-staticpos-align-self-002.html | 4 --- ...x-abspos-staticpos-align-self-003-ref.html | 4 --- .../flex-abspos-staticpos-align-self-003.html | 4 --- ...x-abspos-staticpos-align-self-004-ref.html | 4 --- .../flex-abspos-staticpos-align-self-004.html | 4 --- ...x-abspos-staticpos-align-self-005-ref.html | 4 --- .../flex-abspos-staticpos-align-self-005.html | 4 --- ...x-abspos-staticpos-align-self-006-ref.html | 4 --- .../flex-abspos-staticpos-align-self-006.html | 4 --- ...x-abspos-staticpos-align-self-007-ref.html | 4 --- .../flex-abspos-staticpos-align-self-007.html | 4 --- ...x-abspos-staticpos-align-self-008-ref.html | 4 --- .../flex-abspos-staticpos-align-self-008.html | 4 --- ...spos-staticpos-align-self-rtl-001-ref.html | 4 --- ...x-abspos-staticpos-align-self-rtl-001.html | 4 --- ...spos-staticpos-align-self-rtl-002-ref.html | 4 --- ...x-abspos-staticpos-align-self-rtl-002.html | 4 --- ...spos-staticpos-align-self-rtl-003-ref.html | 4 --- ...x-abspos-staticpos-align-self-rtl-003.html | 4 --- ...spos-staticpos-align-self-rtl-004-ref.html | 4 --- ...x-abspos-staticpos-align-self-rtl-004.html | 4 --- ...s-staticpos-align-self-vertWM-003-ref.html | 4 --- ...bspos-staticpos-align-self-vertWM-003.html | 4 --- ...s-staticpos-align-self-vertWM-004-ref.html | 4 --- ...bspos-staticpos-align-self-vertWM-004.html | 4 --- ...ticpos-fallback-align-content-001-ref.html | 28 +++++++++++++----- ...-staticpos-fallback-align-content-001.html | 4 +++ ...cpos-fallback-justify-content-001-ref.html | 20 ++++++++----- ...taticpos-fallback-justify-content-001.html | 4 +++ ...pos-staticpos-justify-content-001-ref.html | 8 ----- ...-abspos-staticpos-justify-content-001.html | 8 ----- ...pos-staticpos-justify-content-002-ref.html | 8 ----- ...-abspos-staticpos-justify-content-002.html | 8 ----- ...pos-staticpos-justify-content-003-ref.html | 8 ----- ...-abspos-staticpos-justify-content-003.html | 8 ----- ...pos-staticpos-justify-content-004-ref.html | 8 ----- ...-abspos-staticpos-justify-content-004.html | 8 ----- ...pos-staticpos-justify-content-005-ref.html | 8 ----- ...-abspos-staticpos-justify-content-005.html | 8 ----- ...pos-staticpos-justify-content-006-ref.html | 8 ----- ...-abspos-staticpos-justify-content-006.html | 8 ----- ...pos-staticpos-justify-content-007-ref.html | 8 ----- ...-abspos-staticpos-justify-content-007.html | 8 ----- ...pos-staticpos-justify-content-008-ref.html | 8 ----- ...-abspos-staticpos-justify-content-008.html | 8 ----- ...staticpos-justify-content-rtl-001-ref.html | 8 ----- ...pos-staticpos-justify-content-rtl-001.html | 8 ----- ...staticpos-justify-content-rtl-002-ref.html | 8 ----- ...pos-staticpos-justify-content-rtl-002.html | 8 ----- ...ticpos-justify-content-vertWM-001-ref.html | 8 ----- ...-staticpos-justify-content-vertWM-001.html | 8 ----- ...ticpos-justify-content-vertWM-002-ref.html | 8 ----- ...-staticpos-justify-content-vertWM-002.html | 8 ----- ...d-abspos-staticpos-align-self-001-ref.html | 4 --- .../grid-abspos-staticpos-align-self-001.html | 4 --- ...d-abspos-staticpos-align-self-002-ref.html | 4 --- .../grid-abspos-staticpos-align-self-002.html | 4 --- ...abspos-staticpos-justify-self-001-ref.html | 8 ----- ...rid-abspos-staticpos-justify-self-001.html | 8 ----- ...abspos-staticpos-justify-self-002-ref.html | 8 ----- ...rid-abspos-staticpos-justify-self-002.html | 8 ----- ...os-staticpos-justify-self-img-001-ref.html | 12 -------- ...abspos-staticpos-justify-self-img-001.html | 12 -------- ...os-staticpos-justify-self-img-002-ref.html | 12 -------- ...abspos-staticpos-justify-self-img-002.html | 12 -------- ...os-staticpos-justify-self-rtl-001-ref.html | 8 ----- ...abspos-staticpos-justify-self-rtl-001.html | 8 ----- ...os-staticpos-justify-self-rtl-002-ref.html | 8 ----- ...abspos-staticpos-justify-self-rtl-002.html | 8 ----- ...os-staticpos-justify-self-rtl-003-ref.html | 8 ----- ...abspos-staticpos-justify-self-rtl-003.html | 8 ----- ...os-staticpos-justify-self-rtl-004-ref.html | 8 ----- ...abspos-staticpos-justify-self-rtl-004.html | 8 ----- ...staticpos-justify-self-vertWM-001-ref.html | 8 ----- ...pos-staticpos-justify-self-vertWM-001.html | 8 ----- ...staticpos-justify-self-vertWM-002-ref.html | 8 ----- ...pos-staticpos-justify-self-vertWM-002.html | 8 ----- ...staticpos-justify-self-vertWM-003-ref.html | 8 ----- ...pos-staticpos-justify-self-vertWM-003.html | 8 ----- ...staticpos-justify-self-vertWM-004-ref.html | 8 ----- ...pos-staticpos-justify-self-vertWM-004.html | 8 ----- .../flexbox-align-content-horiz-001-ref.xhtml | 29 ------------------- .../flexbox-align-content-horiz-001a.xhtml | 29 ------------------- .../flexbox-align-content-horiz-001b.xhtml | 29 ------------------- .../flexbox-align-content-vert-001-ref.xhtml | 29 ------------------- .../flexbox-align-content-vert-001a.xhtml | 29 ------------------- .../flexbox-align-content-vert-001b.xhtml | 29 ------------------- .../flexbox-align-self-horiz-001-block.xhtml | 10 ------- .../flexbox-align-self-horiz-001-ref.xhtml | 10 +------ .../flexbox-align-self-horiz-001-table.xhtml | 10 ------- .../flexbox-align-self-vert-001-ref.xhtml | 16 ++-------- .../flexbox/flexbox-align-self-vert-001.xhtml | 10 ------- .../flexbox-align-self-vert-rtl-001-ref.xhtml | 16 ++-------- .../flexbox-align-self-vert-rtl-001.xhtml | 10 ------- .../animation-types/property-list.js | 6 ++-- 126 files changed, 65 insertions(+), 903 deletions(-) diff --git a/css/css-align/content-distribution/place-content-shorthand-002.html b/css/css-align/content-distribution/place-content-shorthand-002.html index 90fbb60dcb18e1..3df998eca6b4f8 100644 --- a/css/css-align/content-distribution/place-content-shorthand-002.html +++ b/css/css-align/content-distribution/place-content-shorthand-002.html @@ -8,9 +8,9 @@