blob: 6b00f0ecd47f209e0ce7e02715bab85f3b4003cc [file] [log] [blame] [view]
dmazzoni9cd171242017-03-02 06:58:461# Accessibility
2
Aran Gilmane7035589cd2019-05-01 23:47:303Here's a quick overview of all of the locations in the codebase where you'll
4find accessibility tests, and a brief overview of the purpose of all of them.
dmazzoni9cd171242017-03-02 06:58:465
Aran Gilmane7035589cd2019-05-01 23:47:306## Web Tests
dmazzoni9cd171242017-03-02 06:58:467
Aran Gilmane7035589cd2019-05-01 23:47:308This is the primary place where we test accessibility code in Blink. This code
9should have no platform-specific code. Use this to test anything where there's
10any interesting web platform logic, or where you need to be able to query things
11synchronously from the renderer thread to test them.
dmazzoni9cd171242017-03-02 06:58:4612
Aran Gilmane7035589cd2019-05-01 23:47:3013Don't add tests for trivial features like ARIA attributes that we just expose
14directly to the next layer up. In those cases the Blink tests are trivial and
15it's more valuable to test these features at a higher level where we can ensure
16they actually work.
dmazzoni9cd171242017-03-02 06:58:4617
Aran Gilmane7035589cd2019-05-01 23:47:3018Note that many of these tests are inherited from WebKit and the coding style has
19evolved a lot since then. Look for more recent tests as a guide if writing a new
20one.
dmazzoni9cd171242017-03-02 06:58:4621
22Test files:
Aran Gilmane7035589cd2019-05-01 23:47:3023[third_party/blink/web_tests/accessibility](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/accessibility/)
dmazzoni9cd171242017-03-02 06:58:4624
25Source code to AccessibilityController and WebAXObjectProxy:
Aran Gilmane7035589cd2019-05-01 23:47:3026[content/shell/test_runner](https://cs.chromium.org/chromium/src/content/shell/test_runner/)
dmazzoni9cd171242017-03-02 06:58:4627
Josiah Kc405f432020-09-02 04:30:1928First, you'll need to build the tests:
dmazzoni9cd171242017-03-02 06:58:4629```
Josiah Kc405f432020-09-02 04:30:1930autoninja -C out/release blink_tests
dmazzoni9cd171242017-03-02 06:58:4631```
32
Josiah Kc405f432020-09-02 04:30:1933Then, to run all accessibility web tests:
Aran Gilmane7035589cd2019-05-01 23:47:3034
dmazzoni9cd171242017-03-02 06:58:4635```
Josiah Kc405f432020-09-02 04:30:1936third_party/blink/tools/run_web_tests.py --build-directory=out --target=release accessibility/
37```
38
39Or, to run just one test by itself, without invoking the `run_web_tests.py` script:
40
41```
42out/release/content_shell \
Aran Gilmane7035589cd2019-05-01 23:47:3043 --run-web-tests third_party/blink/web_tests/accessibility/name-calc-inputs.html
dmazzoni9cd171242017-03-02 06:58:4644```
45
Aran Gilmane7035589cd2019-05-01 23:47:3046For information on modifying or adding web tests, see the main
47[web tests documentation](https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_tests.md).
48
dmazzoni9cd171242017-03-02 06:58:4649## DumpAccessibilityTree tests
50
51This is the best way to write both cross-platform and platform-specific tests
52using only an input HTML file, some magic strings to describe what attributes
53you're interested in, and one or more expectation files to enable checking
54whether the resulting accessibility tree is correct or not. In particular,
55almost no test code is required.
56
57[More documentation on DumpAccessibilityTree](../../content/test/data/accessibility/readme.md)
58
59Test files:
Aran Gilmane7035589cd2019-05-01 23:47:3060[content/test/data/accessibility](https://cs.chromium.org/chromium/src/content/test/data/accessibility/)
dmazzoni9cd171242017-03-02 06:58:4661
62Test runner:
Aran Gilmane7035589cd2019-05-01 23:47:3063[content/browser/accessibility/dump_accessibility_tree_browsertest.cc](https://cs.chromium.org/chromium/src/content/browser/accessibility/dump_accessibility_tree_browsertest.cc)
dmazzoni9cd171242017-03-02 06:58:4664
65To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3066
dmazzoni9cd171242017-03-02 06:58:4667```
Aran Gilmane7035589cd2019-05-01 23:47:3068autoninja -C out/release content_browsertests && \
Mark Schillaci00c48fb2019-12-06 18:46:0269 out/release/content_browsertests --gtest_filter="All/DumpAccessibilityTree*"
dmazzoni9cd171242017-03-02 06:58:4670```
71
72## Other content_browsertests
73
Aran Gilmane7035589cd2019-05-01 23:47:3074There are many other tests in content/ that relate to accessibility. All of
75these tests work by launching a full multi-process browser shell, loading a web
76page in a renderer, then accessing the resulting accessibility tree from the
77browser process, and running some test from there.
dmazzoni9cd171242017-03-02 06:58:4678
79To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3080
dmazzoni9cd171242017-03-02 06:58:4681```
Aran Gilmane7035589cd2019-05-01 23:47:3082autoninja -C out/release content_browsertests && \
83 out/release/content_browsertests --gtest_filter="*ccessib*"
dmazzoni9cd171242017-03-02 06:58:4684```
85
86## Accessibility unittests
87
88This tests the core accessibility code that's shared by both web and non-web
89accessibility infrastructure.
90
91Code location:
Aran Gilmane7035589cd2019-05-01 23:47:3092[ui/accessibility](https://cs.chromium.org/chromium/src/ui/accessibility/)
dmazzoni9cd171242017-03-02 06:58:4693
94To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3095
dmazzoni9cd171242017-03-02 06:58:4696```
Aran Gilmane7035589cd2019-05-01 23:47:3097autoninja -C out/release accessibility_unittests && \
98 out/release/accessibility_unittests
dmazzoni9cd171242017-03-02 06:58:4699```
100
101## ChromeVox tests
102
James Cook1380ad162018-10-25 00:51:19103ChromeVox tests are part of the browser_tests suite. You must build with
Aran Gilmane7035589cd2019-05-01 23:47:30104`target_os = "chromeos"` in your GN args.
dmazzoni9cd171242017-03-02 06:58:46105
106To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:30107
dmazzoni9cd171242017-03-02 06:58:46108```
Aran Gilmane7035589cd2019-05-01 23:47:30109autoninja -C out/release browser_tests && \
110 out/release/browser_tests --test-launcher-jobs=20 --gtest_filter=ChromeVox*
dmazzoni9cd171242017-03-02 06:58:46111```
112
Katie Dektar4a165e1b2017-09-27 16:15:13113### Select-To-Speak tests
114
115```
Aran Gilmane7035589cd2019-05-01 23:47:30116autoninja -C out/Default unit_tests browser_tests && \
117 out/Default/unit_tests --gtest_filter=*SelectToSpeak* && \
118 out/Default/browser_tests --gtest_filter=*SelectToSpeak*
Katie Dektar4a165e1b2017-09-27 16:15:13119```
120
Dominic Mazzonib11c82d2018-08-29 17:01:58121## Performance tests
122
123We also have a page on [Performance Tests](perf.md).
124
dmazzoni9cd171242017-03-02 06:58:46125## Other locations of accessibility tests:
126
Aran Gilmane7035589cd2019-05-01 23:47:30127Even this isn't a complete list. The tests described above cover more than 90%
128of the accessibility tests, and the remainder are scattered throughout the
129codebase. Here are a few other locations to check:
dmazzoni9cd171242017-03-02 06:58:46130
Aran Gilmane7035589cd2019-05-01 23:47:30131* [chrome/android/javatests/src/org/chromium/chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/)
132* [chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/browser/accessibility/)
133* [chrome/browser/chromeos/accessibility/](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/accessibility/)
134* [ui/chromeos](https://cs.chromium.org/chromium/src/ui/chromeos/)
135* [ui/views/accessibility](https://cs.chromium.org/chromium/src/ui/views/accessibility/)
dmazzoni9cd171242017-03-02 06:58:46136
Katie Dektar4a165e1b2017-09-27 16:15:13137## Helpful flags:
138
139Across all tests there are some helpful flags that will make testing easier.
140
Aran Gilmane7035589cd2019-05-01 23:47:30141* Run tests multiple times in parallel (useful for finding flakes):
142 `--test-launcher-jobs=10`
Katie Dektar4a165e1b2017-09-27 16:15:13143
Aran Gilmane7035589cd2019-05-01 23:47:30144* Filter which tests to run: `--gtest_filter="*Cats*"`