aria-api

access ARIA information from JavaScript
git clone https://git.ce9e.org/aria-api.git

commit
65341b286affb2f7c599a428c4a9a5f228cd0780
parent
82413ff1410bdd9a0feda13d7a9325a544f25dc5
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-08-19 07:00
tests: add support for new wpt tests

see https://github.com/web-platform-tests/interop-2023-accessibility-testing/issues/27

Diffstat

M test/test-name.js 15 +++++++++------
M wpt.py 41 +++++++++++++++++++++++++++--------------

2 files changed, 36 insertions, 20 deletions


diff --git a/test/test-name.js b/test/test-name.js

@@ -17,13 +17,16 @@ describe('getName / getDescription', () => {
   17    17 		var _it = known_failing.includes(test.title) ? xit : it;
   18    18 		_it(test.title, () => {
   19    19 			testbed.innerHTML = test.html;
   20    -1 			var element = document.querySelector('#test');
   -1    20 			for (var element of document.querySelectorAll(test.selector)) {
   -1    21 				var name = element.dataset.expectedlabel || test.name;
   -1    22 				var description = element.dataset.expecteddescription || test.description;
   21    23 
   22    -1 			if (test.name !== null) {
   23    -1 				expect(aria.getName(element)).toBe(test.name);
   24    -1 			}
   25    -1 			if (test.description !== null) {
   26    -1 				expect(aria.getDescription(element)).toBe(test.description);
   -1    24 				if (name !== null) {
   -1    25 					expect(aria.getName(element)).toBe(name);
   -1    26 				}
   -1    27 				if (description !== null) {
   -1    28 					expect(aria.getDescription(element)).toBe(description);
   -1    29 				}
   27    30 			}
   28    31 		});
   29    32 	});

diff --git a/wpt.py b/wpt.py

@@ -6,6 +6,8 @@ tests = []
    6     6 
    7     7 
    8     8 def fenced(before, after, s):
   -1     9 	if before not in s or after not in s:
   -1    10 		return ''
    9    11 	start = s.find(before) + len(before)
   10    12 	end = s.find(after, start)
   11    13 	return s[start:end]
@@ -18,20 +20,31 @@ def get_value(word, s):
   18    20 	return fenced('"is",', ']', s[start + len(word):]).strip().strip('"')
   19    21 
   20    22 
   21    -1 for filename in os.listdir(sys.argv[1]):
   22    -1 	if not filename.endswith('.html'):
   23    -1 		continue
   24    -1 
   25    -1 	with open(os.path.join(sys.argv[1], filename)) as fh:
   26    -1 		raw = fh.read()
   27    -1 		test = {
   28    -1 			'filename': filename,
   29    -1 			'title': fenced('<title>', '</title>', raw),
   30    -1 			'html': fenced('<body>', '<div id="manualMode">', raw).strip(),
   31    -1 			'name': get_value('"accName"', raw),
   32    -1 			'description': get_value('"accDescription"', raw),
   33    -1 		}
   34    -1 		tests.append(test)
   -1    23 for root, _dirs, files in os.walk(sys.argv[1]):
   -1    24 	for filename in files:
   -1    25 		if not filename.endswith('.html'):
   -1    26 			continue
   -1    27 
   -1    28 		with open(os.path.join(root, filename)) as fh:
   -1    29 			raw = fh.read()
   -1    30 			if '<div id="manualMode">' in raw:
   -1    31 				tests.append({
   -1    32 					'filename': filename,
   -1    33 					'title': fenced('<title>', '</title>', raw),
   -1    34 					'html': fenced('<body>', '<div id="manualMode">', raw).strip(),
   -1    35 					'name': get_value('"accName"', raw),
   -1    36 					'description': get_value('"accDescription"', raw),
   -1    37 					'selector': '#test',
   -1    38 				})
   -1    39 			elif 'class="ex"' in raw:
   -1    40 				tests.append({
   -1    41 					'filename': filename,
   -1    42 					'title': fenced('<title>', '</title>', raw),
   -1    43 					'html': fenced('<body>', '<script>', raw).strip(),
   -1    44 					'name': None,
   -1    45 					'description': None,
   -1    46 					'selector': '.ex',
   -1    47 				})
   35    48 
   36    49 print('window.wpt = window.wpt || {};')
   37    50 print('window.wpt.accname = ' + json.dumps(tests, indent='\t'))