food-market/tests/e2e/playwright.config.ts
nns 43a5552772
Some checks failed
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Has been cancelled
Docker API / Deploy API on stage (push) Has been cancelled
fix(stage-tests): IP-limit 60/min, locale ru-RU в playwright, исправлены payload'ы verify-spec'ов
После предыдущего фикса 5/мин per-username — per-IP 30/мин всё равно
ломал stage e2e (multi-tenant специ делают 4 signup+token подряд →
накапливается за минуту). Поднял до 60/мин token, 600/час; per-username
5/мин остаётся как анти-bruteforce.

Также: playwright.config.ts добавлен locale: 'ru-RU' — без этого
Chromium шлёт en-US, i18next отдаёт английский sidebar, а тесты ищут
русские лейблы (2.2 'Главная', 6.1 'Поставщик/Склад/Дата').

Verify-spec'и V-14 (POS Sync) и V-15 (Stock race) — починены payload'ы
под актуальную схему API (/api/catalog/stores не /api/inventory/stores,
quantity не qty, unitCost не costPrice, polnyy retail-sale body с
retailPointId/currencyId/payment/isReturn). Проверено:
- V-14: 1-й POS-батч 200 (accepted=1), 2-й replayedFromCache=true с тем
  же serverSaleId; detail GET показывает notes=pos:<csid-N> ✓
- V-15: 5 параллельных Post на остаток=3 → ровно 3 успешных (204), 2
  конфликта (409 'Недостаточно остатка'). Stock=0 после dust settles. ✓

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 17:38:36 +05:00

44 lines
1.6 KiB
TypeScript

import { defineConfig, devices } from '@playwright/test'
/**
* Конфиг Playwright Test для UI-deep тестирования стейджа.
* Запуск: pnpm exec playwright test (или `npx playwright test`).
*
* Env:
* E2E_ADMIN_URL — базовый URL (default https://test.admin.food-market.kz)
* CI=1 — включает workers=1, full retry off
*/
const baseURL = process.env.E2E_ADMIN_URL ?? 'https://test.admin.food-market.kz'
export default defineConfig({
testDir: './scenarios',
testMatch: /stage-ui-.*\.spec\.ts$/,
fullyParallel: false, // тесты делят tenant-данные через API, серий безопаснее
forbidOnly: !!process.env.CI,
retries: 0,
workers: 1,
reporter: [
['list'],
['html', { outputFolder: 'reports/playwright-html', open: 'never' }],
],
use: {
baseURL,
headless: true,
ignoreHTTPSErrors: true,
// По умолчанию Playwright Chromium = en-US → i18next отдаёт английский
// sidebar/labels. UI-deep тесты написаны под RU; для бенчмарка локалей
// i18n-спецы переключают вручную через localStorage.
locale: 'ru-RU',
viewport: { width: 1280, height: 800 },
actionTimeout: 15_000,
navigationTimeout: 30_000,
screenshot: 'only-on-failure',
trace: 'retain-on-failure',
video: 'retain-on-failure',
},
outputDir: 'reports/playwright-artifacts',
projects: [
{ name: 'chromium-desktop', use: { ...devices['Desktop Chrome'], viewport: { width: 1280, height: 800 } } },
],
})