Law/e2e/tests/service_requests_flow.spec.js
2026-02-27 21:10:01 +03:00

55 lines
2.6 KiB
JavaScript

const { test, expect } = require("@playwright/test");
const {
preparePublicSession,
openPublicCabinet,
randomPhone,
trackCleanupPhone,
trackCleanupTrack,
cleanupTrackedTestData,
loginAdminPanel,
} = require("./helpers");
test.afterEach(async ({ page }, testInfo) => {
await cleanupTrackedTestData(page, testInfo);
});
test("service requests UI flow: client creates requests -> admin sees them in Requests tab", async ({ context, page }, testInfo) => {
const appUrl = process.env.E2E_BASE_URL || "http://localhost:8081";
const phone = randomPhone();
trackCleanupPhone(testInfo, phone);
await preparePublicSession(context, page, appUrl, phone);
const createResponse = await page.request.post(`${appUrl}/api/public/requests`, {
data: {
client_name: `Клиент E2E ${Date.now()}`,
client_phone: phone,
topic_code: "consulting",
description: "E2E проверка клиентских обращений к куратору и смены юриста.",
},
failOnStatusCode: false,
});
expect(createResponse.ok()).toBeTruthy();
const createBody = await createResponse.json();
const trackNumber = String(createBody.track_number || "");
expect(trackNumber.startsWith("TRK-")).toBeTruthy();
trackCleanupTrack(testInfo, trackNumber);
await openPublicCabinet(page, trackNumber);
await page.locator("#cabinet-help-open").click();
await expect(page.locator("#client-help-overlay")).toHaveClass(/open/);
await page.locator("#cabinet-curator-request-open").click();
await expect(page.locator("#client-page-status")).toContainText("Обращение отправлено.");
await expect(page.locator("#cabinet-curator-request-open")).toBeDisabled();
await page.locator("#service-request-body").fill("Прошу рассмотреть смену юриста.");
await page.locator("#cabinet-lawyer-change-open").click();
await expect(page.locator("#client-page-status")).toContainText("Обращение отправлено.");
await expect(page.locator("#cabinet-lawyer-change-open")).toBeDisabled();
await loginAdminPanel(page, { email: "admin@example.com", password: "admin123" });
await page.locator("aside .menu button[data-section='serviceRequests']").click();
await expect(page.locator("#section-service-requests h2")).toHaveText("Запросы");
await expect(page.locator("#section-service-requests table")).toContainText("Прошу подключить куратора к текущей заявке.");
await expect(page.locator("#section-service-requests table")).toContainText("Прошу рассмотреть смену юриста");
});