From 67b7b2cb80a6cc13d826364829a0f26c01357d86 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 21 Sep 2026 23:02:40 +0900 Subject: [PATCH] test(workspace-web): cover workdir label edge cases --- .../console/worker-console.ui.test.ts | 1 + .../sidebar/worker-workdir-meta.test.ts | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts b/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts index 6e415e3ce..aef46f99d 100644 --- a/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts +++ b/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts @@ -264,6 +264,7 @@ Deno.test("workspace Worker list lives on the dedicated Workers page", async () workersNav.includes("worker-status-spinner") && workersNav.includes("sidebarWorkdirMeta(worker.workdir_attachments)") && workersNav.includes("title={workdir.details}") && + workersNav.includes("aria-label={workdir.details}") && !workersNav.includes("attachment.alias") && workerWorkdirMeta.includes("workdir.current_selector") && workerWorkdirMeta.includes("workdir.creation_selector") && diff --git a/web/workspace/src/lib/workspace/sidebar/worker-workdir-meta.test.ts b/web/workspace/src/lib/workspace/sidebar/worker-workdir-meta.test.ts index 26303f97b..263e1ef07 100644 --- a/web/workspace/src/lib/workspace/sidebar/worker-workdir-meta.test.ts +++ b/web/workspace/src/lib/workspace/sidebar/worker-workdir-meta.test.ts @@ -84,7 +84,18 @@ Deno.test("Worker sidebar Workdir label marks detached HEAD instead of reusing c assertEquals(meta.text, "main:detached@0123456789ab"); }); -Deno.test("Worker sidebar Workdir label has an explicit unknown fallback", () => { +Deno.test("Worker sidebar Workdir label marks an untrusted selector as a detached hash", () => { + const meta = sidebarWorkdirMeta([ + attachment("checkout", { + creation_selector: "develop", + current_selector: "fedcba9876543210fedcba9876543210fedcba98", + }), + ]); + + assertEquals(meta.text, "main:detached@fedcba987654"); +}); + +Deno.test("Worker sidebar Workdir label has an explicit unavailable-projection fallback", () => { const meta = sidebarWorkdirMeta([{ alias: "checkout", repository_key: "main", @@ -94,6 +105,24 @@ Deno.test("Worker sidebar Workdir label has an explicit unknown fallback", () => assertEquals(meta.text, "main:unknown@workdir-1234"); }); +Deno.test("Worker sidebar Workdir metadata preserves long names for truncated display details", () => { + const repository = "repository-with-a-name-that-exceeds-the-sidebar-width"; + const branch = + "feature/workdir-label-with-a-name-that-also-exceeds-the-sidebar-width"; + const meta = sidebarWorkdirMeta([ + attachment("long-checkout", { + repository_key: repository, + current_selector: branch, + }), + ]); + + assertEquals(meta.text, `${repository}:${branch}`); + assert( + meta.details.includes(`long-checkout — ${repository}:${branch}`), + "full repository and branch should remain available in details when the primary line is truncated", + ); +}); + Deno.test("Worker sidebar Workdir metadata keeps multiple attachments distinguishable", () => { const meta = sidebarWorkdirMeta([ attachment("frontend", { current_selector: "develop" }),