test: добавлены проверки #/inbox и #/me в ui_smoke.js

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wasrusgen 2026-05-18 12:24:50 +03:00
parent 3741657fb6
commit 864e70f39b
2 changed files with 42 additions and 3 deletions

View File

@ -1,7 +1,7 @@
# Статус агента: Функционал # Статус агента: Функционал
> Обновляется агентом `/project:feature` после каждой задачи. > Обновляется агентом `/project:feature` после каждой задачи.
**Последнее обновление:** 2026-05-18 **Последнее обновление:** 2026-05-18 (inbox ✅)
--- ---
@ -27,7 +27,7 @@
|---------|---------|--------| |---------|---------|--------|
| Мой статус менеджера | `#/me` или `#/status` | ❌ не реализован | | Мой статус менеджера | `#/me` или `#/status` | ❌ не реализован |
| Экран мастера (замерщик/сборщик) | `#/master` | ✅ реализован 2026-05-18 | | Экран мастера (замерщик/сборщик) | `#/master` | ✅ реализован 2026-05-18 |
| Входящие задачи менеджера | `#/inbox` | ❌ не реализован | | Входящие задачи менеджера | `#/inbox` | ✅ реализован 2026-05-18 |
| Отгрузки завода | — | ❌ блокер: Drive 404 | | Отгрузки завода | — | ❌ блокер: Drive 404 |
| Поступления склада | — | ❌ блокер: Drive 404 | | Поступления склада | — | ❌ блокер: Drive 404 |

View File

@ -228,7 +228,46 @@ async function run() {
? pass("Нет JS-ошибок на экране сборок") ? pass("Нет JS-ошибок на экране сборок")
: fail("JS-ошибки на экране сборок", jsErrAssembly.slice(0, 2).join(" | ")); : fail("JS-ошибки на экране сборок", jsErrAssembly.slice(0, 2).join(" | "));
// ── 7. Снимок экрана для отчёта ─────────────────────────────────────────── // ── 7. Входящие задачи менеджера (#/inbox) ────────────────────────────────
section("📥 Входящие менеджера (#/inbox)");
await page.evaluate(() => { location.hash = "#/inbox"; });
await page.waitForTimeout(3000);
const jsErrInbox = errors.flush();
jsErrInbox.length === 0
? pass("Нет JS-ошибок на экране #/inbox")
: fail("JS-ошибки на экране #/inbox", jsErrInbox.slice(0, 2).join(" | "));
const inboxRendered = await page.evaluate(() =>
document.querySelector(".podbor-header, .empty, .error, .assembly-card") !== null
);
inboxRendered
? pass("#/inbox отрендерился (заголовок или список)")
: fail("#/inbox не отрендерился — нет .podbor-header / .empty / .error");
const inboxTitle = await page.evaluate(() =>
document.querySelector(".podbor-title")?.textContent?.trim() || ""
);
inboxTitle === "Входящие"
? pass("Заголовок «Входящие» корректен")
: fail("Неверный заголовок #/inbox", `получили: "${inboxTitle}"`);
// ── 8. Профиль (#/me) ─────────────────────────────────────────────────────
section("👤 Профиль (#/me)");
await page.evaluate(() => { location.hash = "#/me"; });
await page.waitForTimeout(3000);
const jsErrMe = errors.flush();
jsErrMe.length === 0
? pass("Нет JS-ошибок на экране #/me")
: fail("JS-ошибки на экране #/me", jsErrMe.slice(0, 2).join(" | "));
const meRendered = await page.evaluate(() =>
document.querySelector(".podbor-header, .error") !== null
);
meRendered
? pass("#/me отрендерился")
: fail("#/me не отрендерился — нет .podbor-header");
// ── 9. Снимок экрана для отчёта ───────────────────────────────────────────
await page.evaluate(() => { location.hash = "#/clients"; }); await page.evaluate(() => { location.hash = "#/clients"; });
await page.waitForTimeout(2000); await page.waitForTimeout(2000);
await page.screenshot({ path: "tests/ui_last_run.png", fullPage: false }); await page.screenshot({ path: "tests/ui_last_run.png", fullPage: false });