feat: publish Regex Tools 0.2.0
This commit is contained in:
98
tests/browser/formatting.spec.ts
Normal file
98
tests/browser/formatting.spec.ts
Normal file
@@ -0,0 +1,98 @@
|
||||
import { expect, test, type Page } from "@playwright/test";
|
||||
|
||||
async function setEditor(page: Page, testId: string, value: string) {
|
||||
await page.getByTestId(testId).locator(".cm-content").fill(value);
|
||||
}
|
||||
|
||||
async function waitForSyntax(page: Page) {
|
||||
await expect(
|
||||
page.getByRole("button", { name: "Run", exact: true }),
|
||||
).toBeEnabled({ timeout: 15_000 });
|
||||
}
|
||||
|
||||
test("real ECMAScript workers validate, confirm and apply an exact formatter candidate", async ({
|
||||
page,
|
||||
}) => {
|
||||
const pageErrors: string[] = [];
|
||||
page.on("pageerror", (error) => pageErrors.push(error.message));
|
||||
await page.goto("./");
|
||||
await page.getByLabel("Live").uncheck();
|
||||
await page.getByRole("checkbox", { name: "Scan all" }).check();
|
||||
await setEditor(page, "editor-regular-expression-pattern", "a/b");
|
||||
await setEditor(page, "editor-test-text", "a/b a/b");
|
||||
await waitForSyntax(page);
|
||||
await page.getByRole("button", { name: "Run", exact: true }).click();
|
||||
await expect(page.locator(".run-status")).toHaveClass(/status-ready/u, {
|
||||
timeout: 15_000,
|
||||
});
|
||||
|
||||
await page.getByRole("button", { name: "Unit tests", exact: true }).click();
|
||||
await page.getByRole("button", { name: "Add current result" }).click();
|
||||
await expect(page.locator(".test-list li")).toHaveCount(1);
|
||||
|
||||
await page.getByRole("button", { name: "Format", exact: true }).click();
|
||||
const dialog = page.getByRole("dialog", {
|
||||
name: "Format pattern",
|
||||
});
|
||||
await expect(dialog).toBeVisible();
|
||||
await expect(dialog).toBeInViewport();
|
||||
await expect(dialog.getByTestId("formatted-pattern-preview")).toHaveText(
|
||||
"a\\/b",
|
||||
);
|
||||
await dialog
|
||||
.getByRole("button", { name: "Validate exact snapshots" })
|
||||
.click();
|
||||
|
||||
await expect(dialog.locator(".formatter-status")).toContainText(
|
||||
"All completed safety gates retained the same observable behavior.",
|
||||
{ timeout: 20_000 },
|
||||
);
|
||||
await expect(dialog).toContainText("Native ECMAScript RegExp");
|
||||
await expect(dialog).toContainText("1 / 1 applicable");
|
||||
await expect(
|
||||
dialog.getByRole("checkbox", {
|
||||
name: /I understand that this bounded validation/u,
|
||||
}),
|
||||
).toBeEnabled();
|
||||
await expect(
|
||||
dialog.getByRole("button", { name: "Apply formatted pattern" }),
|
||||
).toBeDisabled();
|
||||
await dialog
|
||||
.getByRole("checkbox", {
|
||||
name: /I understand that this bounded validation/u,
|
||||
})
|
||||
.check();
|
||||
await dialog.getByRole("button", { name: "Apply formatted pattern" }).click();
|
||||
|
||||
await expect(dialog).not.toBeVisible();
|
||||
await expect(
|
||||
page
|
||||
.getByTestId("editor-regular-expression-pattern")
|
||||
.locator(".cm-content"),
|
||||
).toHaveText("a\\/b");
|
||||
await page.getByRole("button", { name: "Match", exact: true }).click();
|
||||
await waitForSyntax(page);
|
||||
await page.getByRole("button", { name: "Run", exact: true }).click();
|
||||
await expect(page.locator(".run-status")).toContainText("2 matches", {
|
||||
timeout: 15_000,
|
||||
});
|
||||
expect(pageErrors).toEqual([]);
|
||||
});
|
||||
|
||||
test("PCRE2 formatter reports unavailable without reinterpreting syntax", async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto("./");
|
||||
await page.getByLabel("Live").uncheck();
|
||||
await page.getByRole("combobox", { name: "Flavour" }).selectOption("pcre2");
|
||||
await waitForSyntax(page);
|
||||
await page.getByRole("button", { name: "Format", exact: true }).click();
|
||||
|
||||
const dialog = page.getByRole("dialog", {
|
||||
name: "Format pattern",
|
||||
});
|
||||
await expect(dialog).toContainText("currently available only for ECMAScript");
|
||||
await expect(
|
||||
dialog.getByRole("button", { name: "Validate exact snapshots" }),
|
||||
).toHaveCount(0);
|
||||
});
|
||||
Reference in New Issue
Block a user