Skip to content

Commit 7d55e7b

Browse files
cookiecrookmoz-wptsync-bot
authored andcommitted
Bug 1819504 [wpt PR 38758] - Update testdriver to support computedrole/computedlabel, a=testonly
Automatic update from web-platform-tests Update testdriver to support computedrole/computedlabel (#38758) Closes web-platform-tests/interop-accessibility#5 Includes basic explicit and implcit role/label tests each for accname (in /accname) and aria role computation (in /aria/role) -- wpt-commits: 790bb1a2ce2d99442f2e72054dd090a4b5b9c29c wpt-pr: 38758
1 parent de517dd commit 7d55e7b

File tree

9 files changed

+170
-0
lines changed

9 files changed

+170
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!doctype html>
2+
<script src="/resources/testharness.js"></script>
3+
<script src="/resources/testharnessreport.js"></script>
4+
<script src="/resources/testdriver.js"></script>
5+
<script src="/resources/testdriver-vendor.js"></script>
6+
<script src="/resources/testdriver-actions.js"></script>
7+
8+
<div id='d' style='height: 100px; width: 100px' role="group" aria-label="test label"></div>
9+
<h1 id="h">test heading</h1>
10+
<script>
11+
12+
promise_test(async t => {
13+
const label = await test_driver.get_computed_label(document.getElementById('d'));
14+
assert_true(label == "test label");
15+
}, "tests labelFrom: author");
16+
17+
promise_test(async t => {
18+
const label = await test_driver.get_computed_label(document.getElementById('h'));
19+
assert_true(label == "test heading");
20+
}, "tests labelFrom: contents");
21+
22+
</script>

testing/web-platform/tests/docs/writing-tests/testdriver.md

+7
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ the global scope.
8787
8888
```
8989

90+
### Accessibility ###
91+
```eval_rst
92+
.. js:autofunction:: test_driver.get_computed_label
93+
.. js:autofunction:: test_driver.get_computed_role
94+
95+
```
96+
9097
### Seure Payment Confirmation ###
9198
```eval_rst
9299
.. js:autofunction:: test_driver.set_spc_transaction_mode

testing/web-platform/tests/resources/testdriver.js

+34
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,40 @@
220220
return cookie;
221221
},
222222

