sdlc-hub/web/e2e/projects.spec.ts
Andrey Epifancev 8062dc7668 Веб: «Связи» на /app/jira/links, условные пункты меню (#108)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:41:32 +04:00

50 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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\/links\?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/links?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();
});
});