test(ui): проверить опрос сервера из очереди проблем
This commit is contained in:
1 parent
ca9474ac83
commit
27f8323624
3 files changed
+43
-1
No files matched your search
@@ -29,6 +29,12 @@
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Не начат |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
|
||||
|
||||
## Приёмка 7.5Г — сквозной сценарий сервера (2026-09-23)
|
||||
|
||||
- Добавлен E2E «проблема на дашборде → выбранный сервер → опрос с 403 → успешный повтор → назад → вперёд». Проверены точный ID и одна строка, сохранение выбранного сервера при отказе, два явных POST только выбранному устройству и отсутствие операций записи от переходов истории.
|
||||
- Новый тест прошёл, ESLint файла чистый. Код приложения не менялся, production build не повторялся: последняя успешная сборка ca9474a. HTTP-моки не доказывают реальное изменение состояния RouterOS; после возврата очередь отражает тот же фикстурный offline-статус.
|
||||
- Следующий шаг 7.5: смена backend/mode при незавершённой операции мониторинга, затем свести границы приёмки этапа. Сквозной сценарий проверок мониторинга с действием из дашборда остаётся отдельно. На старте 18% пятичасовой квоты, после проверки 11%; выполнен небольшой блок по просьбе продолжить ниже резерва. Локальный коммит без push.
|
||||
|
||||
## Приёмка 7.5В — формы серверов и таблица Resources (2026-09-23)
|
||||
|
||||
- Форма сервера на телефоне занимает полную ширину; fieldset получил min-w-0, выбор типа узла и кнопки подвала допускают перенос. На 320 px прежде выходили за экран поля, страны и последний шаг. Проверены четыре шага редактирования, выбор Home Router, добавленный WAN, раскрытые дополнительные поля и Escape на 320/390/1440 px. Существующие проверки создания и ошибок сохранения также прошли.
|
||||
|
||||
@@ -61,7 +61,7 @@ URL — источник сохранённого состояния. Back/Forwa
|
||||
3. **7.4 — формы, детали и полный контекст мониторинга.** Восстановление вкладки/фильтров из URL, понятные единицы и подписи, возврат к списку после действия. Не дублировать сохранённые исправления этапа 1; проверить загрузку, отмену, 400/403/500, timeout и повторное нажатие.
|
||||
4. **7.5 — приёмка этапа.** Сценарий «проблема → сервер/проверка → действие → возврат» с сохранением контекста; профильные E2E, права в HTTP-моках, TypeScript, lint и build. Реальные JWT/RouterOS отдельно в тестовом окружении.
|
||||
|
||||
Следующий исполняемый шаг: 7.5 — сквозные переходы дашборд → объект → действие → возврат, смена backend/mode при незавершённой операции и фиксация ограничений. Формы серверов проверены на 320/390/1440 px, Resources после прокрутки — на 320/390 px; исправлены переполнение формы и обрезка фильтров/таблицы. Формы Ping/Speed и вкладки проверены на 320/390/1440 px; устранены переполнение форм, перекрытие параметров Speed и сдвиг страницы при выборе вкладки. URL-контекст вкладки, Ping и Resources выполнен. Учесть границы HTTP-моков, экспорт серверов и ограничения сетевых операций из журнала; этап 7 целиком пока не завершён.
|
||||
Следующий исполняемый шаг: 7.5 — смена backend/mode при незавершённой операции мониторинга, сквозной сценарий проверки из дашборда и фиксация ограничений. Сквозной сценарий сервера с отказом 403, повтором и Back/Forward проверен; навигация не отправляет запросы записи. Формы серверов проверены на 320/390/1440 px, Resources после прокрутки — на 320/390 px; исправлены переполнение формы и обрезка фильтров/таблицы. Формы Ping/Speed и вкладки проверены на 320/390/1440 px; устранены переполнение форм, перекрытие параметров Speed и сдвиг страницы при выборе вкладки. URL-контекст вкладки, Ping и Resources выполнен. Учесть границы HTTP-моков, экспорт серверов и ограничения сетевых операций из журнала; этап 7 целиком пока не завершён.
|
||||
|
||||
## Решение по синхронизации URL (7.1)
|
||||
|
||||
|
||||
@@ -167,3 +167,39 @@ test("Internet path: поздний дополнительный запрос н
|
||||
await expect(source.locator("time").first()).toHaveAttribute("datetime", timestamp!)
|
||||
await expect(source.locator("time").last()).toHaveAttribute("datetime", "2026-09-20T00:00:00Z")
|
||||
})
|
||||
|
||||
test('Сквозная приёмка: проблема → опрос сервера с отказом и повтором → возврат', async ({ page }) => {
|
||||
const writes: string[] = []
|
||||
page.on('request', request => {
|
||||
if (!['GET', 'HEAD', 'OPTIONS'].includes(request.method())) writes.push(new URL(request.url()).pathname)
|
||||
})
|
||||
await setup(page, false, 2)
|
||||
let fail = true
|
||||
await page.route('**/api/servers/2/poll', route => route.fulfill({
|
||||
status: fail ? 403 : 200,
|
||||
json: fail ? { error: 'Опрос запрещён политикой сервера' } : {},
|
||||
}))
|
||||
const queue = page.getByRole('region', { name: 'Требует внимания', exact: true })
|
||||
await queue.getByRole('link', { name: /^Узел 2/ }).click()
|
||||
await expect(page).toHaveURL(/\/servers\?server=2$/)
|
||||
const context = page.getByRole('status', { name: 'Сервер по ссылке' })
|
||||
await expect(context).toContainText('Узел 2')
|
||||
await expect(page.locator('tr[data-row-id]')).toHaveCount(1)
|
||||
expect(writes).toEqual([])
|
||||
const poll = page.getByRole('button', { name: 'Проверить сервер', exact: true })
|
||||
await poll.click()
|
||||
await expect(page.getByText('Опрос: успешно 0 из 1', { exact: true })).toBeVisible()
|
||||
await expect(context).toContainText('Узел 2')
|
||||
fail = false
|
||||
await poll.click()
|
||||
await expect(page.getByText('Опрос: успешно 1 из 1', { exact: true })).toBeVisible()
|
||||
expect(writes).toEqual(['/api/servers/2/poll', '/api/servers/2/poll'])
|
||||
await page.goBack()
|
||||
await expect(page).toHaveURL(/\/dashboard$/)
|
||||
await expect(queue.getByRole('link', { name: /^Узел 2/ })).toBeVisible()
|
||||
await page.goForward()
|
||||
await expect(context).toContainText('Узел 2')
|
||||
await expect(page.locator('tr[data-row-id]')).toHaveCount(1)
|
||||
await expect(poll).toBeEnabled()
|
||||
expect(writes).toEqual(['/api/servers/2/poll', '/api/servers/2/poll'])
|
||||
})
|
||||
Reference in new issue
Block a user