Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(776)

Unified Diff: content/test/data/accessibility/readme.txt

Issue 1505903002: Don't require expectations file for DumpAccessibility tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Suppress lsan Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/test/data/accessibility/html/option-in-datalist-expected-win.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/data/accessibility/readme.txt
diff --git a/content/test/data/accessibility/readme.txt b/content/test/data/accessibility/readme.txt
index f8c14331e4b53364329ea54f01507323d5f4e709..6f90c28ef1ed3cd09b7fd173cb9f49b813c773c6 100644
--- a/content/test/data/accessibility/readme.txt
+++ b/content/test/data/accessibility/readme.txt
@@ -1,24 +1,132 @@
-DumpAccessibilityTreeTest Notes
+DumpAccessibilityTreeTest and DumpAccessibilityEventsTest Notes:
+
+Both sets of tests use a similar format for files.
+
+DumpAccessibilityTree tests load an HTML file, wait for it to load, then
+dump the accessibility tree in the "blink" format (the internal data),
+and again in a platform-specific format.
+
+The test output is a compact text representation of the accessibility tree
+for that format, and it should be familiar if you're familiar with the
+accessibility protocol on that platform, but it's not in a standardized
+format - it's just a text dump, meant to be compared to expected output.
+
+The exact output can be filtered so it only dumps the specific attributes
+you care about for a specific test.
+
+One the output has been generated, it compares the output to an expectation
+file in the same directory. If an expectation file for that test for that
+platform is present, it must match exactly or the test fails. If no
+expectation file is present, the test passes. Most tests don't have
+expectations on all platforms.
+
+DumpAccessibilityEvent tests use a similar format but dump events fired after
+the document finishes loading. See more on this below.
+
+Compiling and running the tests:
+ninja -C out/Debug content_browsertests
+out/Debug/content_browsertests --gtest_filter="DumpAccessibility*"
Files used:
* foo.html -- a file to be tested
-* foo-expected-win.txt -- expected MSAA output
-* foo-expected-mac.txt -- expected Mac accessibility output
+* foo-expected-android.txt -- expected Android AccessibilityNodeInfo output
+* foo-expected-auralinux.txt -- expected Linux ATK output
+* foo-expected-blink.txt -- representation of internal accessibility tree
+* foo-expected-mac.txt -- expected Mac NSAccessibility output
+* foo-expected-win.txt -- expected Win IAccessible/IAccessible2 output
Format for expected files:
* Blank lines and lines beginning with # are ignored
-* Skipped files: if first line of file begins with #<skip then the entire file is ignored,
- but listed in the output as skipped
-* Use 4 spaces for indent to show hierarchy
-* MSAA states do not have a prefix, e.g. FOCUSED, not STATE_SYSTEM_FOCUSED
-* All other constants are used exactly as normally named
-* See specific examples (e.g. ul-expected-win.txt) for more details
+* Skipped files: if first line of file begins with #<skip then the
+ test passes. This can be used to indicate desired output with a link
+ to a bug, or as a way to temporarily disable a test during refactoring.
+* Use 2 plus signs for indent to show hierarchy
-Compiling and running the tests:
-ninja -C out/Debug content_browsertests
-out/Debug/content_browsertests --gtest_filter="DumpAccessibilityTreeTest*"
+Filters:
+* By default only some attributes of nodes in the accessibility tree, or
+ events fired (when running DumpAccessibilityEvents) are output.
+ This is to keep the tests robust and not prone to failure when unrelated
+ changes affect the accessibility tree in unimportant ways.
+* Filters contained in the HTML file can be used to control what is output.
+ They can appear anywhere but typically they're in an HTML comment block,
+ and must be one per line.
+* Filters are platform-specific:
+ @WIN-
+ @MAC-
+ @BLINK-
+ @ANDROID-
+ @AURALINUX-
+* To dump all attributes while writing or debugging a test, add this filter:
+ @WIN-ALLOW:*
+ (and similarly for other platforms).
+* Once you know what you want to output, you can use filters to match the
+ attributes and attribute values you want included in the output. An
+ ALLOW filter means to include the attribute, and a DENY filter means to
+ exclude it. Filters can contain simple wildcards ('*') only, they're not
+ regular expressions. Examples:
+ - @WIN-ALLOW:name* - this will output the name attribute on Windows
+ - @WIN-ALLOW:name='Foo' - this will only output the name attribute if it
+ exactly matches 'Foo'.
+ - @WIN-DENY:name='X* - this will skip outputting any name that begins with
+ the letter X.
+* By default empty attributes are skipped. To output the value an attribute
+ even if it's empty, use @WIN-ALLOW-EMPTY:name, for example, and similarly
+ for other platforms.
+
+Advanced:
+
+Normally the system waits for the document to finish loading before dumping
+the accessibility tree.
+
+Occasionally you may need to write a test that makes some changes to the
+document before it runs the test. In that case you can use a special
+@WAIT-FOR: directive. It should be in an HTML comment, just like
+@ALLOW-WIN: directives. The WAIT-FOR directive just specifies a text substring
+that should be present in the dump when the document is ready. The system
+will keep blocking until that text appears.
+
+To skip dumping a particular element, make its accessible name equal to
+@NO_DUMP, for example <div aria-label="@NO_DUMP"></div>.
+
+To skip dumping all children of a particular element, make its accessible
+name equal to @NO_CHILDREN_DUMP.
+
+Generating expectations and rebaselining:
+
+If you want to populate the expectation file directly rather than typing it
+or copying-and-pasting it, first make sure the file exists (it can be empty),
+then run the test with the --generate-accessibility-test-expectations
+argument, for example:
+
+ out/Debug/content_browsertests \
+ --generate-accessibility-test-expectations
+ --gtest_filter="DumpAccessibilityTreeTest.AccessibilityA"
+
+This will replace the -expected-*.txt file with the current output. It's
+a great way to rebaseline a bunch of tests after making a change. Please
+manually check the diff, of course!
+
+Adding a new test:
If you are adding a new test file remember to add a corresponding test case in
content/browser/accessibility/dump_accessibility_events_browsertest.cc
or
content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+
+More details on DumpAccessibilityEvents tests:
+
+These tests are similar to DumpAccessibilityTree tests in that they first
+load an HTML document, then dump something, then compare the output to
+an expectation file. The difference is that what's dumped is accessibility
+events that are fired.
+
+To write a test for accessibility events, your document must contain a
+JavaScript function called go(). This function will be called when the document
+is loaded (or when the @WAIT_FOR directive passes), and any subsequent
+events will be dumped. Filters apply to events just like in tree dumps.
+
+After calling go(), the system asks the page to generate a sentinel
+accessibility event - one you're unlikely to generate in your test. It uses
+that event to know when to "stop" dumping events. There isn't currently a
+way to test events that occur after some delay, just ones that happen as
+a direct result of calling go().
« no previous file with comments | « content/test/data/accessibility/html/option-in-datalist-expected-win.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698