mirror of
https://github.com/servo/servo.git
synced 2025-07-01 20:43:39 +01:00
Update web-platform-tests to revision b0d2d2da21dfd03e86c5d710c926ae7df3b9f0d0
This commit is contained in:
parent
d048aa9c51
commit
1c9e136e8e
16 changed files with 402 additions and 91 deletions
|
@ -312266,6 +312266,11 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/runner.js": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/testharness_servodriver.js": [
|
||||
[
|
||||
{}
|
||||
|
@ -657253,7 +657258,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/docs/design.rst": [
|
||||
"bf108a0087da0c6ec123169c71586f6ce3bfba72",
|
||||
"056c0d8663292b0de3fee6e430ca011d08965731",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/docs/expectation.rst": [
|
||||
|
@ -657541,7 +657546,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executormarionette.py": [
|
||||
"8aea59cc8f6ceb9adc57ca42a91cefea6f321b5c",
|
||||
"4ab7bf3dde9c76fe160597bccc2df772199750a0",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executoropera.py": [
|
||||
|
@ -657553,7 +657558,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
|
||||
"0792774d65cfc4cd27dedcd6c2eb63bab8bfce07",
|
||||
"c1d66b5706eb7a6803707c51253f8f5874690dbe",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executorservo.py": [
|
||||
|
@ -657565,7 +657570,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
|
||||
"be6ed8d9d070bb717bca1c6fae82225957b10cff",
|
||||
"879bd68d522f949426d5b8d4a6599c2e40efe3e8",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
|
||||
|
@ -657600,16 +657605,20 @@
|
|||
"5bd5c609cbd5e799787c93bac673fb8e392a7c30",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/runner.js": [
|
||||
"8b800036756d016d8c020d53e02c5709fb03043f",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/testharness_servodriver.js": [
|
||||
"d731cc04d7011759ce63079fbd1242fd6426603b",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/testharness_webdriver.js": [
|
||||
"7f00050fa7ed6daf89ce6af7a0e610d0e5ddc42b",
|
||||
"9e2e6049bdc3c01987ec989b6783fdcdc267ed74",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/executors/testharness_webdriver_resume.js": [
|
||||
"7a2df98ed4e73bf4618b169aa297f0c075ff8a19",
|
||||
"4692e4931ccab292a12dd5fba28fc88f3b569a45",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/wptrunner/expected.py": [
|
||||
|
|
|
@ -65,9 +65,9 @@
|
|||
[left intermediate]
|
||||
expected: FAIL
|
||||
|
||||
[bottom intermediate]
|
||||
expected: FAIL
|
||||
|
||||
[text-indent intermediate]
|
||||
expected: FAIL
|
||||
|
||||
[border-top-width end]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[fetch-in-iframe.html]
|
||||
expected: CRASH
|
||||
[Untitled]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,283 @@
|
|||
[limited-quirks.html]
|
||||
[top: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[top: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[top: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #01]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: @1]
|
||||
expected: FAIL
|
||||
|
||||
[top: #1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "1"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url('1')]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: "1a"]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: calc(2 * 2px)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +/**/1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #00001]
|
||||
expected: FAIL
|
||||
|
||||
[top: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #001]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: url(1)]
|
||||
expected: FAIL
|
||||
|
||||
[top: a]
|
||||
expected: FAIL
|
||||
|
||||
[top: A]
|
||||
expected: FAIL
|
||||
|
||||
[top: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: 1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: #000001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: 1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +A]
|
||||
expected: FAIL
|
||||
|
||||
[top: +a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1.5]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1a]
|
||||
expected: FAIL
|
||||
|
||||
[top: +1A]
|
||||
expected: FAIL
|
||||
|
||||
[top: @1a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: \\31 .5]
|
||||
expected: FAIL
|
||||
|
||||
[top: "a"]
|
||||
expected: FAIL
|
||||
|
||||
[top: #01]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: +1.5]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -A]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -a]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: #0001]
|
||||
expected: FAIL
|
||||
|
||||
[bottom: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -\\31 ]
|
||||
expected: FAIL
|
||||
|
||||
[top: -A]
|
||||
expected: FAIL
|
||||
|
||||
[top: -a]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1]
|
||||
expected: FAIL
|
||||
|
||||
[top: -1\\31 ]
|
||||
expected: FAIL
|
||||
|
|
@ -2,9 +2,6 @@
|
|||
[response.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -14,13 +11,10 @@
|
|||
[request.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a=b&c=d&]
|
||||
[request.formData() with input: &&&a=b&&&&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d&]
|
||||
[response.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
|
@ -28,15 +22,15 @@
|
|||
[request.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: _charset_=windows-1252&test=%C2x]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a=b&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a=b&c=d]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: a=b&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
[response.formData() with input: a&b&c]
|
||||
expected: FAIL
|
||||
|
||||
[request.formData() with input: &&&a=b&&&&c=d&]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[import-in-moduleworker.html]
|
||||
expected: ERROR
|
||||
[Base URL in module dedicated workers: import]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ requirements:
|
|||
of an ``iframe`` test container.
|
||||
|
||||
* It must be possible to deal with all kinds of behaviour of the
|
||||
browser runder test, for example, crashing, hanging, etc.
|
||||
browser under test, for example, crashing, hanging, etc.
|
||||
|
||||
* It should be possible to add support for new platforms and browsers
|
||||
with minimal code changes.
|
||||
|
|
|
@ -109,6 +109,8 @@ class MarionetteTestharnessProtocolPart(TestharnessProtocolPart):
|
|||
def __init__(self, parent):
|
||||
super(MarionetteTestharnessProtocolPart, self).__init__(parent)
|
||||
self.runner_handle = None
|
||||
with open(os.path.join(here, "runner.js")) as f:
|
||||
self.runner_script = f.read()
|
||||
|
||||
def setup(self):
|
||||
self.marionette = self.parent.marionette
|
||||
|
@ -129,8 +131,8 @@ class MarionetteTestharnessProtocolPart(TestharnessProtocolPart):
|
|||
"that your firewall rules or network setup does not "
|
||||
"prevent access.\e%s" % (url, traceback.format_exc(e)))
|
||||
raise
|
||||
self.parent.base.execute_script(
|
||||
"document.title = '%s'" % threading.current_thread().name.replace("'", '"'))
|
||||
format_map = {"title": threading.current_thread().name.replace("'", '"')}
|
||||
self.parent.base.execute_script(self.runner_script % format_map)
|
||||
|
||||
def close_old_windows(self, url_protocol):
|
||||
handles = self.marionette.window_handles
|
||||
|
|
|
@ -72,14 +72,16 @@ class SeleniumBaseProtocolPart(BaseProtocolPart):
|
|||
class SeleniumTestharnessProtocolPart(TestharnessProtocolPart):
|
||||
def setup(self):
|
||||
self.webdriver = self.parent.webdriver
|
||||
with open(os.path.join(here, "runner.js")) as f:
|
||||
self.runner_script = f.read()
|
||||
|
||||
def load_runner(self, url_protocol):
|
||||
url = urlparse.urljoin(self.parent.executor.server_url(url_protocol),
|
||||
"/testharness_runner.html")
|
||||
self.logger.debug("Loading %s" % url)
|
||||
self.webdriver.get(url)
|
||||
self.webdriver.execute_script("document.title = '%s'" %
|
||||
threading.current_thread().name.replace("'", '"'))
|
||||
format_map = {"title": threading.current_thread().name.replace("'", '"')}
|
||||
self.parent.base.execute_script(self.runner_script % format_map)
|
||||
|
||||
def close_old_windows(self):
|
||||
exclude = self.webdriver.current_window_handle
|
||||
|
|
|
@ -52,7 +52,7 @@ class WebDriverBaseProtocolPart(BaseProtocolPart):
|
|||
while True:
|
||||
try:
|
||||
self.webdriver.execute_async_script("")
|
||||
except client.TimeoutException:
|
||||
except (client.TimeoutException, client.ScriptTimeoutException):
|
||||
pass
|
||||
except (socket.timeout, client.NoSuchWindowException,
|
||||
client.UnknownErrorException, IOError):
|
||||
|
@ -65,6 +65,8 @@ class WebDriverBaseProtocolPart(BaseProtocolPart):
|
|||
class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
|
||||
def setup(self):
|
||||
self.webdriver = self.parent.webdriver
|
||||
with open(os.path.join(here, "runner.js")) as f:
|
||||
self.runner_script = f.read()
|
||||
|
||||
def load_runner(self, url_protocol):
|
||||
url = urlparse.urljoin(self.parent.executor.server_url(url_protocol),
|
||||
|
@ -72,8 +74,8 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
|
|||
self.logger.debug("Loading %s" % url)
|
||||
|
||||
self.webdriver.url = url
|
||||
self.webdriver.execute_script("document.title = '%s'" %
|
||||
threading.current_thread().name.replace("'", '"'))
|
||||
format_map = {"title": threading.current_thread().name.replace("'", '"')}
|
||||
self.parent.base.execute_script(self.runner_script % format_map)
|
||||
|
||||
def close_old_windows(self):
|
||||
exclude = self.webdriver.window_handle
|
||||
|
@ -125,6 +127,7 @@ class WebDriverClickProtocolPart(ClickProtocolPart):
|
|||
self.webdriver = self.parent.webdriver
|
||||
|
||||
def element(self, element):
|
||||
self.logger.info("click " + repr(element))
|
||||
return element.click()
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
document.title = '%(title)s';
|
||||
|
||||
window.addEventListener(
|
||||
"message",
|
||||
function(event) {
|
||||
window.message_queue.push(event);
|
||||
window.process_next_event();
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
|
||||
window.process_next_event = function() {
|
||||
/* This function handles the next testdriver event. The presence of
|
||||
window.testdriver_callback is used as a switch; when that function
|
||||
is present we are able to handle the next event and when is is not
|
||||
present we must wait. Therefore to drive the event processing, this
|
||||
function must be called in two circumstances:
|
||||
* Every time there is a new event that we may be able to handle
|
||||
* Every time we set the callback function
|
||||
This function unsets the callback, so no further testdriver actions
|
||||
will be run until it is reset, which wptrunner does after it has
|
||||
completed handling the current action.
|
||||
*/
|
||||
if (!window.testdriver_callback) {
|
||||
return;
|
||||
}
|
||||
var event = window.message_queue.shift();
|
||||
if (!event) {
|
||||
return;
|
||||
}
|
||||
var data = event.data;
|
||||
|
||||
var payload = undefined;
|
||||
|
||||
switch(data.type) {
|
||||
case "complete":
|
||||
var tests = event.data.tests;
|
||||
var status = event.data.status;
|
||||
|
||||
var subtest_results = tests.map(function(x) {
|
||||
return [x.name, x.status, x.message, x.stack];
|
||||
});
|
||||
payload = [status.status,
|
||||
status.message,
|
||||
status.stack,
|
||||
subtest_results];
|
||||
clearTimeout(window.timer);
|
||||
break;
|
||||
case "action":
|
||||
payload = data;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
var callback = window.testdriver_callback;
|
||||
window.testdriver_callback = null;
|
||||
callback([window.url, data.type, payload]);
|
||||
};
|
|
@ -1,21 +1,9 @@
|
|||
window.timeout_multiplier = %(timeout_multiplier)d;
|
||||
window.url = "%(url)s";
|
||||
window.win = window.open("%(abs_url)s", "%(window_id)s");
|
||||
|
||||
window.message_queue = [];
|
||||
|
||||
window.setMessageListener = function(func) {
|
||||
window.current_listener = func;
|
||||
window.addEventListener(
|
||||
"message",
|
||||
func,
|
||||
false
|
||||
);
|
||||
};
|
||||
|
||||
window.setMessageListener(function(event) {
|
||||
window.message_queue.push(event);
|
||||
});
|
||||
|
||||
window.win = window.open("%(abs_url)s", "%(window_id)s");
|
||||
window.testdriver_callback = null;
|
||||
|
||||
if (%(timeout)s != null) {
|
||||
window.timer = setTimeout(function() {
|
||||
|
|
|
@ -1,46 +1,3 @@
|
|||
var callback = arguments[arguments.length - 1];
|
||||
|
||||
function process_event(event) {
|
||||
var data = event.data;
|
||||
|
||||
var payload = undefined;
|
||||
|
||||
switch(data.type) {
|
||||
case "complete":
|
||||
var tests = event.data.tests;
|
||||
var status = event.data.status;
|
||||
|
||||
var subtest_results = tests.map(function(x) {
|
||||
return [x.name, x.status, x.message, x.stack];
|
||||
});
|
||||
payload = [status.status,
|
||||
status.message,
|
||||
status.stack,
|
||||
subtest_results];
|
||||
clearTimeout(window.timer);
|
||||
break;
|
||||
|
||||
case "action":
|
||||
window.setMessageListener(function(event) {
|
||||
window.message_queue.push(event);
|
||||
});
|
||||
payload = data;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
callback(["%(url)s", data.type, payload]);
|
||||
}
|
||||
|
||||
window.removeEventListener("message", window.current_listener);
|
||||
if (window.message_queue.length) {
|
||||
var next = window.message_queue.shift();
|
||||
process_event(next);
|
||||
} else {
|
||||
window.addEventListener(
|
||||
"message", function f(event) {
|
||||
window.removeEventListener("message", f);
|
||||
process_event(event);
|
||||
}, false);
|
||||
}
|
||||
window.testdriver_callback = callback;
|
||||
window.process_next_event();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue