50 lines
3.0 KiB
TypeScript
50 lines
3.0 KiB
TypeScript
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\/jira\/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/jira/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\/jira\/issues\?project=AWPCA$/);
|
||
});
|
||
|
||
test("неизвестный проект в адресе", async ({ page }) => {
|
||
await login(page, "/app/jira/issues?project=NOPE");
|
||
await expect(page.getByText("проект NOPE не найден")).toBeVisible();
|
||
});
|
||
});
|