diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 832d47e6..ba3c68eb 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -29,6 +29,11 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Не начат | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат | +## Блок 8.4А2 — мобильный период серверного трафика (2026-09-24) + +- Добавлены E2E ширин 320/390 px: кнопка 24ч помещается в экран, меняет период, показывает подтверждённые детали; документ не переполняется по горизонтали. Всего 4 теста деталей прошли, lint теста чистый. Изменений production-кода в этом блоке нет. +- Использовано 98% пятичасового и 62% недельного лимита; работа сохранена локальным коммитом без push. Следующий шаг: мобильные клиенты/интерфейсы, длинные значения и пустые состояния трафика, затем оставшиеся пункты 8.4. Общая приёмка этапа 8 ещё не завершена. + ## Блок 8.4А — адаптивная оболочка трафика (2026-09-24) - Общие списки/детали трафика и flow переходят в одну колонку на узких экранах; на широких — 300px + гибкая колонка. Отступы Frame адаптивны, заголовки и периоды переносятся, навигация разделов прокручивается по горизонтали. diff --git a/tests/e2e/traffic-details.spec.ts b/tests/e2e/traffic-details.spec.ts index ad97666a..ace661c8 100644 --- a/tests/e2e/traffic-details.spec.ts +++ b/tests/e2e/traffic-details.spec.ts @@ -56,3 +56,19 @@ test('Детали трафика: ошибка интерфейса не под await expect(page.getByRole('heading', { name: 'Детали 1h ether2', exact: true })).toBeVisible() await expect(page.getByLabel('Скорость выбранного сервера')).toBeVisible() }) + +for (const width of [320, 390]) { + test(`Детали трафика: период доступен на ${width}px`, async ({ page }) => { + await page.setViewportSize({ width, height: 900 }) + await setup(page) + const period = page.getByRole('button', { name: '24ч', exact: true }) + const box = await period.boundingBox() + expect(box).not.toBeNull() + expect(box!.x).toBeGreaterThanOrEqual(0) + expect(box!.x + box!.width).toBeLessThanOrEqual(width + 1) + await period.click() + await expect(page.getByRole('heading', { name: 'Детали 24h __all__', exact: true })).toBeVisible() + await expect(page.getByLabel('Скорость выбранного сервера')).toBeVisible() + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth + 1)).toBe(true) + }) +}