223+
/**
224+
* Get Computed Label for an element.
225+
*
226+
* This matches the behaviour of the
227+
* `Get Computed Label
228+
* <https://w3c.github.io/webdriver/#dfn-get-computed-label>`_
229+
* WebDriver command.
230+
*
231+
* @param {Element} element
232+
* @returns {Promise} fulfilled after the computed label is returned, or
233+
* rejected in the cases the WebDriver command errors
234+
*/
235+
get_computed_label: async function(element) {
236+
let label = await window.test_driver_internal.get_computed_label(element);
237+
return label;
238+
},
239+
240+
/**
241+
* Get Computed Role for an element.
242+
*
243+
* This matches the behaviour of the
244+
* `Get Computed Label
245+
* <https://w3c.github.io/webdriver/#dfn-get-computed-role>`_
246+
* WebDriver command.
247+
*
248+
* @param {Element} element
249+
* @returns {Promise} fulfilled after the computed role is returned, or
250+
* rejected in the cases the WebDriver command errors
251+
*/
252+
get_computed_role: async function(element) {
253+
let role = await window.test_driver_internal.get_computed_role(element);
254+
return role;
255+
},
256+
223257
/**
224258
* Send keys to an element.
225259
*

testing/web-platform/tests/tools/webdriver/webdriver/client.py

+8
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,14 @@ def shadow_root(self):
893893
def attribute(self, name):
894894
return self.send_element_command("GET", "attribute/%s" % name)
895895

896+
@command
897+
def get_computed_label(self):
898+
return self.send_element_command("GET", "computedlabel")
899+
900+
@command
901+
def get_computed_role(self):
902+
return self.send_element_command("GET", "computedrole")
903+
896904
# This MUST come last because otherwise @property decorators above
897905
# will be overridden by this.
898906
@command

testing/web-platform/tests/tools/wptrunner/wptrunner/executors/actions.py

+30
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,34 @@ def __call__(self, payload):
3838
return self.protocol.cookies.get_all_cookies()
3939

4040

41+
class GetComputedLabelAction:
42+
name = "get_computed_label"
43+
44+
def __init__(self, logger, protocol):
45+
self.logger = logger
46+
self.protocol = protocol
47+
48+
def __call__(self, payload):
49+
selector = payload["selector"]
50+
element = self.protocol.select.element_by_selector(selector)
51+
self.logger.debug("Getting computed label for element: %s" % element)
52+
return self.protocol.accessibility.get_computed_label(element)
53+
54+
55+
class GetComputedRoleAction:
56+
name = "get_computed_role"
57+
58+
def __init__(self, logger, protocol):
59+
self.logger = logger
60+
self.protocol = protocol
61+
62+
def __call__(self, payload):
63+
selector = payload["selector"]
64+
element = self.protocol.select.element_by_selector(selector)
65+
self.logger.debug("Getting computed role for element: %s" % element)
66+
return self.protocol.accessibility.get_computed_role(element)
67+
68+
4169
class GetNamedCookieAction:
4270
name = "get_named_cookie"
4371

@@ -253,6 +281,8 @@ def __call__(self, payload):
253281
DeleteAllCookiesAction,
254282
GetAllCookiesAction,
255283
GetNamedCookieAction,
284+
GetComputedLabelAction,
285+
GetComputedRoleAction,
256286
SendKeysAction,
257287
MinimizeWindowAction,
258288
SetWindowRectAction,

testing/web-platform/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py

+13
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
TestharnessProtocolPart,
2121
Protocol,
2222
SelectorProtocolPart,
23+
AccessibilityProtocolPart,
2324
ClickProtocolPart,
2425
CookiesProtocolPart,
2526
SendKeysProtocolPart,
@@ -186,6 +187,17 @@ def elements_by_selector(self, selector):
186187
return self.webdriver.find.css(selector)
187188

188189

190+
class WebDriverAccessibilityProtocolPart(AccessibilityProtocolPart):
191+
def setup(self):
192+
self.webdriver = self.parent.webdriver
193+
194+
def get_computed_label(self, element):
195+
return element.get_computed_label()
196+
197+
def get_computed_role(self, element):
198+
return element.get_computed_role()
199+
200+
189201
class WebDriverClickProtocolPart(ClickProtocolPart):
190202
def setup(self):
191203
self.webdriver = self.parent.webdriver
@@ -342,6 +354,7 @@ class WebDriverProtocol(Protocol):
342354
implements = [WebDriverBaseProtocolPart,
343355
WebDriverTestharnessProtocolPart,
344356
WebDriverSelectorProtocolPart,
357+
WebDriverAccessibilityProtocolPart,
345358
WebDriverClickProtocolPart,
346359
WebDriverCookiesProtocolPart,
347360
WebDriverSendKeysProtocolPart,

testing/web-platform/tests/tools/wptrunner/wptrunner/executors/protocol.py

+21
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,27 @@ def element(self, element):
299299
pass
300300

301301

302+
303+
class AccessibilityProtocolPart(ProtocolPart):
304+
"""Protocol part for accessibility introspection"""
305+
__metaclass__ = ABCMeta
306+
307+
name = "accessibility"
308+
309+
@abstractmethod
310+
def get_computed_label(self, element):
311+
"""Return the computed accessibility label for a specific element.
312+
313+
:param element: A protocol-specific handle to an element."""
314+
pass
315+
316+
def get_computed_role(self, element):
317+
"""Return the computed accessibility role for a specific element.
318+
319+
:param element: A protocol-specific handle to an element."""
320+
pass
321+
322+
302323
class CookiesProtocolPart(ProtocolPart):
303324
"""Protocol part for managing cookies"""
304325
__metaclass__ = ABCMeta

testing/web-platform/tests/tools/wptrunner/wptrunner/testdriver-extra.js

+12
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,18 @@
180180
return create_action("get_all_cookies", {context});
181181
};
182182

183+
window.test_driver_internal.get_computed_label = function(element) {
184+
const selector = get_selector(element);
185+
const context = get_context(element);
186+
return create_action("get_computed_label", {selector, context});
187+
};
188+
189+
window.test_driver_internal.get_computed_role = function(element) {
190+
const selector = get_selector(element);
191+
const context = get_context(element);
192+
return create_action("get_computed_role", {selector, context});
193+
};
194+
183195
window.test_driver_internal.get_named_cookie = function(name, context=null) {
184196
return create_action("get_named_cookie", {name, context});
185197
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<!doctype html>
2+
<script src="/resources/testharness.js"></script>
3+
<script src="/resources/testharnessreport.js"></script>
4+
<script src="/resources/testdriver.js"></script>
5+
<script src="/resources/testdriver-vendor.js"></script>
6+
<script src="/resources/testdriver-actions.js"></script>
7+
8+
<div id='d' style='height: 100px; width: 100px' role="group" aria-label="test label"></div>
9+
<h1 id="h">test heading</h1>
10+
<script>
11+
12+
promise_test(async t => {
13+
const role = await test_driver.get_computed_role(document.getElementById('d'));
14+
assert_true(role == "group");
15+
}, "tests explicit role");
16+
17+
18+
promise_test(async t => {
19+
const role = await test_driver.get_computed_role(document.getElementById('h'));
20+
assert_true(role == "heading");
21+
}, "tests implicit role");
22+
23+
</script>

0 commit comments

Comments
 (0)