40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
const storybookPort = Number(process.env.PLAYWRIGHT_STORYBOOK_PORT || 6007);
|
|
const storybookURL = `http://127.0.0.1:${storybookPort}`;
|
|
|
|
test.describe("Storybook theme QA", () => {
|
|
test("renders the ThemeToggle light story on the light canvas", async ({
|
|
page,
|
|
}, testInfo) => {
|
|
test.skip(testInfo.project.name !== "chromium-desktop");
|
|
|
|
const consoleMessages: string[] = [];
|
|
page.on("console", (message) => {
|
|
if (["error", "warning"].includes(message.type())) {
|
|
consoleMessages.push(message.text());
|
|
}
|
|
});
|
|
|
|
const url = `${storybookURL}/iframe.html?id=ui-themetoggle--light&viewMode=story`;
|
|
await page.goto(url, { waitUntil: "networkidle" });
|
|
|
|
await expect(page.locator("html")).toHaveAttribute("data-ui-theme", "light");
|
|
await expect(
|
|
page.getByRole("button", { name: "Light theme" }),
|
|
).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "Light theme" })).toHaveAttribute(
|
|
"aria-pressed",
|
|
"true",
|
|
);
|
|
await expect(page.locator("body")).toHaveCSS(
|
|
"background-color",
|
|
"rgb(238, 242, 231)",
|
|
);
|
|
expect(
|
|
consoleMessages.filter((message) =>
|
|
message.includes("Global args/argTypes can only be set globally"),
|
|
),
|
|
).toEqual([]);
|
|
});
|
|
});
|