commit 595337e5bbdc6dbc802f7ac09198d97b5103ab45
parent 3cb978a43d48624477d83e26e93abcc831120688
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Tue, 22 Sep 2026 16:09:59 -0400
editor: the relocate spec's Preview is exact, because the panel has two now
getByRole's `name` is a case-insensitive SUBSTRING match by default, so the
clip-window card's "Preview eviction" button made the bare "Preview" resolve to
two elements — and a strict-mode violation reads as "the button vanished", not
as "there are two". Three call sites, all the relocation preview.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/editor/e2e/channel-storage.spec.ts b/editor/e2e/channel-storage.spec.ts
@@ -106,7 +106,11 @@ test("relocate a channel's media to another root, and move it back", async ({
).toBeVisible();
await expect(moveButton).toBeDisabled();
- await page.getByRole("button", { name: "Preview" }).click();
+ // EXACT. The panel has a second preview since the clip-window card joined it
+ // ("Preview eviction"), and getByRole's name match is a case-insensitive
+ // SUBSTRING by default — so the bare name resolves to two buttons and the
+ // strict-mode violation reads as "the button vanished".
+ await page.getByRole("button", { name: "Preview", exact: true }).click();
const preview = page.getByLabel("relocation preview");
await expect(preview).toBeVisible({ timeout: 15_000 });
// The fixture is two files in one video dir.
@@ -510,7 +514,11 @@ test("the Storage panel moves to a location picked by name", async ({
await destination.selectOption("cold");
const target = join(cold, SLUG, "data");
- await page.getByRole("button", { name: "Preview" }).click();
+ // EXACT. The panel has a second preview since the clip-window card joined it
+ // ("Preview eviction"), and getByRole's name match is a case-insensitive
+ // SUBSTRING by default — so the bare name resolves to two buttons and the
+ // strict-mode violation reads as "the button vanished".
+ await page.getByRole("button", { name: "Preview", exact: true }).click();
const preview = page.getByLabel("relocation preview");
await expect(preview).toBeVisible({ timeout: 15_000 });
// The preview names the target the SERVER resolved from the id.
@@ -658,7 +666,11 @@ test("a move to an unmounted root refuses before it creates anything", async ({
// shape an operator actually meets — and it is the shape that carries the
// location id into the refusal.
await page.getByLabel("destination location").selectOption("cold");
- await page.getByRole("button", { name: "Preview" }).click();
+ // EXACT. The panel has a second preview since the clip-window card joined it
+ // ("Preview eviction"), and getByRole's name match is a case-insensitive
+ // SUBSTRING by default — so the bare name resolves to two buttons and the
+ // strict-mode violation reads as "the button vanished".
+ await page.getByRole("button", { name: "Preview", exact: true }).click();
// FILTERED, because Next ships its own `role="alert"` route announcer on
// every page and a bare getByRole("alert") is a strict-mode violation that
// reads as "the message never appeared".