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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/live_regions_test.extjs

Issue 1457683009: Complete live region support in ChromeVox Next. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Include test fixture.
6 GEN_INCLUDE(['../../testing/chromevox_next_e2e_test_base.js',
7 '../../testing/assert_additions.js']);
8
9 GEN_INCLUDE(['../../testing/mock_feedback.js']);
10
11 /**
12 * Test fixture for Live Regions.
13 * @constructor
14 * @extends {ChromeVoxNextE2ETest}
15 */
16 function LiveRegionsTest() {
17 ChromeVoxNextE2ETest.call(this);
18 }
19
20 LiveRegionsTest.prototype = {
21 __proto__: ChromeVoxNextE2ETest.prototype,
22
23 /** @override */
24 setUp: function() {
25 global.backgroundObj.forceChromeVoxNextActive();
26 window.RoleType = chrome.automation.RoleType;
27 },
28
29 /**
30 * @return {!MockFeedback}
31 */
32 createMockFeedback: function() {
33 var mockFeedback = new MockFeedback(this.newCallback(),
34 this.newCallback.bind(this));
35 mockFeedback.install();
36 return mockFeedback;
37 },
38
39 /**
40 * Create a function which perform the command |cmd|.
Peter Lundblad 2015/11/24 11:04:31 nit: performs
dmazzoni 2015/11/30 22:00:47 Done.
41 * @param {string} cmd
42 * @return {function() : void}
43 */
44 doCmd: function(cmd) {
45 return function() {
46 global.backgroundObj.onGotCommand(cmd);
47 };
48 },
49 };
50
51 TEST_F('LiveRegionsTest', 'LiveRegionAddElement', function() {
52 var mockFeedback = this.createMockFeedback();
53 this.runWithLoadedTree(
54 function() {/*!
55 <h1>Document with live region</h1>
56 <p id="live" aria-live="polite"></p>
57 <button id="go">Go</button>
58 <script>
59 document.getElementById('go').addEventListener('click', function() {
60 document.getElementById('live').innerHTML = 'Hello, world';
61 }, false);
62 </script>
63 */},
64 function(rootNode) {
65 var go = rootNode.find({ role: RoleType.button });
66 mockFeedback.call(go.doDefault.bind(go))
67 .expectCategoryFlushSpeech('Hello, world');
68 mockFeedback.replay();
69 });
70 });
71
72 TEST_F('LiveRegionsTest', 'LiveRegionRemoveElement', function() {
73 var mockFeedback = this.createMockFeedback();
74 this.runWithLoadedTree(
75 function() {/*!
76 <h1>Document with live region</h1>
77 <p id="live" aria-live="polite" aria-relevant="removals">Hello, world</p>
78 <button id="go">Go</button>
79 <script>
80 document.getElementById('go').addEventListener('click', function() {
81 document.getElementById('live').innerHTML = '';
82 }, false);
83 </script>
84 */},
85 function(rootNode) {
86 var go = rootNode.find({ role: RoleType.button });
87 go.doDefault();
88 mockFeedback.expectCategoryFlushSpeech('removed:')
89 .expectQueuedSpeech('Hello, world');
90 mockFeedback.replay();
91 });
92 });
93
94 TEST_F('LiveRegionsTest', 'LiveRegionChangeAtomic', function() {
95 var mockFeedback = this.createMockFeedback();
96 this.runWithLoadedTree(
97 function() {/*!
98 <div id="live" aria-live="polite" aria-atomic="true">
99 <div id="a"></div><div id="b">Bravo</div><div id="c"></div>
100 </div>
101 <button id="go">Go</button>
102 <script>
103 document.getElementById('go').addEventListener('click', function() {
104 document.getElementById('c').textContent = 'Charlie';
105 document.getElementById('a').textContent = 'Alpha';
106 }, false);
107 </script>
108 */},
109 function(rootNode) {
110 var go = rootNode.find({ role: RoleType.button });
111 mockFeedback.call(go.doDefault.bind(go))
112 .expectQueuedSpeech('Alpha')
113 .expectQueuedSpeech('Bravo')
114 .expectQueuedSpeech('Charlie');
115 mockFeedback.replay();
116 });
117 });
118
119 TEST_F('LiveRegionsTest', 'LiveRegionChangeImageAlt', function() {
120 var mockFeedback = this.createMockFeedback();
121 this.runWithLoadedTree(
122 function() {/*!
123 <div id="live" aria-live="polite">
124 <img id="img" src="#" alt="Before">
125 </div>
126 <button id="go">Go</button>
127 <script>
128 document.getElementById('go').addEventListener('click', function() {
129 document.getElementById('img').setAttribute('alt', 'After');
130 }, false);
131 </script>
132 */},
133 function(rootNode) {
134 var go = rootNode.find({ role: RoleType.button });
135 mockFeedback.call(go.doDefault.bind(go))
136 .expectCategoryFlushSpeech('After')
137 .expectQueuedSpeech('Image');
138 mockFeedback.replay();
139 });
140 });
141
142 TEST_F('LiveRegionsTest', 'LiveRegionThenFocus', function() {
143 var mockFeedback = this.createMockFeedback();
144 this.runWithLoadedTree(
145 function() {/*!
146 <div id="live" aria-live="polite"></div>
147 <button id="go">Go</button>
148 <button id="focus">Focus</button>
149 <script>
150 document.getElementById('go').addEventListener('click', function() {
151 document.getElementById('live').textContent = 'Live';
152 window.setTimeout(function() {
153 document.getElementById('focus').focus();
154 }, 50);
155 }, false);
156 </script>
157 */},
158 function(rootNode) {
159 var go = rootNode.find({ role: RoleType.button });
160 mockFeedback.call(go.doDefault.bind(go))
161 .expectCategoryFlushSpeech('Live')
162 .expectQueuedSpeech('Focus');
163 mockFeedback.replay();
164 });
165 });
166
167 TEST_F('LiveRegionsTest', 'FocusThenLiveRegion', function() {
168 var mockFeedback = this.createMockFeedback();
169 this.runWithLoadedTree(
170 function() {/*!
171 <div id="live" aria-live="polite"></div>
172 <button id="go">Go</button>
173 <button id="focus">Focus</button>
174 <script>
175 document.getElementById('go').addEventListener('click', function() {
176 document.getElementById('focus').focus();
177 window.setTimeout(function() {
178 document.getElementById('live').textContent = 'Live';
179 }, 50);
180 }, false);
181 </script>
182 */},
183 function(rootNode) {
184 var go = rootNode.find({ role: RoleType.button });
185 mockFeedback.call(go.doDefault.bind(go))
186 .expectQueuedSpeech('Focus')
187 .expectCategoryFlushSpeech('Live');
188 mockFeedback.replay();
189 });
190 });
191
192 TEST_F('LiveRegionsTest', 'LiveRegionCategoryFlush', function() {
193 var mockFeedback = this.createMockFeedback();
194 this.runWithLoadedTree(
195 function() {/*!
196 <div id="live1" aria-live="polite"></div>
197 <div id="live2" aria-live="polite"></div>
198 <button id="go">Go</button>
199 <button id="focus">Focus</button>
200 <script>
201 document.getElementById('go').addEventListener('click', function() {
202 document.getElementById('live1').textContent = 'Live1';
203 window.setTimeout(function() {
204 document.getElementById('live2').textContent = 'Live2';
205 }, 1000);
206 }, false);
207 </script>
208 */},
209 function(rootNode) {
210 var go = rootNode.find({ role: RoleType.button });
211 mockFeedback.call(go.doDefault.bind(go))
212 .expectCategoryFlushSpeech('Live1')
213 .expectCategoryFlushSpeech('Live2');
214 mockFeedback.replay();
215 });
216 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698