aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/harness/wptrunner/browsers/servo.py14
-rw-r--r--tests/wpt/harness/wptrunner/browsers/servodriver.py15
-rw-r--r--tests/wpt/harness/wptrunner/executors/executorservo.py18
-rw-r--r--tests/wpt/harness/wptrunner/executors/webdriver.py31
-rw-r--r--tests/wpt/harness/wptrunner/wptcommandline.py4
5 files changed, 67 insertions, 15 deletions
diff --git a/tests/wpt/harness/wptrunner/browsers/servo.py b/tests/wpt/harness/wptrunner/browsers/servo.py
index 1ae9b7ea77b..dce012d1a54 100644
--- a/tests/wpt/harness/wptrunner/browsers/servo.py
+++ b/tests/wpt/harness/wptrunner/browsers/servo.py
@@ -27,7 +27,8 @@ def check_args(**kwargs):
def browser_kwargs(**kwargs):
return {"binary": kwargs["binary"],
"debug_info": kwargs["debug_info"],
- "user_stylesheets": kwargs.get("user_stylesheets")}
+ "user_stylesheets": kwargs.get("user_stylesheets"),
+ "render_backend": kwargs.get("servo_backend")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
@@ -46,14 +47,21 @@ def env_options():
"supports_debugger": True}
+def render_arg(render_backend):
+ return {"cpu": "--cpu"}[render_backend]
+
+
class ServoBrowser(NullBrowser):
- def __init__(self, logger, binary, debug_info=None, user_stylesheets=None):
+ def __init__(self, logger, binary, debug_info=None, user_stylesheets=None,
+ render_backend="cpu"):
NullBrowser.__init__(self, logger)
self.binary = binary
self.debug_info = debug_info
self.user_stylesheets = user_stylesheets or []
+ self.render_backend = render_backend
def executor_browser(self):
return ExecutorBrowser, {"binary": self.binary,
"debug_info": self.debug_info,
- "user_stylesheets": self.user_stylesheets}
+ "user_stylesheets": self.user_stylesheets,
+ "render_backend": self.render_backend}
diff --git a/tests/wpt/harness/wptrunner/browsers/servodriver.py b/tests/wpt/harness/wptrunner/browsers/servodriver.py
index 7df28797efb..c257eb32fb1 100644
--- a/tests/wpt/harness/wptrunner/browsers/servodriver.py
+++ b/tests/wpt/harness/wptrunner/browsers/servodriver.py
@@ -9,6 +9,7 @@ import tempfile
from mozprocess import ProcessHandler
from .base import Browser, require_arg, get_free_port, browser_command, ExecutorBrowser
+from .servo import render_arg
from ..executors import executor_kwargs as base_executor_kwargs
from ..executors.executorservodriver import (ServoWebDriverTestharnessExecutor,
ServoWebDriverRefTestExecutor)
@@ -39,7 +40,9 @@ def check_args(**kwargs):
def browser_kwargs(**kwargs):
return {"binary": kwargs["binary"],
- "debug_info": kwargs["debug_info"]}
+ "debug_info": kwargs["debug_info"],
+ "user_stylesheets": kwargs.get("user_stylesheets"),
+ "render_backend": kwargs.get("servo_backend")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs):
@@ -66,7 +69,8 @@ def make_hosts_file():
class ServoWebDriverBrowser(Browser):
used_ports = set()
- def __init__(self, logger, binary, debug_info=None, webdriver_host="127.0.0.1"):
+ def __init__(self, logger, binary, debug_info=None, webdriver_host="127.0.0.1",
+ user_stylesheets=None, render_backend="cpu"):
Browser.__init__(self, logger)
self.binary = binary
self.webdriver_host = webdriver_host
@@ -75,6 +79,8 @@ class ServoWebDriverBrowser(Browser):
self.debug_info = debug_info
self.hosts_path = make_hosts_file()
self.command = None
+ self.user_stylesheets = user_stylesheets if user_stylesheets else []
+ self.render_backend = render_backend
def start(self):
self.webdriver_port = get_free_port(4444, exclude=self.used_ports)
@@ -84,11 +90,14 @@ class ServoWebDriverBrowser(Browser):
env["HOST_FILE"] = self.hosts_path
debug_args, command = browser_command(self.binary,
- ["--cpu", "--hard-fail",
+ [render_arg(self.render_backend), "--hard-fail",
"--webdriver", str(self.webdriver_port),
"about:blank"],
self.debug_info)
+ for stylesheet in self.user_stylesheets:
+ command += ["--user-stylesheet", stylesheet]
+
self.command = command
self.command = debug_args + self.command
diff --git a/tests/wpt/harness/wptrunner/executors/executorservo.py b/tests/wpt/harness/wptrunner/executors/executorservo.py
index 649e4e0ba18..a1e0ea97b31 100644
--- a/tests/wpt/harness/wptrunner/executors/executorservo.py
+++ b/tests/wpt/harness/wptrunner/executors/executorservo.py
@@ -22,6 +22,12 @@ from .base import (ExecutorException,
reftest_result_converter)
from .process import ProcessTestExecutor
from ..browsers.base import browser_command
+render_arg = None
+
+
+def do_delayed_imports():
+ global render_arg
+ from ..browsers.servo import render_arg
hosts_text = """127.0.0.1 web-platform.test
127.0.0.1 www.web-platform.test
@@ -37,11 +43,13 @@ def make_hosts_file():
f.write(hosts_text)
return hosts_path
+
class ServoTestharnessExecutor(ProcessTestExecutor):
convert_result = testharness_result_converter
def __init__(self, browser, server_config, timeout_multiplier=1, debug_info=None,
pause_after_test=False):
+ do_delayed_imports()
ProcessTestExecutor.__init__(self, browser, server_config,
timeout_multiplier=timeout_multiplier,
debug_info=debug_info)
@@ -62,7 +70,8 @@ class ServoTestharnessExecutor(ProcessTestExecutor):
self.result_data = None
self.result_flag = threading.Event()
- args = ["--cpu", "--hard-fail", "-u", "Servo/wptrunner", "-z", self.test_url(test)]
+ args = [render_arg(self.browser.render_backend), "--hard-fail", "-u", "Servo/wptrunner",
+ "-z", self.test_url(test)]
for stylesheet in self.browser.user_stylesheets:
args += ["--user-stylesheet", stylesheet]
for pref in test.environment.get('prefs', {}):
@@ -166,7 +175,7 @@ class ServoRefTestExecutor(ProcessTestExecutor):
def __init__(self, browser, server_config, binary=None, timeout_multiplier=1,
screenshot_cache=None, debug_info=None, pause_after_test=False):
-
+ do_delayed_imports()
ProcessTestExecutor.__init__(self,
browser,
server_config,
@@ -193,8 +202,9 @@ class ServoRefTestExecutor(ProcessTestExecutor):
with TempFilename(self.tempdir) as output_path:
debug_args, command = browser_command(
self.binary,
- ["--cpu", "--hard-fail", "--exit", "-u", "Servo/wptrunner",
- "-Z", "disable-text-aa", "--output=%s" % output_path, full_url],
+ [render_arg(self.browser.render_backend), "--hard-fail", "--exit",
+ "-u", "Servo/wptrunner", "-Z", "disable-text-aa",
+ "--output=%s" % output_path, full_url],
self.debug_info)
for stylesheet in self.browser.user_stylesheets:
diff --git a/tests/wpt/harness/wptrunner/executors/webdriver.py b/tests/wpt/harness/wptrunner/executors/webdriver.py
index 247f53f1d7a..dee2a1c2337 100644
--- a/tests/wpt/harness/wptrunner/executors/webdriver.py
+++ b/tests/wpt/harness/wptrunner/executors/webdriver.py
@@ -220,12 +220,11 @@ class Transport(object):
except Exception:
# This should probably be more specific
raise IOError
- body = resp.read()
+ resp_body = resp.read()
try:
- data = json.loads(body)
+ data = json.loads(resp_body)
except:
- raise
raise WebDriverException("Could not parse response body as JSON: %s" % body)
if resp.status != 200:
@@ -345,6 +344,24 @@ class Find(object):
return rv
+class Cookies(object):
+ def __init__(self, session):
+ self.session = session
+
+ def __getitem__(self, name):
+ self.session.send_command("GET", "cookie/%s" % name, {}, key="value")
+
+ def __setitem__(self, name, value):
+ cookie = {"name": name,
+ "value": None}
+
+ if isinstance(name, (str, unicode)):
+ cookie["value"] = value
+ elif hasattr(value, "value"):
+ cookie["value"] = value.value
+ self.session.send_command("POST", "cookie/%s" % name, {}, key="value")
+
+
class Session(object):
def __init__(self, host, port, url_prefix="", desired_capabilities=None, port_timeout=60,
extension=None):
@@ -496,7 +513,7 @@ class Session(object):
body["secure"] = secure
if expiry is not None:
body["expiry"] = expiry
- self.send_command("POST", "cookie", body)
+ self.send_command("POST", "cookie", {"cookie": body})
def delete_cookie(self, name=None):
if name is None:
@@ -593,7 +610,7 @@ class Element(object):
return self.session.send_command("GET", self.url("name"))
@command
- def css(self, property_name):
+ def style(self, property_name):
return self.session.send_command("GET", self.url("css/%s" % property_name))
@property
@@ -601,6 +618,10 @@ class Element(object):
def rect(self):
return self.session.send_command("GET", self.url("rect"))
+ @command
+ def attribute(self, name):
+ return self.session.send_command("GET", self.url("attribute/%s" % name))
+
class ServoExtensions(object):
def __init__(self, session):
self.session = session
diff --git a/tests/wpt/harness/wptrunner/wptcommandline.py b/tests/wpt/harness/wptrunner/wptcommandline.py
index e9e42a0b01f..d0c97b92bce 100644
--- a/tests/wpt/harness/wptrunner/wptcommandline.py
+++ b/tests/wpt/harness/wptrunner/wptcommandline.py
@@ -165,6 +165,10 @@ def create_parser(product_choices=None):
servo_group.add_argument("--user-stylesheet",
default=[], action="append", dest="user_stylesheets",
help="Inject a user CSS stylesheet into every test.")
+ servo_group.add_argument("--servo-backend",
+ default="cpu", choices=["cpu", "webrender"],
+ help="Rendering backend to use with Servo.")
+
parser.add_argument("test_list", nargs="*",
help="List of URLs for tests to run, or paths including tests to run. "