mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
test: add editor E2E test specs
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user