mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-21 01:01:41 +00:00
80 lines
3.2 KiB
TypeScript
80 lines
3.2 KiB
TypeScript
import { expect } from "@playwright/test";
|
|
import { test } from "../fixtures";
|
|
import axios from "axios";
|
|
import path from "path";
|
|
|
|
const fakeModelName = "FAKE-MODEL";
|
|
const fakeLabels = "test, 1, woof";
|
|
const newModelName = "foo-bar";
|
|
const platforms = ["LINUX_RK3588_64", "LINUX_QCS6490"];
|
|
|
|
for (const platform of platforms) {
|
|
test.describe(`Platform: ${platform}`, () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/#/settings");
|
|
await axios.post("/override/platform", { platform: platform });
|
|
await page.reload();
|
|
});
|
|
|
|
test("testSettingsPage", async ({ page }) => {
|
|
if (platform.endsWith("RK3588_64")) {
|
|
await expect(page.getByRole("main")).toContainText("Linux AARCH 64-bit with RK3588");
|
|
} else if (platform.endsWith("QCS6490")) {
|
|
await expect(page.getByRole("main")).toContainText("Linux AARCH 64-bit with QCS6490");
|
|
}
|
|
await expect(page.getByText("Object Detection")).toBeVisible();
|
|
});
|
|
|
|
test("Upload model", async ({ page }) => {
|
|
const testsDir = process.env.TESTS_DIR;
|
|
if (!testsDir) {
|
|
throw new Error("TESTS_DIR is not set");
|
|
}
|
|
|
|
await page.getByRole("button", { name: "Import Model" }).click();
|
|
await page.getByRole("textbox", { name: "Labels" }).fill(fakeLabels);
|
|
await page.getByRole("spinbutton", { name: "Width" }).fill("640");
|
|
await page.getByRole("spinbutton", { name: "Height" }).fill("640");
|
|
await page.getByTestId("import-version-select").click();
|
|
await page.getByRole("option", { name: "YOLOv8" }).click();
|
|
|
|
const modelFile = platform.endsWith("RK3588_64") ? `${fakeModelName}.rknn` : `${fakeModelName}.tflite`;
|
|
await page
|
|
.getByRole("button", { name: "Model File Model File" })
|
|
.setInputFiles(path.join(testsDir, "tests/resources", modelFile));
|
|
|
|
await page.getByRole("button", { name: "Import Object Detection Model" }).click();
|
|
|
|
await page.goto("/#/settings");
|
|
const tableRow = page.getByTestId("model-table").locator("tr", { hasText: fakeModelName });
|
|
|
|
await expect(tableRow).toBeVisible();
|
|
await expect(tableRow).toContainText(fakeLabels);
|
|
});
|
|
|
|
test("Rename model", async ({ page }) => {
|
|
const tableRow = page.getByTestId("model-table").locator("tr", { hasText: fakeModelName });
|
|
|
|
await tableRow.getByRole("button", { name: "Rename Model" }).click();
|
|
await page.getByRole("textbox", { name: "New Name New Name" }).fill(newModelName);
|
|
await page.getByRole("button", { name: "Rename", exact: true }).click();
|
|
|
|
await page.reload();
|
|
|
|
const renamedRow = page.getByTestId("model-table").locator("tr", { hasText: newModelName });
|
|
await expect(renamedRow).toContainText(fakeLabels);
|
|
});
|
|
|
|
test("Delete model", async ({ page }) => {
|
|
const tableRow = page.getByTestId("model-table").locator("tr", { hasText: newModelName });
|
|
|
|
await tableRow.getByRole("button", { name: "Delete Model" }).click();
|
|
await page.getByRole("button", { name: "Delete model", exact: true }).click();
|
|
|
|
await page.reload();
|
|
const deletedRow = page.getByTestId("model-table").locator("tr", { hasText: newModelName });
|
|
await expect(deletedRow).toHaveCount(0);
|
|
});
|
|
});
|
|
}
|