/** * Emit progress signals that the e2e test runner displays. * * Each step has a "while doing" message and a "when done" message. * The runner shows `… deploying caddy` while in progress, then * replaces it with `✔ caddy deployed` when the next step starts * or done() is called. * * Usage: * import { progress } from '@celilo/e2e'; * * progress('deploying caddy', 'caddy deployed with HTTPS'); * await net.celilo('module deploy caddy'); * // Next progress() auto-finalizes the previous step. * * progress('verifying DNS', 'DNS resolves'); * await net.waitFor(...); * progress.done(); // Explicit finalize (optional — next progress() also works) */ export function progress(doing: string, done?: string): void { // Protocol: [progress:start] doing | done // The runner shows "… doing" and replaces with "✔ done" when finalized. const doneMsg = done ?? doing; console.log(`[progress:start] ${doing} | ${doneMsg}`); } /** Explicitly finalize the current step. Optional override message. */ progress.done = (message?: string): void => { if (message) { console.log(`[progress:done] ${message}`); } else { console.log('[progress:done]'); } }; /** Mark the current step as failed with a message. */ progress.fail = (message: string): void => { console.log(`[progress:fail] ${message}`); };