mock: PHY Editorで異形キーを描き・編集し・追加できるようにする(T-32)
- domain/keyShape.ts に、キーの矩形・外接矩形・和の外形の計算と、異形キーのプリセット表(今はISO Enterだけ)を置いた - キャンバスと選択枠は、2つ目の矩形を持つキーを和の外形のpathで描く。範囲選択と囲み矩形も両方の矩形で取る - プロパティ欄に「異形キー」のチェックと、2つ目の矩形の欄(X2・Y2・Width2・Height2)を置いた - ツールバーに「異形キーを足す」selectを置いた。1Uと同じ規則の位置に、外接矩形の左上を合わせて足す - 検証: vue-tsc 0件、Vitest 106件(うち新規5件)、Playwright PHY 31件(うち新規1件)、prettier --check Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xmqw9x7EoryY6zf116i3yM
This commit is contained in:
@@ -741,3 +741,31 @@ test("スイッチ・スタビの十字はトグルで出し、スタビ候補
|
||||
await page.getByRole("button", { name: "スイッチ・スタビライザーの位置" }).click();
|
||||
await expect(page.locator(".mount-layer")).toHaveCount(0);
|
||||
});
|
||||
|
||||
test("ISO Enterを足すと外形で描き、プロパティの異形キーで2つ目の矩形を出し入れできる", async ({ page }) => {
|
||||
const keys = page.locator('[data-node-type="key"]');
|
||||
await keys.first().click();
|
||||
const select = page.getByRole("combobox", { name: "異形キーを足す" });
|
||||
await select.selectOption("ISO Enter");
|
||||
await expect(select).toHaveValue("");
|
||||
await expect(keys).toHaveCount(17);
|
||||
const added = keys.last();
|
||||
const addedId = await added.getAttribute("data-node-id");
|
||||
await expect(added.locator("path.key-face")).toHaveCount(1);
|
||||
await expect(page.locator(`path[data-sel-id="${addedId}"]`)).toHaveCount(1);
|
||||
const irregular = page.getByLabel("異形キー", { exact: true });
|
||||
await expect(irregular).toBeChecked();
|
||||
await expect(page.getByLabel("X2", { exact: true })).toHaveValue("-0.25");
|
||||
await expect(page.getByLabel("Width2", { exact: true })).toHaveValue("1.5");
|
||||
|
||||
await page.getByLabel("Width2", { exact: true }).fill("2");
|
||||
await page.getByLabel("Width2", { exact: true }).press("Enter");
|
||||
await expect(page.getByLabel("Width2", { exact: true })).toHaveValue("2");
|
||||
|
||||
await irregular.uncheck();
|
||||
await expect(added.locator("rect.key-face")).toHaveAttribute("width", "1.25");
|
||||
await expect(page.getByLabel("X2", { exact: true })).toHaveCount(0);
|
||||
await irregular.check();
|
||||
await expect(page.getByLabel("X2", { exact: true })).toHaveValue("0");
|
||||
await expect(page.getByLabel("Width2", { exact: true })).toHaveValue("1.25");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user