This commit is contained in:
dswbx
2025-03-28 15:17:04 +01:00
parent 9e3c081e50
commit 7ed5db5eaa
16 changed files with 377 additions and 73 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

+22
View File
@@ -0,0 +1,22 @@
// @ts-check
import { test, expect } from "@playwright/test";
import { testIds } from "../src/ui/lib/config";
test("start page has expected title", async ({ page }) => {
await page.goto("/");
await expect(page).toHaveTitle(/BKND/);
});
test("start page has expected heading", async ({ page }) => {
await page.goto("/");
// Example of checking if a heading with "No entity selected" exists and is visible
const heading = page.getByRole("heading", { name: /No entity selected/i });
await expect(heading).toBeVisible();
});
test("modal opens on button click", async ({ page }) => {
await page.goto("/");
await page.getByTestId(testIds.data.btnCreateEntity).click();
await expect(page.getByRole("dialog")).toBeVisible();
});
+51
View File
@@ -0,0 +1,51 @@
// @ts-check
import { test, expect } from "@playwright/test";
import { testIds } from "../src/ui/lib/config";
import type { SchemaResponse } from "../src/modules/server/SystemController";
// Annotate entire file as serial.
test.describe.configure({ mode: "serial" });
test("can enable media", async ({ page }) => {
await page.goto("/media/settings");
// enable
const enableToggle = page.locator("css=button#enabled");
if ((await enableToggle.getAttribute("aria-checked")) !== "true") {
await expect(enableToggle).toBeVisible();
await enableToggle.click();
await expect(enableToggle).toHaveAttribute("aria-checked", "true");
// select local
const localAdapter = page.locator("css=button#adapter-local");
await expect(localAdapter).toBeVisible();
await localAdapter.click();
// save
const saveBtn = page.getByRole("button", { name: /Update/i });
await expect(saveBtn).toBeVisible();
// intercept network request, wait for it to finish and get the response
const [request] = await Promise.all([
page.waitForRequest((request) => request.url().includes("api/system/schema")),
saveBtn.click(),
]);
const response = await request.response();
expect(response?.status(), "fresh config 200").toBe(200);
const body = (await response?.json()) as SchemaResponse;
expect(body.config.media.enabled, "media is enabled").toBe(true);
expect(body.config.media.adapter.type, "adapter is local").toBe("local");
}
});
test("can upload a file", async ({ page }) => {
await page.goto("/media");
// check any text to contain "Upload files"
await expect(page.getByText(/Upload files/i)).toBeVisible();
// upload a file from disk
// Start waiting for file chooser before clicking. Note no await.
const fileChooserPromise = page.waitForEvent("filechooser");
await page.getByText("Upload file").click();
const fileChooser = await fileChooserPromise;
await fileChooser.setFiles("./e2e/assets/image1.png");
});