blob: a5b5bb5b77b2f54f750b58b45b3086a48278f1d9 [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
Kent Tamura59ffb022018-11-27 05:30:5628To run all accessibility web tests:
Aran Gilmane7035589cd2019-05-01 23:47:3029
dmazzoni9cd171242017-03-02 06:58:4630```
Aran Gilmane7035589cd2019-05-01 23:47:3031autoninja -C out/release blink_tests third_party/blink/tools/run_web_tests.py \
32 --build-directory=out --target=release accessibility/
dmazzoni9cd171242017-03-02 06:58:4633```
34
35To run just one test by itself without the script:
Aran Gilmane7035589cd2019-05-01 23:47:3036
dmazzoni9cd171242017-03-02 06:58:4637```
Aran Gilmane7035589cd2019-05-01 23:47:3038autoninja -C out/release blink_tests && out/release/content_shell \
39 --run-web-tests third_party/blink/web_tests/accessibility/name-calc-inputs.html
dmazzoni9cd171242017-03-02 06:58:4640```
41
Aran Gilmane7035589cd2019-05-01 23:47:3042For information on modifying or adding web tests, see the main
43[web tests documentation](https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_tests.md).
44
dmazzoni9cd171242017-03-02 06:58:4645## DumpAccessibilityTree tests
46
47This is the best way to write both cross-platform and platform-specific tests
48using only an input HTML file, some magic strings to describe what attributes
49you're interested in, and one or more expectation files to enable checking
50whether the resulting accessibility tree is correct or not. In particular,
51almost no test code is required.
52
53[More documentation on DumpAccessibilityTree](../../content/test/data/accessibility/readme.md)
54
55Test files:
Aran Gilmane7035589cd2019-05-01 23:47:3056[content/test/data/accessibility](https://cs.chromium.org/chromium/src/content/test/data/accessibility/)
dmazzoni9cd171242017-03-02 06:58:4657
58Test runner:
Aran Gilmane7035589cd2019-05-01 23:47:3059[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:4660
61To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3062
dmazzoni9cd171242017-03-02 06:58:4663```
Aran Gilmane7035589cd2019-05-01 23:47:3064autoninja -C out/release content_browsertests && \
65 out/release/content_browsertests --gtest_filter="DumpAccessibilityTree*"
dmazzoni9cd171242017-03-02 06:58:4666```
67
68## Other content_browsertests
69
Aran Gilmane7035589cd2019-05-01 23:47:3070There are many other tests in content/ that relate to accessibility. All of
71these tests work by launching a full multi-process browser shell, loading a web
72page in a renderer, then accessing the resulting accessibility tree from the
73browser process, and running some test from there.
dmazzoni9cd171242017-03-02 06:58:4674
75To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3076
dmazzoni9cd171242017-03-02 06:58:4677```
Aran Gilmane7035589cd2019-05-01 23:47:3078autoninja -C out/release content_browsertests && \
79 out/release/content_browsertests --gtest_filter="*ccessib*"
dmazzoni9cd171242017-03-02 06:58:4680```
81
82## Accessibility unittests
83
84This tests the core accessibility code that's shared by both web and non-web
85accessibility infrastructure.
86
87Code location:
Aran Gilmane7035589cd2019-05-01 23:47:3088[ui/accessibility](https://cs.chromium.org/chromium/src/ui/accessibility/)
dmazzoni9cd171242017-03-02 06:58:4689
90To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:3091
dmazzoni9cd171242017-03-02 06:58:4692```
Aran Gilmane7035589cd2019-05-01 23:47:3093autoninja -C out/release accessibility_unittests && \
94 out/release/accessibility_unittests
dmazzoni9cd171242017-03-02 06:58:4695```
96
97## ChromeVox tests
98
James Cook1380ad162018-10-25 00:51:1999ChromeVox tests are part of the browser_tests suite. You must build with
Aran Gilmane7035589cd2019-05-01 23:47:30100`target_os = "chromeos"` in your GN args.
dmazzoni9cd171242017-03-02 06:58:46101
102To run all tests:
Aran Gilmane7035589cd2019-05-01 23:47:30103
dmazzoni9cd171242017-03-02 06:58:46104```
Aran Gilmane7035589cd2019-05-01 23:47:30105autoninja -C out/release browser_tests && \
106 out/release/browser_tests --test-launcher-jobs=20 --gtest_filter=ChromeVox*
dmazzoni9cd171242017-03-02 06:58:46107```
108
Katie Dektar4a165e1b2017-09-27 16:15:13109### Select-To-Speak tests
110
111```
Aran Gilmane7035589cd2019-05-01 23:47:30112autoninja -C out/Default unit_tests browser_tests && \
113 out/Default/unit_tests --gtest_filter=*SelectToSpeak* && \
114 out/Default/browser_tests --gtest_filter=*SelectToSpeak*
Katie Dektar4a165e1b2017-09-27 16:15:13115```
116
Dominic Mazzonib11c82d2018-08-29 17:01:58117## Performance tests
118
119We also have a page on [Performance Tests](perf.md).
120
dmazzoni9cd171242017-03-02 06:58:46121## Other locations of accessibility tests:
122
Aran Gilmane7035589cd2019-05-01 23:47:30123Even this isn't a complete list. The tests described above cover more than 90%
124of the accessibility tests, and the remainder are scattered throughout the
125codebase. Here are a few other locations to check:
dmazzoni9cd171242017-03-02 06:58:46126
Aran Gilmane7035589cd2019-05-01 23:47:30127* [chrome/android/javatests/src/org/chromium/chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/)
128* [chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/browser/accessibility/)
129* [chrome/browser/chromeos/accessibility/](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/accessibility/)
130* [ui/chromeos](https://cs.chromium.org/chromium/src/ui/chromeos/)
131* [ui/views/accessibility](https://cs.chromium.org/chromium/src/ui/views/accessibility/)
dmazzoni9cd171242017-03-02 06:58:46132
Katie Dektar4a165e1b2017-09-27 16:15:13133## Helpful flags:
134
135Across all tests there are some helpful flags that will make testing easier.
136
Aran Gilmane7035589cd2019-05-01 23:47:30137* Run tests multiple times in parallel (useful for finding flakes):
138 `--test-launcher-jobs=10`
Katie Dektar4a165e1b2017-09-27 16:15:13139
Aran Gilmane7035589cd2019-05-01 23:47:30140* Filter which tests to run: `--gtest_filter="*Cats*"`