Changeset 231727 in webkit
- Timestamp:
- May 11, 2018 4:03:36 PM (6 years ago)
- Location:
- trunk/WebDriverTests
- Files:
-
- 117 added
- 34 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebDriverTests/ChangeLog
r231632 r231727 1 2018-05-11 Brian Burg <bburg@apple.com> 2 3 Unreviewed. Update W3C WebDriver imported tests. 4 5 This includes upstream PR #10968, which has a fix for XSSAuditor 6 blocking scripts loaded via inline.py. Test expectations for 7 webkitgtkdriver may need to be updated with progressions and new tests. 8 9 * imported/w3c/importer.json: 10 * imported/w3c/tools/webdriver/webdriver/client.py: 11 * imported/w3c/tools/wptrunner/requirements_chrome.txt: 12 * imported/w3c/tools/wptrunner/requirements_chrome_android.txt: Copied from WebDriverTests/imported/w3c/tools/wptrunner/requirements_opera.txt. 13 * imported/w3c/tools/wptrunner/requirements_edge.txt: 14 * imported/w3c/tools/wptrunner/requirements_firefox.txt: 15 * imported/w3c/tools/wptrunner/requirements_ie.txt: 16 * imported/w3c/tools/wptrunner/requirements_opera.txt: 17 * imported/w3c/tools/wptrunner/requirements_safari.txt: 18 * imported/w3c/tools/wptrunner/requirements_sauce.txt: 19 * imported/w3c/tools/wptrunner/wptrunner/browsers/firefox.py: 20 * imported/w3c/tools/wptrunner/wptrunner/browsers/sauce.py: 21 * imported/w3c/tools/wptrunner/wptrunner/environment.py: 22 * imported/w3c/tools/wptrunner/wptrunner/executors/base.py: 23 * imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py: 24 * imported/w3c/tools/wptrunner/wptrunner/formatters.py: 25 * imported/w3c/tools/wptrunner/wptrunner/reduce.py: 26 * imported/w3c/tools/wptrunner/wptrunner/testrunner.py: 27 * imported/w3c/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py: Added. 28 * imported/w3c/tools/wptrunner/wptrunner/tests/test_products.py: 29 * imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py: 30 * imported/w3c/tools/wptrunner/wptrunner/wptrunner.py: 31 * imported/w3c/tools/wptrunner/wptrunner/wpttest.py: 32 * imported/w3c/webdriver/tests/accept_alert/__init__.py: Added. 33 * imported/w3c/webdriver/tests/accept_alert/accept.py: Added. 34 * imported/w3c/webdriver/tests/add_cookie/__init__.py: Added. 35 * imported/w3c/webdriver/tests/add_cookie/add.py: Added. 36 * imported/w3c/webdriver/tests/close_window/__init__.py: Added. 37 * imported/w3c/webdriver/tests/close_window/close.py: Added. 38 * imported/w3c/webdriver/tests/close_window/user_prompts.py: Added. 39 * imported/w3c/webdriver/tests/delete_cookie/__init__.py: Added. 40 * imported/w3c/webdriver/tests/delete_cookie/delete.py: Added. 41 * imported/w3c/webdriver/tests/delete_cookie/user_prompts.py: Added. 42 * imported/w3c/webdriver/tests/dismiss_alert/__init__.py: Added. 43 * imported/w3c/webdriver/tests/dismiss_alert/dismiss.py: Added. 44 * imported/w3c/webdriver/tests/element_clear/__init__.py: Added. 45 * imported/w3c/webdriver/tests/element_clear/clear.py: Added. 46 * imported/w3c/webdriver/tests/element_click/bubbling.py: 47 * imported/w3c/webdriver/tests/element_click/stale.py: 48 * imported/w3c/webdriver/tests/element_send_keys/content_editable.py: Added. 49 * imported/w3c/webdriver/tests/element_send_keys/form_controls.py: 50 * imported/w3c/webdriver/tests/element_send_keys/interactability.py: 51 * imported/w3c/webdriver/tests/element_send_keys/scroll_into_view.py: 52 * imported/w3c/webdriver/tests/execute_async_script/collections.py: 53 * imported/w3c/webdriver/tests/execute_async_script/user_prompts.py: 54 * imported/w3c/webdriver/tests/execute_script/collections.py: 55 * imported/w3c/webdriver/tests/execute_script/cyclic.py: 56 * imported/w3c/webdriver/tests/execute_script/json_serialize_windowproxy.py: Added. 57 * imported/w3c/webdriver/tests/execute_script/user_prompts.py: 58 * imported/w3c/webdriver/tests/find_element/__init__.py: Added. 59 * imported/w3c/webdriver/tests/find_element/find.py: Added. 60 * imported/w3c/webdriver/tests/find_element_from_element/__init__.py: Added. 61 * imported/w3c/webdriver/tests/find_element_from_element/find.py: Added. 62 * imported/w3c/webdriver/tests/find_elements/__init__.py: Added. 63 * imported/w3c/webdriver/tests/find_elements/find.py: Added. 64 * imported/w3c/webdriver/tests/find_elements_from_element/__init__.py: Added. 65 * imported/w3c/webdriver/tests/find_elements_from_element/find.py: Added. 66 * imported/w3c/webdriver/tests/fullscreen_window/__init__.py: Added. 67 * imported/w3c/webdriver/tests/fullscreen_window/fullscreen.py: Added. 68 * imported/w3c/webdriver/tests/fullscreen_window/user_prompts.py: Added. 69 * imported/w3c/webdriver/tests/get_active_element/__init__.py: Added. 70 * imported/w3c/webdriver/tests/get_active_element/get.py: Added. 71 * imported/w3c/webdriver/tests/get_alert_text/__init__.py: Added. 72 * imported/w3c/webdriver/tests/get_alert_text/get.py: Added. 73 * imported/w3c/webdriver/tests/get_current_url/__init__.py: Added. 74 * imported/w3c/webdriver/tests/get_current_url/get.py: Added. 75 * imported/w3c/webdriver/tests/get_current_url/user_prompts.py: Added. 76 * imported/w3c/webdriver/tests/get_element_attribute/get.py: Added. 77 * imported/w3c/webdriver/tests/get_element_property/__init__.py: Added. 78 * imported/w3c/webdriver/tests/get_element_property/get.py: Added. 79 * imported/w3c/webdriver/tests/get_element_property/user_prompts.py: Added. 80 * imported/w3c/webdriver/tests/get_element_tag_name/__init__.py: Added. 81 * imported/w3c/webdriver/tests/get_element_tag_name/get.py: Added. 82 * imported/w3c/webdriver/tests/get_element_tag_name/user_prompts.py: Added. 83 * imported/w3c/webdriver/tests/get_element_text/__init__.py: Added. 84 * imported/w3c/webdriver/tests/get_element_text/get.py: Added. 85 * imported/w3c/webdriver/tests/get_named_cookie/__init__.py: Added. 86 * imported/w3c/webdriver/tests/get_named_cookie/get.py: Added. 87 * imported/w3c/webdriver/tests/get_timeouts/__init__.py: Added. 88 * imported/w3c/webdriver/tests/get_timeouts/get.py: Added. 89 * imported/w3c/webdriver/tests/get_title/__init__.py: Added. 90 * imported/w3c/webdriver/tests/get_title/get.py: Added. 91 * imported/w3c/webdriver/tests/get_title/user_prompts.py: Added. 92 * imported/w3c/webdriver/tests/get_window_rect/__init__.py: Added. 93 * imported/w3c/webdriver/tests/get_window_rect/get.py: Added. 94 * imported/w3c/webdriver/tests/get_window_rect/user_prompts.py: Added. 95 * imported/w3c/webdriver/tests/is_element_selected/__init__.py: Added. 96 * imported/w3c/webdriver/tests/is_element_selected/selected.py: Added. 97 * imported/w3c/webdriver/tests/is_element_selected/user_prompts.py: Added. 98 * imported/w3c/webdriver/tests/maximize_window/__init__.py: Added. 99 * imported/w3c/webdriver/tests/maximize_window/maximize.py: Added. 100 * imported/w3c/webdriver/tests/maximize_window/user_prompts.py: Added. 101 * imported/w3c/webdriver/tests/minimize_window/__init__.py: Added. 102 * imported/w3c/webdriver/tests/minimize_window/minimize.py: Added. 103 * imported/w3c/webdriver/tests/minimize_window/user_prompts.py: Added. 104 * imported/w3c/webdriver/tests/new_session/__init__.py: Added. 105 * imported/w3c/webdriver/tests/new_session/conftest.py: Added. 106 * imported/w3c/webdriver/tests/new_session/create_alwaysMatch.py: Added. 107 * imported/w3c/webdriver/tests/new_session/create_firstMatch.py: Added. 108 * imported/w3c/webdriver/tests/new_session/default_values.py: Added. 109 * imported/w3c/webdriver/tests/new_session/invalid_capabilities.py: Added. 110 * imported/w3c/webdriver/tests/new_session/merge.py: Added. 111 * imported/w3c/webdriver/tests/new_session/response.py: Added. 112 * imported/w3c/webdriver/tests/new_session/support/__init__.py: Added. 113 * imported/w3c/webdriver/tests/new_session/support/create.py: Added. 114 * imported/w3c/webdriver/tests/page_source/__init__.py: Added. 115 * imported/w3c/webdriver/tests/page_source/source.py: Added. 116 * imported/w3c/webdriver/tests/send_alert_text/__init__.py: Added. 117 * imported/w3c/webdriver/tests/send_alert_text/send.py: Added. 118 * imported/w3c/webdriver/tests/set_window_rect/__init__.py: Added. 119 * imported/w3c/webdriver/tests/set_window_rect/resizing_and_positioning.py: Added. 120 * imported/w3c/webdriver/tests/set_window_rect/set.py: Added. 121 * imported/w3c/webdriver/tests/set_window_rect/user_prompts.py: Added. 122 * imported/w3c/webdriver/tests/status/__init__.py: Added. 123 * imported/w3c/webdriver/tests/status/status.py: Added. 124 * imported/w3c/webdriver/tests/support/fixtures.py: 125 * imported/w3c/webdriver/tests/support/inline.py: 126 * imported/w3c/webdriver/tests/switch_to_parent_frame/__init__.py: Added. 127 * imported/w3c/webdriver/tests/switch_to_parent_frame/switch.py: Added. 128 1 129 2018-05-09 Carlos Garcia Campos <cgarcia@igalia.com> 2 130 -
trunk/WebDriverTests/imported/w3c/importer.json
r230953 r231727 1 1 { 2 2 "repository": "https://github.com/w3c/web-platform-tests.git", 3 "revision": " 564cfb3a6bd13e949d5c49ad6e5f2cb3752173f3",3 "revision": "389b958c00a4d6b897bfce284c0c88bf451fb6b8", 4 4 "paths_to_import": [ 5 5 "tools/webdriver", -
trunk/WebDriverTests/imported/w3c/tools/webdriver/webdriver/client.py
r230953 r231727 537 537 @command 538 538 def close(self): 539 return self.send_session_command("DELETE", "window") 539 handles = self.send_session_command("DELETE", "window") 540 if len(handles) == 0: 541 # With no more open top-level browsing contexts, the session is closed. 542 self.session_id = None 543 544 return handles 540 545 541 546 @property … … 558 563 559 564 @command 560 def set_cookie(self, name, value, path=None, domain=None, secure=None, expiry=None): 561 body = {"name": name, 562 "value": value} 565 def set_cookie(self, name, value, path=None, domain=None, 566 secure=None, expiry=None, http_only=None): 567 body = { 568 "name": name, 569 "value": value, 570 } 571 572 if domain is not None: 573 body["domain"] = domain 574 if expiry is not None: 575 body["expiry"] = expiry 576 if http_only is not None: 577 body["httpOnly"] = http_only 563 578 if path is not None: 564 579 body["path"] = path 565 if domain is not None:566 body["domain"] = domain567 580 if secure is not None: 568 581 body["secure"] = secure 569 if expiry is not None:570 body["expiry"] = expiry571 582 self.send_session_command("POST", "cookie", {"cookie": body}) 572 583 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_chrome.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_chrome_android.txt
r231723 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_edge.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_firefox.txt
r230953 r231727 1 1 marionette_driver==2.6.0 2 mozprofile==1. 0.02 mozprofile==1.1.0 3 3 mozprocess == 0.26 4 4 mozcrash == 1.0 5 mozrunner ==6.155 mozrunner == 7.0.0 6 6 mozleak == 0.1 7 7 mozinstall == 1.15 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_ie.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_opera.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_safari.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/requirements_sauce.txt
r230953 r231727 1 1 mozprocess == 0.26 2 selenium==3.1 1.02 selenium==3.12.0 3 3 requests==2.18.4 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/firefox.py
r230953 r231727 1 import json 1 2 import os 2 3 import platform … … 103 104 options["args"] = kwargs["binary_args"] 104 105 options["prefs"] = { 105 "network.dns.localDomains": ",".join(server_config.domains .itervalues())106 "network.dns.localDomains": ",".join(server_config.domains_set) 106 107 } 107 108 capabilities["moz:firefoxOptions"] = options … … 199 200 self.profile.set_preferences({"marionette.port": self.marionette_port, 200 201 "dom.disable_open_during_load": False, 201 "network.dns.localDomains": ",".join(self.config.domains .itervalues()),202 "network.dns.localDomains": ",".join(self.config.domains_set), 202 203 "network.proxy.type": 0, 203 204 "places.history.enabled": False, … … 246 247 prefs = Preferences() 247 248 248 prefs_path = os.path.join(self.prefs_root, "prefs_general.js") 249 if os.path.exists(prefs_path): 250 prefs.add(Preferences.read_prefs(prefs_path)) 251 else: 252 self.logger.warning("Failed to find base prefs file in %s" % prefs_path) 249 pref_paths = [] 250 prefs_general = os.path.join(self.prefs_root, 'prefs_general.js') 251 if os.path.isfile(prefs_general): 252 # Old preference file used in Firefox 60 and earlier (remove when no longer supported) 253 pref_paths.append(prefs_general) 254 255 profiles = os.path.join(self.prefs_root, 'profiles.json') 256 if os.path.isfile(profiles): 257 with open(profiles, 'r') as fh: 258 for name in json.load(fh)['web-platform-tests']: 259 pref_paths.append(os.path.join(self.prefs_root, name, 'user.js')) 260 261 for path in pref_paths: 262 if os.path.exists(path): 263 prefs.add(Preferences.read_prefs(path)) 264 else: 265 self.logger.warning("Failed to find base prefs file in %s" % path) 253 266 254 267 # Add any custom preferences -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/sauce.py
r230953 r231727 167 167 "--readyfile=./sauce_is_ready", 168 168 "--tunnel-domains", 169 ",".join(self.env_config ['domains'].values())169 ",".join(self.env_config.domains_set) 170 170 ]) 171 171 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/environment.py
r230953 r231727 11 11 from wptlogging import LogLevelRewriter 12 12 from wptserve.handlers import StringHandler 13 from wptserve import sslutils 13 14 14 15 here = os.path.split(__file__)[0] … … 16 17 17 18 serve = None 18 sslutils = None19 19 20 20 … … 31 31 except ImportError: 32 32 failed.append("serve") 33 34 try:35 import sslutils36 except ImportError:37 failed.append("sslutils")38 33 39 34 if failed: … … 135 130 136 131 def load_config(self): 137 default_config_path = os.path.join(serve_path(self.test_paths), "config.default.json")138 132 override_path = os.path.join(serve_path(self.test_paths), "config.json") 139 133 140 with open(default_config_path) as f: 141 default_config = json.load(f) 142 143 config = serve.Config(override_ssl_env=self.ssl_env, **default_config) 134 config = serve.Config(override_ssl_env=self.ssl_env) 144 135 145 136 config.ports = { 146 137 "http": [8000, 8001], 147 138 "https": [8443], 148 "ws": [8888] 139 "ws": [8888], 140 "wss": [8889], 149 141 } 150 142 … … 222 214 def ensure_started(self): 223 215 # Pause for a while to ensure that the server has a chance to start 224 for _ in xrange( 20):216 for _ in xrange(60): 225 217 failed = self.test_servers() 226 218 if not failed: -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/base.py
r230953 r231727 105 105 convert_result = None 106 106 supports_testdriver = False 107 supports_jsshell = False 107 108 108 109 def __init__(self, browser, server_config, timeout_multiplier=1, … … 154 155 if test.environment != self.last_environment: 155 156 self.on_environment_change(test.environment) 156 157 157 try: 158 158 result = self.do_test(test) 159 159 except Exception as e: 160 self.logger.warning(traceback.format_exc(e)) 160 161 result = self.result_from_exception(test, e) 161 162 … … 548 549 self.protocol.testdriver.send_message(message_type, status, message=message) 549 550 551 550 552 class ClickAction(object): 551 553 def __init__(self, logger, protocol): … … 562 564 self.logger.debug("Clicking element: %s" % selector) 563 565 self.protocol.click.element(elements[0]) 566 564 567 565 568 class SendKeysAction(object): -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py
r230953 r231727 61 61 def execute_script(self, script, async=False): 62 62 method = self.marionette.execute_async_script if async else self.marionette.execute_script 63 return method(script, new_sandbox=False )63 return method(script, new_sandbox=False, sandbox=None) 64 64 65 65 def set_timeout(self, timeout): … … 120 120 def load_runner(self, url_protocol): 121 121 # Check if we previously had a test window open, and if we did make sure it's closed 122 self. marionette.execute_script("if (window.win) {window.win.close()}")122 self.parent.base.execute_script("if (window.win) {window.win.close()}") 123 123 url = urlparse.urljoin(self.parent.executor.server_url(url_protocol), 124 124 "/testharness_runner.html") … … 134 134 "prevent access.\e%s" % (url, traceback.format_exc(e))) 135 135 raise 136 self. marionette.execute_script(136 self.parent.base.execute_script( 137 137 "document.title = '%s'" % threading.current_thread().name.replace("'", '"')) 138 138 … … 184 184 try: 185 185 # Try this, it's in Level 1 but nothing supports it yet 186 win_s = self. marionette.execute_script("return window['%s'];" % self.window_id)186 win_s = self.parent.base.execute_script("return window['%s'];" % self.window_id) 187 187 win_obj = json.loads(win_s) 188 188 test_window = win_obj["window-fcc6-11e5-b4f8-330a88ab9d7f"] … … 327 327 if message: 328 328 obj["message"] = str(message) 329 self. marionette.execute_script("window.postMessage(%s, '*')" % json.dumps(obj))329 self.parent.base.execute_script("window.postMessage(%s, '*')" % json.dumps(obj)) 330 330 331 331 … … 476 476 message += "\n" 477 477 message += traceback.format_exc(e) 478 self.result = False, ("INTERNAL-ERROR", e) 478 self.logger.warning(message) 479 self.result = False, ("INTERNAL-ERROR", None) 479 480 480 481 finally: … … 494 495 495 496 self.protocol = MarionetteProtocol(self, browser, capabilities, timeout_multiplier) 496 self.script = open(os.path.join(here, "testharness_ marionette.js")).read()497 self.script_resume = open(os.path.join(here, "testharness_ marionette_resume.js")).read()497 self.script = open(os.path.join(here, "testharness_webdriver.js")).read() 498 self.script_resume = open(os.path.join(here, "testharness_webdriver_resume.js")).read() 498 499 self.close_after_done = close_after_done 499 500 self.window_id = str(uuid.uuid4()) … … 552 553 result = protocol.base.execute_script( 553 554 self.script_resume % format_map, async=True) 555 if result is None: 556 # This can happen if we get an content process crash 557 return None 554 558 done, rv = handler(result) 555 559 if done: … … 640 644 timeout).run() 641 645 642 def _screenshot(self, marionette, url, timeout):643 marionette.navigate(url)644 645 marionette.execute_async_script(self.wait_script)646 647 screenshot = marionette.screenshot(full=False)646 def _screenshot(self, protocol, url, timeout): 647 protocol.marionette.navigate(url) 648 649 protocol.base.execute_script(self.wait_script, async=True) 650 651 screenshot = protocol.marionette.screenshot(full=False) 648 652 # strip off the data:img/png, part of the url 649 653 if screenshot.startswith("data:image/png;base64,"): -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/formatters.py
r224014 r231727 9 9 def __init__(self): 10 10 self.raw_results = {} 11 self.results = {} 12 13 def suite_start(self, data): 14 self.results['run_info'] = data['run_info'] 15 self.results['time_start'] = data['time'] 11 16 12 17 def suite_end(self, data): 13 results = {}14 results["results"] = []18 self.results['time_end'] = data['time'] 19 self.results["results"] = [] 15 20 for test_name in self.raw_results: 16 21 result = {"test": test_name} 17 22 result.update(self.raw_results[test_name]) 18 results["results"].append(result)19 return json.dumps( results)23 self.results["results"].append(result) 24 return json.dumps(self.results) 20 25 21 26 def find_or_create_test(self, data): -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/reduce.py
r224014 r231727 48 48 run_info = wpttest.get_run_info(kwargs["metadata_root"], 49 49 kwargs["product"], 50 browser_version=kwargs.get("browser_version"), 50 51 debug=False) 51 52 test_filter = wptrunner.TestFilter(include=kwargs["include"]) -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/testrunner.py
r230953 r231727 595 595 self.restart_on_unexpected)) 596 596 597 if (self.pause_after_test or 597 if (not file_result.status == "CRASH" and 598 self.pause_after_test or 598 599 (self.pause_on_unexpected and (subtest_unexpected or is_unexpected))): 599 600 self.logger.info("Pausing until the browser exits") -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/tests/test_products.py
r230953 r231727 10 10 11 11 sys.path.insert(0, join(dirname(__file__), "..", "..", "..", "..")) # repo root 12 13 12 from tools import localpaths 14 15 import sslutils 13 from wptserve import sslutils 16 14 17 15 from wptrunner import environment -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py
r230953 r231727 67 67 parser.add_argument("--no-capture-stdio", action="store_true", default=False, 68 68 help="Don't capture stdio and write to logging") 69 parser.add_argument("--no-fail-on-unexpected", action="store_false", 70 default=True, 71 dest="fail_on_unexpected", 72 help="Exit with status code 0 when test expectations are violated") 69 73 70 74 mode_group = parser.add_argument_group("Mode") -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptrunner.py
r230953 r231727 44 44 run_info_extras = {} 45 45 46 run_info = wpttest.get_run_info(kwargs["run_info"], product, debug=debug, 46 run_info = wpttest.get_run_info(kwargs["run_info"], product, 47 browser_version=kwargs.get("browser_version"), 48 debug=debug, 47 49 extras=run_info_extras) 48 50 … … 154 156 155 157 if "test_loader" in kwargs: 156 run_info = wpttest.get_run_info(kwargs["run_info"], product, debug=None, 158 run_info = wpttest.get_run_info(kwargs["run_info"], product, 159 browser_version=kwargs.get("browser_version"), 160 debug=None, 157 161 extras=run_info_extras(**kwargs)) 158 162 test_loader = kwargs["test_loader"] … … 246 250 logger.test_start(test.id) 247 251 logger.test_end(test.id, status="SKIP") 252 elif test.jsshell and not executor_cls.supports_jsshell: 253 # We expect that tests for JavaScript shells 254 # will not be run along with tests that run in 255 # a full web browser, so we silently skip them 256 # here. 257 pass 248 258 else: 249 259 run_tests["testharness"].append(test) … … 284 294 return False 285 295 296 if unexpected_total and not kwargs["fail_on_unexpected"]: 297 logger.info("Tolerating %s unexpected results" % unexpected_total) 298 return True 299 286 300 return unexpected_total == 0 287 301 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wpttest.py
r230953 r231727 66 66 67 67 class RunInfo(dict): 68 def __init__(self, metadata_root, product, debug, extras=None):68 def __init__(self, metadata_root, product, debug, browser_version=None, extras=None): 69 69 import mozinfo 70 70 … … 83 83 if "STYLO_FORCE_DISABLED" in os.environ: 84 84 self["stylo"] = False 85 if browser_version: 86 self["browser_version"] = browser_version 85 87 if extras is not None: 86 88 self.update(extras) … … 245 247 246 248 def __init__(self, tests_root, url, inherit_metadata, test_metadata, 247 timeout=None, path=None, protocol="http", testdriver=False): 249 timeout=None, path=None, protocol="http", testdriver=False, 250 jsshell=False): 248 251 Test.__init__(self, tests_root, url, inherit_metadata, test_metadata, timeout, 249 252 path, protocol) 250 253 251 254 self.testdriver = testdriver 255 self.jsshell = jsshell 252 256 253 257 @classmethod … … 256 260 protocol = "https" if hasattr(manifest_item, "https") and manifest_item.https else "http" 257 261 testdriver = manifest_item.testdriver if hasattr(manifest_item, "testdriver") else False 262 jsshell = manifest_item.jsshell if hasattr(manifest_item, "jsshell") else False 258 263 return cls(manifest_item.source_file.tests_root, 259 264 manifest_item.url, … … 263 268 path=manifest_item.source_file.path, 264 269 protocol=protocol, 265 testdriver=testdriver) 270 testdriver=testdriver, 271 jsshell=jsshell) 266 272 267 273 @property -
trunk/WebDriverTests/imported/w3c/webdriver/tests/element_click/bubbling.py
r229166 r231727 2 2 from tests.support.inline import inline 3 3 4 def click(session, element): 4 5 def element_click(session, element): 5 6 return session.transport.send( 6 7 "POST", "/session/{session_id}/element/{element_id}/click".format( … … 136 137 function logEvent({type, target, currentTarget}) { 137 138 log.innerHTML += "<p></p>"; 138 log.lastElementChild.textContent = `${type} in ${target.id} (handled by ${currentTarget.id})`; 139 log.lastElementChild.textContent = 140 `${type} in ${target.id} (handled by ${currentTarget.id})`; 139 141 } 140 142 … … 145 147 } 146 148 147 over.addEventListener("mousedown", () => over.style.display = "none"); 149 over.addEventListener("mousedown", function(mousedownEvent) { 150 over.style.display = "none"; 151 }); 148 152 </script> 149 153 """) … … 151 155 152 156 # should not time out 153 response = click(session, over)157 response = element_click(session, over) 154 158 assert_success(response) -
trunk/WebDriverTests/imported/w3c/webdriver/tests/element_click/stale.py
r225076 r231727 1 import pytest2 import webdriver3 4 1 from tests.support.asserts import assert_error 5 2 from tests.support.inline import inline 6 3 7 4 8 def click_element(session, element):5 def element_click(session, element): 9 6 return session.transport.send( 10 "POST", "/session/{session_id}/element/{element_id}/click".format(**{ 11 "session_id": session.session_id, 12 "element_id": element.id, 13 })) 7 "POST", "/session/{session_id}/element/{element_id}/click".format( 8 session_id=session.session_id, 9 element_id=element.id)) 14 10 15 11 … … 19 15 session.url = inline("<button>bar</button>") 20 16 21 response = click_element(session, button)17 response = element_click(session, button) 22 18 assert_error(response, "stale element reference") -
trunk/WebDriverTests/imported/w3c/webdriver/tests/element_send_keys/form_controls.py
r230953 r231727 10 10 11 11 12 def element_send_keys(session, element, text):12 def send_keys_to_element(session, element, text): 13 13 return session.transport.send( 14 "POST", 15 "/session/{session_id}/element/{element_id}/value".format( 14 "POST", "/session/{session_id}/element/{element_id}/value".format( 16 15 session_id=session.session_id, 17 16 element_id=element.id), … … 38 37 assert element.property("value") == "" 39 38 40 element_send_keys(session, element, "foo")39 send_keys_to_element(session, element, "foo") 41 40 assert element.property("value") == "foo" 42 41 assert_element_has_focus(element) … … 48 47 assert element.property("value") == "" 49 48 50 element_send_keys(session, element, "foo")49 send_keys_to_element(session, element, "foo") 51 50 assert element.property("value") == "foo" 52 51 assert_element_has_focus(element) … … 58 57 assert element.property("value") == "a" 59 58 60 element_send_keys(session, element, "b")59 send_keys_to_element(session, element, "b") 61 60 assert element.property("value") == "ab" 62 61 63 element_send_keys(session, element, "c")62 send_keys_to_element(session, element, "c") 64 63 assert element.property("value") == "abc" 65 64 … … 70 69 assert element.property("value") == "a" 71 70 72 element_send_keys(session, element, "b")71 send_keys_to_element(session, element, "b") 73 72 assert element.property("value") == "ab" 74 73 75 element_send_keys(session, element, "c")74 send_keys_to_element(session, element, "c") 76 75 assert element.property("value") == "abc" 77 76 … … 83 82 add_event_listeners(element) 84 83 85 element_send_keys(session, element, "foo")84 send_keys_to_element(session, element, "foo") 86 85 assert element.property("value") == "foo" 87 86 assert get_events(session) == ["focus", … … 105 104 element = session.find.css(tag, all=False) 106 105 107 element_send_keys(session, element, "")106 send_keys_to_element(session, element, "") 108 107 assert_element_has_focus(element) -
trunk/WebDriverTests/imported/w3c/webdriver/tests/element_send_keys/interactability.py
r229166 r231727 3 3 4 4 5 def send_keys_to_element(session, element, text):5 def element_send_keys(session, element, text): 6 6 return session.transport.send( 7 "POST", 8 "/session/{session_id}/element/{element_id}/value".format( 7 "POST", "/session/{session_id}/element/{element_id}/value".format( 9 8 session_id=session.session_id, 10 9 element_id=element.id), … … 25 24 assert session.active_element is element 26 25 27 response = send_keys_to_element(session, element, "foo")26 response = element_send_keys(session, element, "foo") 28 27 assert_success(response) 29 28 assert session.active_element is element … … 45 44 assert session.active_element is body 46 45 47 response = send_keys_to_element(session, element, "foo")46 response = element_send_keys(session, element, "foo") 48 47 assert_success(response) 49 48 assert session.active_element is element … … 64 63 assert session.active_element is body 65 64 66 response = send_keys_to_element(session, frame, "foo")65 response = element_send_keys(session, frame, "foo") 67 66 assert_success(response) 68 67 assert session.active_element is frame … … 79 78 element = session.find.css("input", all=False) 80 79 81 response = send_keys_to_element(session, element, "foo")80 response = element_send_keys(session, element, "foo") 82 81 assert_success(response) 83 82 assert element.property("value") == "foo" … … 88 87 element = session.find.css("input", all=False) 89 88 90 response = send_keys_to_element(session, element, "foo")89 response = element_send_keys(session, element, "foo") 91 90 assert_success(response) 92 91 assert element.property("value") == "" … … 100 99 element = session.find.css("input", all=False) 101 100 102 response = send_keys_to_element(session, element, "foo")101 response = element_send_keys(session, element, "foo") 103 102 assert_success(response) 104 103 assert element.property("value") == "foo" … … 109 108 element = session.find.css("div", all=False) 110 109 111 response = send_keys_to_element(session, element, "foo")110 response = element_send_keys(session, element, "foo") 112 111 assert_error(response, "element not interactable") 113 112 … … 117 116 element = session.find.css("input", all=False) 118 117 119 response = send_keys_to_element(session, element, "foo")118 response = element_send_keys(session, element, "foo") 120 119 assert_error(response, "element not interactable") 121 120 … … 125 124 element = session.find.css("input", all=False) 126 125 127 response = send_keys_to_element(session, element, "foo")126 response = element_send_keys(session, element, "foo") 128 127 assert_error(response, "element not interactable") 129 128 … … 133 132 element = session.find.css("input", all=False) 134 133 135 response = send_keys_to_element(session, element, "foo")134 response = element_send_keys(session, element, "foo") 136 135 assert_error(response, "element not interactable") -
trunk/WebDriverTests/imported/w3c/webdriver/tests/element_send_keys/scroll_into_view.py
r226708 r231727 4 4 5 5 6 def send_keys_to_element(session, element, text):6 def element_send_keys(session, element, text): 7 7 return session.transport.send( 8 "POST", 9 "/session/{session_id}/element/{element_id}/value".format( 8 "POST", "/session/{session_id}/element/{element_id}/value".format( 10 9 session_id=session.session_id, 11 10 element_id=element.id), … … 17 16 element = session.find.css("input", all=False) 18 17 19 response = send_keys_to_element(session, element, "foo")18 response = element_send_keys(session, element, "foo") 20 19 assert_success(response) 21 20 … … 27 26 element = session.find.css("input", all=False) 28 27 29 response = send_keys_to_element(session, element, "foo")28 response = element_send_keys(session, element, "foo") 30 29 assert_success(response) 31 30 … … 43 42 select = session.find.css("select", all=False) 44 43 45 response = send_keys_to_element(session, element, "bar")44 response = element_send_keys(session, element, "bar") 46 45 assert_success(response) 47 46 … … 61 60 option_bar = session.find.css("option#bar", all=False) 62 61 63 response = send_keys_to_element(session, option_bar, "bar")62 response = element_send_keys(session, option_bar, "bar") 64 63 assert_success(response) 65 64 … … 73 72 element = session.find.css("div", all=False) 74 73 75 response = send_keys_to_element(session, element, "foo")74 response = element_send_keys(session, element, "foo") 76 75 assert_success(response) 77 76 -
trunk/WebDriverTests/imported/w3c/webdriver/tests/execute_async_script/collections.py
r230953 r231727 9 9 args = [] 10 10 body = {"script": script, "args": args} 11 11 12 return session.transport.send( 12 "POST", 13 "/session/{session_id}/execute/async".format(**vars(session)), 13 "POST", "/session/{session_id}/execute/async".format(**vars(session)), 14 14 body) 15 15 -
trunk/WebDriverTests/imported/w3c/webdriver/tests/execute_async_script/user_prompts.py
r230953 r231727 3 3 from webdriver import error 4 4 5 from tests.support.asserts import assert_success 5 6 6 # 15.2 Executing Script 7 8 def execute_async_script(session, script, args=None): 9 if args is None: 10 args = [] 11 body = {"script": script, "args": args} 12 13 return session.transport.send( 14 "POST", "/session/{session_id}/execute/async".format(**vars(session)), 15 body) 16 7 17 8 18 def test_handle_prompt_accept(new_session, add_browser_capabilites): 9 19 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) 10 value = session.execute_async_script("window.alert('Hello');") 11 assert value is None 12 title = session.title 20 21 response = execute_async_script(session, "window.alert('Hello');") 22 assert_success(response, None) 23 24 session.title 13 25 with pytest.raises(error.NoSuchAlertException): 14 26 session.alert.accept() … … 17 29 def test_handle_prompt_dismiss(new_session, add_browser_capabilites): 18 30 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) 19 value = session.execute_async_script("window.alert('Hello');") 20 assert value is None 21 title = session.title 31 32 response = execute_async_script(session, "window.alert('Hello');") 33 assert_success(response, None) 34 35 session.title 22 36 with pytest.raises(error.NoSuchAlertException): 23 37 session.alert.dismiss() … … 26 40 def test_handle_prompt_dismiss_and_notify(new_session, add_browser_capabilites): 27 41 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss and notify"})}}) 28 value = session.execute_async_script("window.alert('Hello');") 29 assert value is None 42 43 response = execute_async_script(session, "window.alert('Hello');") 44 assert_success(response, None) 45 30 46 with pytest.raises(error.UnexpectedAlertOpenException): 31 title =session.title47 session.title 32 48 with pytest.raises(error.NoSuchAlertException): 33 49 session.alert.dismiss() … … 36 52 def test_handle_prompt_accept_and_notify(new_session, add_browser_capabilites): 37 53 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept and notify"})}}) 38 value = session.execute_async_script("window.alert('Hello');") 39 assert value is None 54 55 response = execute_async_script(session, "window.alert('Hello');") 56 assert_success(response, None) 57 40 58 with pytest.raises(error.UnexpectedAlertOpenException): 41 title =session.title59 session.title 42 60 with pytest.raises(error.NoSuchAlertException): 43 61 session.alert.accept() … … 46 64 def test_handle_prompt_ignore(new_session, add_browser_capabilites): 47 65 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "ignore"})}}) 48 value = session.execute_async_script("window.alert('Hello');") 49 assert value is None 66 67 response = execute_async_script(session, "window.alert('Hello');") 68 assert_success(response, None) 69 50 70 with pytest.raises(error.UnexpectedAlertOpenException): 51 title =session.title71 session.title 52 72 session.alert.dismiss() 53 73 … … 55 75 def test_handle_prompt_default(new_session, add_browser_capabilites): 56 76 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) 57 value = session.execute_async_script("window.alert('Hello');") 58 assert value is None 77 78 response = execute_async_script(session, "window.alert('Hello');") 79 assert_success(response, None) 80 59 81 with pytest.raises(error.UnexpectedAlertOpenException): 60 title =session.title82 session.title 61 83 with pytest.raises(error.NoSuchAlertException): 62 84 session.alert.dismiss() … … 65 87 def test_handle_prompt_twice(new_session, add_browser_capabilites): 66 88 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) 67 value = session.execute_async_script("window.alert('Hello');window.alert('Bye');") 68 assert value is None 89 90 response = execute_async_script(session, "window.alert('Hello');window.alert('Bye');") 91 assert_success(response, None) 92 69 93 session.alert.dismiss() 70 94 # The first alert has been accepted by the user prompt handler, the second one remains. -
trunk/WebDriverTests/imported/w3c/webdriver/tests/execute_script/collections.py
r230953 r231727 9 9 args = [] 10 10 body = {"script": script, "args": args} 11 11 12 return session.transport.send( 12 "POST", 13 "/session/{session_id}/execute/sync".format(**vars(session)), 13 "POST", "/session/{session_id}/execute/sync".format(**vars(session)), 14 14 body) 15 15 -
trunk/WebDriverTests/imported/w3c/webdriver/tests/execute_script/cyclic.py
r229166 r231727 6 6 args = [] 7 7 body = {"script": script, "args": args} 8 8 9 return session.transport.send( 9 "POST", 10 "/session/{session_id}/execute/sync".format( 10 "POST", "/session/{session_id}/execute/sync".format( 11 11 session_id=session.session_id), 12 12 body) -
trunk/WebDriverTests/imported/w3c/webdriver/tests/execute_script/user_prompts.py
r230953 r231727 3 3 from webdriver import error 4 4 5 from tests.support.asserts import assert_success 5 6 6 # 15.2 Executing Script 7 8 def execute_script(session, script, args=None): 9 if args is None: 10 args = [] 11 body = {"script": script, "args": args} 12 13 return session.transport.send( 14 "POST", "/session/{session_id}/execute/sync".format( 15 session_id=session.session_id), 16 body) 17 7 18 8 19 def test_handle_prompt_accept(new_session, add_browser_capabilites): 9 20 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) 10 value = session.execute_script("window.alert('Hello');") 11 assert value is None 12 title = session.title 21 22 response = execute_script(session, "window.alert('Hello');") 23 assert_success(response, None) 24 25 session.title 13 26 with pytest.raises(error.NoSuchAlertException): 14 27 session.alert.accept() … … 17 30 def test_handle_prompt_dismiss(new_session, add_browser_capabilites): 18 31 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) 19 value = session.execute_script("window.alert('Hello');") 20 assert value is None 21 title = session.title 32 33 response = execute_script(session, "window.alert('Hello');") 34 assert_success(response, None) 35 36 session.title 22 37 with pytest.raises(error.NoSuchAlertException): 23 38 session.alert.dismiss() … … 26 41 def test_handle_prompt_dismiss_and_notify(new_session, add_browser_capabilites): 27 42 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss and notify"})}}) 28 value = session.execute_script("window.alert('Hello');") 29 assert value is None 43 44 response = execute_script(session, "window.alert('Hello');") 45 assert_success(response, None) 46 30 47 with pytest.raises(error.UnexpectedAlertOpenException): 31 title =session.title48 session.title 32 49 with pytest.raises(error.NoSuchAlertException): 33 50 session.alert.dismiss() … … 36 53 def test_handle_prompt_accept_and_notify(new_session, add_browser_capabilites): 37 54 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept and notify"})}}) 38 value = session.execute_script("window.alert('Hello');") 39 assert value is None 55 56 response = execute_script(session, "window.alert('Hello');") 57 assert_success(response, None) 58 40 59 with pytest.raises(error.UnexpectedAlertOpenException): 41 title =session.title60 session.title 42 61 with pytest.raises(error.NoSuchAlertException): 43 62 session.alert.accept() … … 46 65 def test_handle_prompt_ignore(new_session, add_browser_capabilites): 47 66 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "ignore"})}}) 48 value = session.execute_script("window.alert('Hello');") 49 assert value is None 67 68 response = execute_script(session, "window.alert('Hello');") 69 assert_success(response, None) 70 50 71 with pytest.raises(error.UnexpectedAlertOpenException): 51 title =session.title72 session.title 52 73 session.alert.dismiss() 53 74 … … 55 76 def test_handle_prompt_default(new_session, add_browser_capabilites): 56 77 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) 57 value = session.execute_script("window.alert('Hello');") 58 assert value is None 78 79 response = execute_script(session, "window.alert('Hello');") 80 assert_success(response, None) 81 59 82 with pytest.raises(error.UnexpectedAlertOpenException): 60 title =session.title83 session.title 61 84 with pytest.raises(error.NoSuchAlertException): 62 85 session.alert.dismiss() … … 65 88 def test_handle_prompt_twice(new_session, add_browser_capabilites): 66 89 _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) 67 value = session.execute_script("window.alert('Hello');window.alert('Bye');") 68 assert value is None 90 91 response = execute_script(session, "window.alert('Hello');window.alert('Bye');") 92 assert_success(response, None) 93 69 94 session.alert.dismiss() 70 95 # The first alert has been accepted by the user prompt handler, the second one remains. -
trunk/WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py
r230953 r231727 77 77 78 78 79 @ignore_exceptions 79 80 def _switch_to_top_level_browsing_context(session): 80 81 """If the current browsing context selected by WebDriver is a -
trunk/WebDriverTests/imported/w3c/webdriver/tests/support/inline.py
r224014 r231727 41 41 rv = 404, [("Content-Type", "text/plain")], "Missing doc parameter in query" 42 42 else: 43 rv = [("Content-Type", content_type)], doc 43 response.headers.update([ 44 ("Content-Type", content_type), 45 ("X-XSS-Protection", "0") 46 ]) 47 rv = doc 44 48 return rv
Note: See TracChangeset
for help on using the changeset viewer.