Improve Playwright/E2E testing setup (#5056)
Co-authored-by: Frank Elsinga <frank@elsinga.de>pull/1231/merge
parent
01210ce88d
commit
3d9bbe1a62
@ -1,43 +0,0 @@
|
||||
import { test } from "@playwright/test";
|
||||
import { login, screenshot } from "./util-test";
|
||||
|
||||
/*
|
||||
* Setup
|
||||
*/
|
||||
|
||||
test("setup sqlite", async ({ page }, testInfo) => {
|
||||
await page.goto("./");
|
||||
await page.getByText("SQLite").click();
|
||||
await page.getByRole("button", { name: "Next" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("setup admin", async ({ page }, testInfo) => {
|
||||
await page.goto("./");
|
||||
await page.getByPlaceholder("Username").click();
|
||||
await page.getByPlaceholder("Username").fill("admin");
|
||||
await page.getByPlaceholder("Username").press("Tab");
|
||||
await page.getByPlaceholder("Password", { exact: true }).fill("admin123");
|
||||
await page.getByPlaceholder("Password", { exact: true }).press("Tab");
|
||||
await page.getByPlaceholder("Repeat Password").fill("admin123");
|
||||
await page.getByRole("button", { name: "Create" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
/*
|
||||
* All other tests should be run after setup
|
||||
*/
|
||||
|
||||
test("login", async ({ page }, testInfo) => {
|
||||
await page.goto("./dashboard");
|
||||
await login(page);
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("logout", async ({ page }, testInfo) => {
|
||||
await page.goto("./dashboard");
|
||||
await login(page);
|
||||
await page.getByText("A", { exact: true }).click();
|
||||
await page.getByRole("button", { name: "Log out" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
});
|
@ -0,0 +1,38 @@
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { login, restoreSqliteSnapshot, screenshot } from "../util-test";
|
||||
|
||||
test.describe("Example Spec", () => {
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await restoreSqliteSnapshot(page);
|
||||
});
|
||||
|
||||
test("dashboard", async ({ page }, testInfo) => {
|
||||
await page.goto("./dashboard");
|
||||
await login(page);
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("change display timezone", async ({ page }, testInfo) => {
|
||||
await page.goto("./settings/general");
|
||||
await login(page);
|
||||
await page.getByLabel("Display Timezone").selectOption("Pacific/Fiji");
|
||||
await page.getByRole("button", { name: "Save" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
|
||||
await page.goto("./dashboard");
|
||||
await page.goto("./settings/general");
|
||||
await expect(page.getByLabel("Display Timezone")).toHaveValue("Pacific/Fiji");
|
||||
});
|
||||
|
||||
test("database is reset after previous test", async ({ page }, testInfo) => {
|
||||
await page.goto("./settings/general");
|
||||
await login(page);
|
||||
|
||||
const timezoneEl = page.getByLabel("Display Timezone");
|
||||
await expect(timezoneEl).toBeVisible();
|
||||
await expect(timezoneEl).toHaveValue("auto");
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
});
|
@ -0,0 +1,56 @@
|
||||
import { test } from "@playwright/test";
|
||||
import { getSqliteDatabaseExists, login, screenshot, takeSqliteSnapshot } from "../util-test";
|
||||
|
||||
test.describe("Uptime Kuma Setup", () => {
|
||||
|
||||
test.skip(() => getSqliteDatabaseExists(), "Must only run once per session");
|
||||
|
||||
/*
|
||||
* Setup
|
||||
*/
|
||||
|
||||
test("setup sqlite", async ({ page }, testInfo) => {
|
||||
await page.goto("./");
|
||||
await page.getByText("SQLite").click();
|
||||
await page.getByRole("button", { name: "Next" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
await page.waitForURL("/setup"); // ensures the server is ready to continue to the next test
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("setup admin", async ({ page }, testInfo) => {
|
||||
await page.goto("./");
|
||||
await page.getByPlaceholder("Username").click();
|
||||
await page.getByPlaceholder("Username").fill("admin");
|
||||
await page.getByPlaceholder("Username").press("Tab");
|
||||
await page.getByPlaceholder("Password", { exact: true }).fill("admin123");
|
||||
await page.getByPlaceholder("Password", { exact: true }).press("Tab");
|
||||
await page.getByPlaceholder("Repeat Password").fill("admin123");
|
||||
await page.getByRole("button", { name: "Create" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
/*
|
||||
* All other tests should be run after setup
|
||||
*/
|
||||
|
||||
test("login", async ({ page }, testInfo) => {
|
||||
await page.goto("./dashboard");
|
||||
await login(page);
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("logout", async ({ page }, testInfo) => {
|
||||
await page.goto("./dashboard");
|
||||
await login(page);
|
||||
await page.getByText("A", { exact: true }).click();
|
||||
await page.getByRole("button", { name: "Log out" }).click();
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("take sqlite snapshot", async ({ page }, testInfo) => {
|
||||
await takeSqliteSnapshot(page);
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
});
|
Loading…
Reference in new issue