test(e2e): браузерный тест «Проверка данных» — бейдж + панель со счётчиками (п.5)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
592399f90e
commit
e1d82fd15c
44
tests/e2e/scenarios/stage-ui-data-quality.spec.ts
Normal file
44
tests/e2e/scenarios/stage-ui-data-quality.spec.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
/**
|
||||||
|
* E2E (браузер): фоновая «Проверка данных».
|
||||||
|
* - создаём товар без цены/группы (quick), пересчитываем через API;
|
||||||
|
* - на дашборде виден ненавязчивый бейдж «N товаров требуют внимания»;
|
||||||
|
* - на странице «Проверка данных» видны счётчики и детальный список.
|
||||||
|
*/
|
||||||
|
import { test, expect } from '@playwright/test'
|
||||||
|
import { apiSignup, attachSession } from '../lib/ui.js'
|
||||||
|
import { request as apiRequest } from '@playwright/test'
|
||||||
|
|
||||||
|
const BASE = process.env.E2E_ADMIN_URL ?? 'https://test.admin.food-market.kz'
|
||||||
|
|
||||||
|
test.describe('data-quality UI', () => {
|
||||||
|
test('бейдж на главной + панель со счётчиками', async ({ page }) => {
|
||||||
|
test.setTimeout(120_000)
|
||||||
|
const sess = await apiSignup('dqui')
|
||||||
|
const ctx = await apiRequest.newContext({
|
||||||
|
baseURL: BASE, ignoreHTTPSErrors: true, timeout: 60_000,
|
||||||
|
extraHTTPHeaders: { Authorization: `Bearer ${sess.accessToken}` },
|
||||||
|
})
|
||||||
|
// Товары с проблемами: без цены (и в корне → без группы), пара дублей.
|
||||||
|
await ctx.post('/api/catalog/products/quick', { data: { name: 'DQ без цены' } })
|
||||||
|
await ctx.post('/api/catalog/products/quick', { data: { name: 'DQ дубль' } })
|
||||||
|
await ctx.post('/api/catalog/products/quick', { data: { name: 'DQ дубль' } })
|
||||||
|
const rec = await ctx.post('/api/data-quality/recompute')
|
||||||
|
expect(rec.status()).toBe(200)
|
||||||
|
const sum = await rec.json()
|
||||||
|
expect(sum.total).toBeGreaterThan(0)
|
||||||
|
await ctx.dispose()
|
||||||
|
|
||||||
|
// Дашборд: бейдж виден.
|
||||||
|
await attachSession(page, sess, '/dashboard')
|
||||||
|
await expect(page.getByText(/требу.* внимания в справочнике/i)).toBeVisible({ timeout: 15_000 })
|
||||||
|
|
||||||
|
// Панель: заголовок + счётчики проверок.
|
||||||
|
await page.goto('/catalog/data-quality', { waitUntil: 'domcontentloaded' })
|
||||||
|
await expect(page.getByRole('heading', { name: 'Проверка данных' })).toBeVisible({ timeout: 15_000 })
|
||||||
|
await expect(page.getByText('Без цены продажи')).toBeVisible()
|
||||||
|
await expect(page.getByText('Возможный дубль (имя+единица)')).toBeVisible()
|
||||||
|
// Клик по проверке «Без цены продажи» показывает детальный список.
|
||||||
|
await page.getByText('Без цены продажи').first().click()
|
||||||
|
await expect(page.getByText('DQ без цены').first()).toBeVisible({ timeout: 10_000 })
|
||||||
|
})
|
||||||
|
})
|
||||||
Loading…
Reference in a new issue