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

` ); } };