import { expect, test } from "@playwright/test"; import { agentServeRefresh, login } from "./hub.ts"; // проект заводится один раз на тестовый хаб: сценарии идут по порядку, файл — последний по алфавиту test.describe.serial("проекты", () => { test("первый вход: проект AWPCA в адресе, на доске задача проекта", async ({ page }) => { await login(page); await expect(page).toHaveURL(/\/app\/board\?project=AWPCA$/); await expect(page.locator('.board .card[data-key="AURORA-9001"]')).toBeVisible(); }); test("метка занята: окно остаётся открытым, ошибка в alert", async ({ page }) => { await login(page); await page.getByLabel("Проект", { exact: true }).selectOption({ label: "+ Новый проект…" }); const d = page.getByRole("dialog", { name: "Новый проект" }); await d.getByLabel("Метка").fill("awpca"); await d.getByLabel("Название").fill("x"); await d.getByRole("button", { name: "Создать" }).click(); await expect(d.getByRole("alert")).toContainText("уже есть"); await expect(d).toBeVisible(); }); test("создание проекта из формы: адрес, пакет, разбор пакета агентом", async ({ page }) => { await login(page); await page.getByLabel("Проект", { exact: true }).selectOption({ label: "+ Новый проект…" }); const d = page.getByRole("dialog", { name: "Новый проект" }); await d.getByLabel("Метка").fill("STOCKS_DRRK"); await d.getByLabel("Название").fill("Запасы ДРРК"); await d.getByRole("button", { name: "Создать" }).click(); await expect(page).toHaveURL(/\?project=STOCKS_DRRK/); await expect(page.getByRole("status")).toContainText(/пакет #\d+/); await expect(page.locator(".board .card[data-key]")).toHaveCount(0); await agentServeRefresh(); // иначе пакет держит «Обновить из Jira» в других файлах на общем тестовом хабе await expect(page.getByRole("status")).toContainText("выполнен"); }); test("переключение проекта и раздела", async ({ page }) => { await login(page, "/app/board?project=STOCKS_DRRK"); await page.getByLabel("Проект", { exact: true }).selectOption({ label: "AWPCA — АРМ КА" }); await expect(page.locator('.board .card[data-key="AURORA-9001"]')).toBeVisible(); await page.getByRole("link", { name: "Задачи", exact: true }).click(); await expect(page).toHaveURL(/\/app\/issues\?project=AWPCA$/); }); test("неизвестный проект в адресе", async ({ page }) => { await login(page, "/app/issues?project=NOPE"); await expect(page.getByText("проект NOPE не найден")).toBeVisible(); }); });