import test from 'node:test'; import assert from 'node:assert/strict'; const module = await import('../../cli/tests/request-lifecycle-fixture.mjs').catch(e => { if (e.code === 'ERR_MODULE_NOT_FOUND' && e.message.includes('request-lifecycle-fixture.mjs')) return {}; throw e; }); test('signed-in Console buttons deliver the approved original request and downloaded timer works offline', { timeout: 180000 }, async t => { assert.equal(typeof module.lifecycleFixture, 'function', 'Task 8 needs the real lifecycle browser fixture'); const f = await module.lifecycleFixture(t); await f.start(); const page = await f.consoleBrowser(t); await page.choose('autonomous'); await f.continue(); const e = await f.evidence(); assert.equal(e.state.phase, 'complete'); const artifact = await f.download(); assert.equal(artifact, e.download); await page.offline(artifact); assert.equal(await page.clock(), '25:00'); assert.equal(await page.phase(), 'Work'); assert.equal(await page.cues(), 0); await page.start(); await page.advance(1000); assert.equal(await page.clock(), '24:59'); await page.pause(); await page.advance(10000); assert.equal(await page.clock(), '24:59'); await page.start(); await page.advance(1499000); assert.equal(await page.phase(), 'Break'); assert.equal(await page.clock(), '05:00'); assert.equal(await page.cues(), 1); await page.advance(300000); assert.equal(await page.phase(), 'Work'); assert.equal(await page.clock(), '25:00'); assert.equal(await page.cues(), 2); await page.advance(7000); await page.reset(); assert.equal(await page.clock(), '25:00'); await page.advance(10000); assert.equal(await page.clock(), '25:00'); assert.deepEqual(await page.externalRequests(), []); });