Files
stack/packages/webui/tests/request-lifecycle-browser.test.mjs

39 lines
1.7 KiB
JavaScript

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(), []);
});