let fulfil; export default { get props() { return { promise: new Promise((f) => { fulfil = f; }) }; }, intro: true, async test({ assert, target, component, raf }) { assert.htmlEqual(target.innerHTML, '
loading...
'); let time = 0; raf.tick((time += 50)); assert.htmlEqual(target.innerHTML, 'loading...
'); await fulfil(42); assert.htmlEqual( target.innerHTML, `42
loading...
` ); // see the transition 30% complete raf.tick((time += 30)); assert.htmlEqual( target.innerHTML, `42
loading...
` ); // completely transition in the {:then} block raf.tick((time += 70)); assert.htmlEqual( target.innerHTML, `42
` ); // update promise #1 component.promise = new Promise((f) => { fulfil = f; }); await Promise.resolve(); assert.htmlEqual( target.innerHTML, `42
loading...
` ); raf.tick((time += 100)); assert.htmlEqual( target.innerHTML, `loading...
` ); await fulfil(43); assert.htmlEqual( target.innerHTML, `loading...
43
` ); raf.tick((time += 100)); assert.htmlEqual( target.innerHTML, `43
` ); // update promise #2 component.promise = new Promise((f) => { fulfil = f; }); await Promise.resolve(); assert.htmlEqual( target.innerHTML, `43
loading...
` ); raf.tick((time += 50)); assert.htmlEqual( target.innerHTML, `43
loading...
` ); await fulfil(44); assert.htmlEqual( target.innerHTML, `43
loading...
44
` ); raf.tick((time += 100)); assert.htmlEqual( target.innerHTML, `44
` ); // update promise #3 - quick succession component.promise = new Promise((f) => { fulfil = f; }); await Promise.resolve(); assert.htmlEqual( target.innerHTML, `44
loading...
` ); raf.tick((time += 40)); assert.htmlEqual( target.innerHTML, `44
loading...
` ); await fulfil(45); assert.htmlEqual( target.innerHTML, `44
loading...
45
` ); raf.tick((time += 20)); assert.htmlEqual( target.innerHTML, `44
loading...
45
` ); component.promise = new Promise((f) => { fulfil = f; }); await Promise.resolve(); assert.htmlEqual( target.innerHTML, `44
loading...
45
loading...
` ); raf.tick((time += 10)); assert.htmlEqual( target.innerHTML, `44
loading...
45
loading...
` ); await fulfil(46); assert.htmlEqual( target.innerHTML, `44
loading...
45
loading...
46
` ); raf.tick((time += 10)); assert.htmlEqual( target.innerHTML, `44
46
` ); raf.tick((time += 20)); assert.htmlEqual( target.innerHTML, `46
` ); raf.tick((time += 70)); assert.htmlEqual( target.innerHTML, `46
` ); } };