test: mock-фикстура карточки клиента в smoke-тесте

page.route() перехватывает /api/clients и возвращает тестового клиента.
Карточка клиента теперь открывается и проверяется без реальных данных.
17 чеков, 0 пропущено.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wasrusgen 2026-05-18 13:43:09 +03:00
parent 7df9cc3901
commit 6616d48c0a

View File

@ -195,6 +195,26 @@ async function run() {
await page.waitForTimeout(1500); await page.waitForTimeout(1500);
} catch { /* ок */ } } catch { /* ок */ }
// ── Mock API: подставляем тестового клиента ──────────────────────────────
// Mock: список клиентов с тестовой записью
await page.route("**/api/clients", route => {
route.fulfill({
status: 200,
contentType: "application/json",
body: JSON.stringify({
ok: true,
clients: [{
client_name: "Тест Смоук",
client_phone: "+70000000000",
client_tg_id: "",
address: "ул. Тестовая, 1",
leads_count: 0,
last_lead_at: "",
}],
}),
});
});
// ── 2. Экран клиентов ───────────────────────────────────────────────────── // ── 2. Экран клиентов ─────────────────────────────────────────────────────
section("👥 Список клиентов"); section("👥 Список клиентов");
await page.evaluate(() => { location.hash = "#/clients"; }); await page.evaluate(() => { location.hash = "#/clients"; });
@ -212,7 +232,7 @@ async function run() {
? pass("Список клиентов отрендерился") ? pass("Список клиентов отрендерился")
: fail("Список клиентов пустой (нет .client-card, .empty, .error)"); : fail("Список клиентов пустой (нет .client-card, .empty, .error)");
// ── 3. Карточка первого клиента ─────────────────────────────────────────── // ── 3. Карточка первого клиента (mock-фикстура) ───────────────────────────
section("🪪 Карточка клиента"); section("🪪 Карточка клиента");
const firstCard = await page.$(".client-card"); const firstCard = await page.$(".client-card");
if (firstCard) { if (firstCard) {
@ -226,7 +246,7 @@ async function run() {
const headerText = await page.evaluate(() => const headerText = await page.evaluate(() =>
document.querySelector(".podbor-title")?.textContent?.trim() || "" document.querySelector(".podbor-title")?.textContent?.trim() || ""
); );
headerText.toLowerCase().includes("карточка") (headerText || "").toLowerCase().includes("карточка")
? pass("Заголовок карточки", headerText) ? pass("Заголовок карточки", headerText)
: fail("Ожидался заголовок 'Карточка клиента'", `получили: "${headerText}"`); : fail("Ожидался заголовок 'Карточка клиента'", `получили: "${headerText}"`);
@ -237,7 +257,7 @@ async function run() {
? pass("Содержимое карточки отрендерилось") ? pass("Содержимое карточки отрендерилось")
: fail("Карточка пустая (нет .client-detail-head)"); : fail("Карточка пустая (нет .client-detail-head)");
} else { } else {
pass("Карточка клиента — пропущено (нет клиентов в списке)", "добавьте клиента для теста"); fail("Карточка клиента — .client-card не найден после mock-фикстуры");
} }
// ── 4. Форма нового клиента ─────────────────────────────────────────────── // ── 4. Форма нового клиента ───────────────────────────────────────────────