|
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