Implement AXIS parity UI and execution baseline
This commit is contained in:
13
web/app/test_recovery_ux.mjs
Normal file
13
web/app/test_recovery_ux.mjs
Normal file
@@ -0,0 +1,13 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { recoveryView, renderRecoveryPanel } from "./recovery-panel.mjs";
|
||||
|
||||
class Node { constructor(tag) { this.tagName = tag; this.children = []; this.textContent = ""; this.className = ""; this.listeners = {}; } append(...nodes) { this.children.push(...nodes); } addEventListener(type, callback) { this.listeners[type] = callback; } }
|
||||
const document = { createElement: (tag) => new Node(tag) };
|
||||
assert.deepEqual(recoveryView({ status: "blocked", blocked: [{ reason: "offline_resource_invalid" }] }).actions, ["retry", "abort"]);
|
||||
assert.deepEqual(recoveryView({ status: "network_required" }).actions, ["retry_online"]);
|
||||
let retry = 0; const panel = renderRecoveryPanel(document, { status: "blocked", blocked: [{ reason: "permission_denied" }] }, { retry: () => { retry += 1; }, abort: () => {} });
|
||||
assert.equal(panel.children[1].textContent, "blocked: permission_denied");
|
||||
assert.equal(panel.children[3].children.length, 2);
|
||||
panel.children[3].children[0].listeners.click();
|
||||
assert.equal(retry, 1);
|
||||
console.log(`recovery_ux=passed actions=${panel.children[3].children.length} retry=${retry}`);
|
||||
Reference in New Issue
Block a user