diff --git a/.gitignore b/.gitignore index 1ffa1209dd3c..5cbae5037da5 100644 --- a/.gitignore +++ b/.gitignore @@ -90,9 +90,6 @@ GPATH # Git clone directory for updating web-platform-tests testing/web-platform/sync/ -# Third party metadata for web-platform-tests -testing/web-platform/products/ - # Android Gradle artifacts. mobile/android/gradle/.gradle diff --git a/.hgignore b/.hgignore index a79e9f56435d..9948907586c2 100644 --- a/.hgignore +++ b/.hgignore @@ -98,9 +98,6 @@ GPATH # Git clone directory for updating web-platform-tests ^testing/web-platform/sync/ -# Third party metadata for web-platform-tests -^testing/web-platform/products/ - # Android Gradle artifacts. ^mobile/android/gradle/.gradle diff --git a/testing/web-platform/README.md b/testing/web-platform/README.md index 4ed178870ec4..b8e353dcf5ae 100644 --- a/testing/web-platform/README.md +++ b/testing/web-platform/README.md @@ -235,14 +235,45 @@ Running Tests In Other Browsers web-platform-tests is cross browser, and the runner is compatible with multiple browsers. Therefore it's possible to check the behaviour of -tests in other browsers. By default Chrome, Edge and Servo are -supported. In order to run the tests in these browsers use the -`--product` argument to wptrunner: +tests in other browsers. This is somewhat more involved than running +them in Firefox since extra dependencies may be required. For example +to test in Chrome: - mach wpt --product chrome dom/historical.html +1. Download the chromedriver binary and place it somewhere sensible + e.g. `~/bin` -By default these browsers run without expectation metadata, but it can -be added in the `testing/web-platform/products/` -directory. To run with the same metadata as for Firefox (so that -differences are reported as unexpected results), pass `--meta -testing/web-platform/meta` to the mach command. +2. In your gecko source tree activate the virtualenv created by mach, + since this has most dependencies already installed. This is typically + in objdir/_virtualenv and is activated via e.g. + + source objdir/_virtualenv/bin/activate + +3. Install the extra requirements: + + cd testing/web-platform/harness + pip install -r requirements_chrome.txt + +4. Edit the config file `testing/web-platform/wptrunner.ini` so that + Chrome support is enabled by changing the section that reads: + + [products] + firefox = + + to read + + [products] + firefox = + chrome = + + (alternatively create a new config file elsewhere and use the + `--config` option to `runtests.py` to point wptrunner at this config + file). + +5. Run `runtests.py` using the location of chromedriver as + the binary: + + cd testing/web-platform + python runtests.py --product=chrome --binary=~/bin/chromedriver --log-mach=- + +By default this will use the same test checkout and metadata as are in +the Gecko tree, so it's easy to compare behaviour relative to Firefox. diff --git a/testing/web-platform/mach_commands.py b/testing/web-platform/mach_commands.py index 3826b2494e3d..0f85d1eb7b9f 100644 --- a/testing/web-platform/mach_commands.py +++ b/testing/web-platform/mach_commands.py @@ -28,7 +28,7 @@ class InvalidTestPathError(Exception): class WebPlatformTestsRunner(MozbuildObject): """Run web platform tests.""" - def setup_kwargs_firefox(self, kwargs): + def setup_kwargs(self, kwargs): from wptrunner import wptcommandline build_path = os.path.join(self.topobjdir, 'build') @@ -67,50 +67,10 @@ class WebPlatformTestsRunner(MozbuildObject): kwargs = wptcommandline.check_args(kwargs) - def setup_kwargs_wptrun(self, kwargs): - from wptrunner import wptcommandline - here = os.path.join(self.topsrcdir, 'testing', 'web-platform') - - sys.path.insert(0, os.path.join(here, "tests", "tools")) - - import wptrun - - setup_func = { - "chrome": wptrun.setup_chrome, - "edge": wptrun.setup_edge, - "servo": wptrun.setup_servo, - }[kwargs["product"]] - - setup_func(wptrun.virtualenv.Virtualenv(self.virtualenv_manager.virtualenv_root), - kwargs, - True) - - kwargs["tests_root"] = os.path.join(here, "tests") - - if kwargs["metadata_root"] is None: - metadir = os.path.join(here, "products", kwargs["product"]) - if not os.path.exists(metadir): - os.makedirs(metadir) - kwargs["metadata_root"] = metadir - - src_manifest = os.path.join(here, "meta", "MANIFEST.json") - dest_manifest = os.path.join(kwargs["metadata_root"], "MANIFEST.json") - - if not os.path.exists(dest_manifest) and os.path.exists(src_manifest): - with open(src_manifest) as src, open(dest_manifest, "w") as dest: - dest.write(src.read()) - - kwargs = wptcommandline.check_args(kwargs) - def run_tests(self, **kwargs): from wptrunner import wptrunner - if kwargs["product"] in ["firefox", None]: - self.setup_kwargs_firefox(kwargs) - elif kwargs["product"] in ("chrome", "edge", "servo"): - self.setup_kwargs_wptrun(kwargs) - else: - raise ValueError("Unknown product %s" % kwargs["product"]) + self.setup_kwargs(kwargs) logger = wptrunner.setup_logging(kwargs, {"mach": sys.stdout}) result = wptrunner.run_tests(**kwargs) @@ -298,7 +258,7 @@ class WPTManifestUpdater(MozbuildObject): def create_parser_wpt(): from wptrunner import wptcommandline - return wptcommandline.create_parser(["firefox", "chrome", "edge", "servo"]) + return wptcommandline.create_parser(["firefox"]) def create_parser_update(): from update import updatecommandline diff --git a/testing/web-platform/products/README b/testing/web-platform/products/README deleted file mode 100644 index 81a111472e73..000000000000 --- a/testing/web-platform/products/README +++ /dev/null @@ -1,3 +0,0 @@ -This directory is for storing metadata files when running -web-platform-tests with non-firefox browsers. By default all -subdirectories here are ignored in VCS. \ No newline at end of file diff --git a/testing/web-platform/tests/tools/wptrunner/requirements_firefox.txt b/testing/web-platform/tests/tools/wptrunner/requirements_firefox.txt index d8d268f127bd..379e522acc45 100644 --- a/testing/web-platform/tests/tools/wptrunner/requirements_firefox.txt +++ b/testing/web-platform/tests/tools/wptrunner/requirements_firefox.txt @@ -3,4 +3,3 @@ mozprofile >= 0.21 mozprocess >= 0.19 mozcrash >= 0.13 mozrunner >= 6.7 -mozleak >= 0.1 diff --git a/testing/web-platform/wptrunner.ini b/testing/web-platform/wptrunner.ini index 2d403ccebbe2..08c0d551c854 100644 --- a/testing/web-platform/wptrunner.ini +++ b/testing/web-platform/wptrunner.ini @@ -1,8 +1,5 @@ [products] firefox = -chrome = -edge = -servo = [web-platform-tests] remote_url = https://github.com/w3c/web-platform-tests.git