|
94 | 94 | var events = collectEvents(window);
|
95 | 95 | var codelab = fixture('codelab');
|
96 | 96 |
|
97 |
| - assert.equal(codelab.selected, 0); |
98 |
| - assert.equal(codelab.duration, 5); |
99 |
| - assert.equal(codelab.remaining, '5 min remaining'); |
100 |
| - assert.equal(codelab.feedbackLink, 'http://codelab.example.org'); |
101 |
| - assert.equal(codelab.steps[0].step, 1); |
102 |
| - assert.equal(codelab.steps[1].step, 2); |
| 97 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 98 | + assert.equal(codelab.selected, 0); |
| 99 | + assert.equal(codelab.duration, 5); |
| 100 | + assert.equal(codelab.remaining, '5 min remaining'); |
| 101 | + assert.equal(codelab.feedbackLink, 'http://codelab.example.org'); |
| 102 | + assert.equal(codelab.steps[0].step, 1); |
| 103 | + assert.equal(codelab.steps[1].step, 2); |
103 | 104 |
|
104 |
| - assert.equal(codelab.querySelector('h1').textContent, 'Test title'); |
| 105 | + assert.equal(codelab.querySelector('h1').textContent, 'Test title'); |
| 106 | + |
| 107 | + // TOC dom-repeat needs another microtask to render |
| 108 | + async.nextTick(function() { |
| 109 | + assert(codelab.querySelector('.prevbutton').disabled, 'prev fab is not disabled'); |
| 110 | + assert(!codelab.querySelector('.prevbutton').hidden, 'prev fab is hidden'); |
| 111 | + assert(!codelab.querySelector('.nextbutton').disabled, 'next fab is disabled'); |
| 112 | + assert(!codelab.querySelector('.nextbutton').hidden, 'next fab is hidden'); |
| 113 | + assert.isNull(codelab.querySelector('.donebutton'), 'done fab is not generated'); |
| 114 | + |
| 115 | + var items = codelab.$.toc.items; |
| 116 | + assert.equal(codelab.$.toc.selected, 0); |
| 117 | + assert.equal(items.length, 2); |
| 118 | + assert.match(items[0].textContent.trim(), /1\s*First/); |
| 119 | + assert.match(items[1].textContent.trim(), /2\s*Second/); |
| 120 | + events.verify(done, 'google-codelab-step-0'); |
| 121 | + }); |
105 | 122 |
|
106 |
| - // TOC dom-repeat needs another microtask to render |
107 |
| - async.nextTick(function() { |
108 |
| - assert(codelab.querySelector('.prevbutton').disabled, 'prev fab is not disabled'); |
109 |
| - assert(!codelab.querySelector('.prevbutton').hidden, 'prev fab is hidden'); |
110 |
| - assert(!codelab.querySelector('.nextbutton').disabled, 'next fab is disabled'); |
111 |
| - assert(!codelab.querySelector('.nextbutton').hidden, 'next fab is hidden'); |
112 |
| - assert.isNull(codelab.querySelector('.donebutton'), 'done fab is not generated'); |
113 |
| - |
114 |
| - var items = codelab.$.toc.items; |
115 |
| - assert.equal(codelab.$.toc.selected, 0); |
116 |
| - assert.equal(items.length, 2); |
117 |
| - assert.match(items[0].textContent.trim(), /1\s*First/); |
118 |
| - assert.match(items[1].textContent.trim(), /2\s*Second/); |
119 |
| - events.verify(done, 'google-codelab-step-0'); |
120 | 123 | });
|
121 | 124 | });
|
122 | 125 |
|
|
175 | 178 | });
|
176 | 179 | });
|
177 | 180 |
|
178 |
| - }); // text step suite |
| 181 | + }); // test step suite |
179 | 182 |
|
180 | 183 | test('prev step', function(done) {
|
181 | 184 | var events = collectEvents(window);
|
182 | 185 | var codelab = fixture('codelab');
|
183 |
| - codelab.select(1); |
184 |
| - MockInteractions.tap(codelab.querySelector('.prevbutton')); |
185 |
| - // allow $.toc to render the items |
186 |
| - async.nextTick(function() { |
187 |
| - assert.equal(codelab.selected, 0, 'selected'); |
188 |
| - assert.equal(codelab.remaining, '5 min remaining', 'remaining'); |
189 |
| - assert.match(codelab.$.countdown.textContent.trim(), /5 min/); |
190 |
| - assert.equal(codelab.$.toc.selected, 0, '$.toc.selected'); |
191 |
| - assert(location.hash === '#0' || location.hash === '', 'location.hash'); |
192 |
| - assert(codelab.querySelector('.prevbutton').disabled, 'prev fab is not disabled'); |
193 |
| - events.verify(done, |
194 |
| - 'google-codelab-step-0', |
195 |
| - 'google-codelab-step-1', |
196 |
| - 'google-codelab-complete', |
197 |
| - 'google-codelab-step-0'); |
| 186 | + |
| 187 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 188 | + codelab.select(1); |
| 189 | + MockInteractions.tap(codelab.querySelector('.prevbutton')); |
| 190 | + // allow $.toc to render the items |
| 191 | + async.nextTick(function() { |
| 192 | + assert.equal(codelab.selected, 0, 'selected'); |
| 193 | + assert.equal(codelab.remaining, '5 min remaining', 'remaining'); |
| 194 | + assert.match(codelab.$.countdown.textContent.trim(), /5 min/); |
| 195 | + assert.equal(codelab.$.toc.selected, 0, '$.toc.selected'); |
| 196 | + assert(location.hash === '#0' || location.hash === '', 'location.hash'); |
| 197 | + assert(codelab.querySelector('.prevbutton').disabled, 'prev fab is not disabled'); |
| 198 | + events.verify(done, |
| 199 | + 'google-codelab-step-0', |
| 200 | + 'google-codelab-step-1', |
| 201 | + 'google-codelab-complete', |
| 202 | + 'google-codelab-step-0'); |
| 203 | + }); |
198 | 204 | });
|
199 | 205 | });
|
200 | 206 |
|
201 | 207 | suite('resume dialog', function() {
|
202 | 208 | // resume dialog is shown after about 500ms,
|
203 | 209 | // so each test needs to wait to verify.
|
204 | 210 |
|
205 |
| - test('first visit', function(done) { |
| 211 | + test('first visit', function() { |
206 | 212 | var codelab = fixture('codelab');
|
207 |
| - setTimeout(function() { |
208 |
| - assert(!codelab.$.resumeDialog.opened, 'is opened'); |
209 |
| - done(); |
210 |
| - }, 510); |
| 213 | + assert(!codelab.$.resumeDialog.opened, 'is opened'); |
211 | 214 | });
|
212 | 215 |
|
213 | 216 | test('second visit', function(done) {
|
214 | 217 | ls.setItem(LS_KEY, '{"stepIndex": 1}');
|
215 | 218 | var codelab = fixture('codelab');
|
216 |
| - var dialog = codelab.$.resumeDialog; |
217 |
| - codelab.querySelector('iron-localstorage').reload(); |
218 |
| - setTimeout(function() { |
219 |
| - assert.equal(codelab.selected, 0); |
220 |
| - assert.match(dialog.textContent.trim(), /Step 2: Second/); |
221 |
| - assert(dialog.opened, 'is closed'); |
222 |
| - done(); |
223 |
| - }, 510); |
| 219 | + |
| 220 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 221 | + var dialog = codelab.$.resumeDialog; |
| 222 | + codelab.querySelector('iron-localstorage').reload(); |
| 223 | + setTimeout(function() { |
| 224 | + assert.equal(codelab.selected, 0); |
| 225 | + assert.match(dialog.textContent.trim(), /Step 2: Second/); |
| 226 | + assert(dialog.opened, 'is closed'); |
| 227 | + done(); |
| 228 | + }, 510); |
| 229 | + }); |
224 | 230 | });
|
225 | 231 |
|
226 | 232 | test('second visit, same step', function(done) {
|
227 | 233 | ls.setItem(LS_KEY, '{"stepIndex": 1}');
|
228 | 234 | location.hash = '1';
|
229 | 235 | var codelab = fixture('codelab');
|
230 |
| - var dialog = codelab.$.resumeDialog; |
231 |
| - codelab.querySelector('iron-localstorage').reload(); |
232 |
| - setTimeout(function() { |
233 |
| - assert.equal(codelab.selected, 1, 'selected'); |
234 |
| - assert(!dialog.opened, 'is opened'); |
235 |
| - done(); |
236 |
| - }, 510); |
| 236 | + |
| 237 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 238 | + var dialog = codelab.$.resumeDialog; |
| 239 | + codelab.querySelector('iron-localstorage').reload(); |
| 240 | + // setTimeout(function() { |
| 241 | + assert.equal(codelab.selected, 1, 'selected'); |
| 242 | + assert(!dialog.opened, 'is opened'); |
| 243 | + done(); |
| 244 | + // }, 510); |
| 245 | + }); |
237 | 246 | });
|
238 | 247 |
|
239 | 248 | test('resume', function(done) {
|
240 | 249 | ls.setItem(LS_KEY, '{"stepIndex": 1}');
|
241 | 250 | var events = collectEvents(window);
|
242 | 251 | var codelab = fixture('codelab');
|
243 |
| - var dialog = codelab.$.resumeDialog; |
244 |
| - codelab.querySelector('iron-localstorage').reload(); |
245 |
| - setTimeout(function() { |
246 |
| - MockInteractions.tap(dialog.querySelector('[dialog-confirm]')); |
247 |
| - async.nextTick(function() { |
248 |
| - verifySecondSelected(codelab); |
249 |
| - assert(!dialog.opened, 'is opened'); |
250 |
| - events.verify(done, 'google-codelab-step-0', 'google-codelab-step-1'); |
251 |
| - }); |
252 |
| - }, 510); |
| 252 | + |
| 253 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 254 | + var dialog = codelab.$.resumeDialog; |
| 255 | + codelab.querySelector('iron-localstorage').reload(); |
| 256 | + // setTimeout(function() { |
| 257 | + MockInteractions.tap(dialog.querySelector('[dialog-confirm]')); |
| 258 | + async.nextTick(function() { |
| 259 | + verifySecondSelected(codelab); |
| 260 | + assert(!dialog.opened, 'is opened'); |
| 261 | + events.verify(done, 'google-codelab-step-0', 'google-codelab-step-1'); |
| 262 | + }); |
| 263 | + // }, 510); |
| 264 | + }); |
253 | 265 | });
|
254 | 266 |
|
255 | 267 | test('cancel', function(done) {
|
256 | 268 | ls.setItem(LS_KEY, '{"stepIndex": 1}');
|
257 | 269 | var events = collectEvents(window);
|
258 | 270 | var codelab = fixture('codelab');
|
259 |
| - var dialog = codelab.$.resumeDialog; |
260 |
| - codelab.querySelector('iron-localstorage').reload(); |
261 |
| - setTimeout(function() { |
262 |
| - MockInteractions.tap(dialog.querySelector('[dialog-dismiss]')); |
263 |
| - assert.equal(codelab.selected, 0, 'selected'); |
264 |
| - assert(!dialog.opened, 'is opened'); |
265 |
| - events.verify(done, 'google-codelab-step-0'); |
266 |
| - }, 510); |
| 271 | + |
| 272 | + codelab.addEventListener('google-codelab-ready', function(e) { |
| 273 | + var dialog = codelab.$.resumeDialog; |
| 274 | + codelab.querySelector('iron-localstorage').reload(); |
| 275 | + // setTimeout(function() { |
| 276 | + MockInteractions.tap(dialog.querySelector('[dialog-dismiss]')); |
| 277 | + assert.equal(codelab.selected, 0, 'selected'); |
| 278 | + assert(!dialog.opened, 'is opened'); |
| 279 | + events.verify(done, 'google-codelab-step-0'); |
| 280 | + // }, 510); |
| 281 | + }); |
267 | 282 | });
|
268 | 283 |
|
269 | 284 | }); // resume dialog suite
|
|
0 commit comments