mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
96 lines
3.2 KiB
TypeScript
96 lines
3.2 KiB
TypeScript
import { createNewDocument, expect, selectTool, test } from "./helpers";
|
|
|
|
test.describe("Editor Keyboard Shortcuts", () => {
|
|
test.beforeEach(async ({ editorPage: page }) => {
|
|
await createNewDocument(page);
|
|
});
|
|
|
|
test("V activates move tool", async ({ editorPage: page }) => {
|
|
await selectTool(page, "brush"); // start elsewhere
|
|
await page.keyboard.press("v");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='move']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("B activates brush tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("b");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='brush']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("E activates eraser tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("e");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='eraser']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("C activates crop tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("c");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='crop']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("M activates marquee tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("m");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='marquee-rect']")).toHaveAttribute(
|
|
"data-tool-active",
|
|
"true",
|
|
);
|
|
});
|
|
|
|
test("I activates eyedropper tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("i");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='eyedropper']")).toHaveAttribute(
|
|
"data-tool-active",
|
|
"true",
|
|
);
|
|
});
|
|
|
|
test("G activates fill tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("g");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='fill']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("H activates hand tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("h");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='hand']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("Z activates zoom tool", async ({ editorPage: page }) => {
|
|
await page.keyboard.press("z");
|
|
await page.waitForTimeout(300);
|
|
|
|
await expect(page.locator("[data-tool='zoom']")).toHaveAttribute("data-tool-active", "true");
|
|
});
|
|
|
|
test("shortcuts are disabled when typing in text input", async ({ editorPage: page }) => {
|
|
// Focus the zoom input in the status bar (a number input)
|
|
const zoomInput = page.locator("[data-testid='status-zoom'] input[type='number']");
|
|
await zoomInput.click();
|
|
await zoomInput.fill("");
|
|
|
|
// Pressing B while focused in input should NOT switch tool
|
|
const activeBefore = await page.locator("[data-tool-active='true']").getAttribute("data-tool");
|
|
|
|
await page.keyboard.press("b");
|
|
await page.waitForTimeout(300);
|
|
|
|
const activeAfter = await page.locator("[data-tool-active='true']").getAttribute("data-tool");
|
|
|
|
// Tool should not have changed to brush
|
|
expect(activeAfter).toBe(activeBefore);
|
|
});
|
|
});
|