feat(admin): E2E mock-сьюты inbox/reports/reviews + testids. Refs EventHub/EventHubFrontAdmin#33 #36

This commit is contained in:
2026-07-14 22:35:21 +03:00
parent 87c6b55e81
commit a3468518b3
9 changed files with 501 additions and 24 deletions
+84
View File
@@ -0,0 +1,84 @@
import { test, expect } from '@playwright/test';
import { seedAuthenticatedSession } from '../helpers/session';
test.describe('inbox reports (mock)', () => {
test.beforeEach(async ({ page }) => {
await seedAuthenticatedSession(page);
});
test('очередь pending, select и reviewed', async ({ page }) => {
await page.goto('/inbox/reports');
await expect(page.getByTestId('page-inbox-reports')).toBeVisible();
await expect(page.getByTestId('report-row-rpt-pending-1')).toBeVisible();
await expect(page.getByTestId('report-row-rpt-done-1')).toHaveCount(0);
await page.getByTestId('report-select-rpt-pending-1').click();
await expect(page.getByTestId('inbox-report-detail')).toBeVisible();
await page.getByTestId('btn-report-reviewed').click();
await expect(page.getByTestId('report-row-rpt-pending-1')).toHaveCount(0);
});
test('filter all показывает reviewed', async ({ page }) => {
await page.goto('/inbox/reports');
await page.getByTestId('filter-all').click();
await expect(page.getByTestId('report-row-rpt-done-1')).toBeVisible();
});
test('bulk dismissed', async ({ page }) => {
await page.goto('/inbox/reports');
await page.getByTestId('report-check-rpt-pending-1').check();
await page.getByTestId('report-check-rpt-pending-2').check();
await page.getByTestId('btn-bulk-dismissed').click();
await expect(page.getByTestId('report-row-rpt-pending-1')).toHaveCount(0);
await expect(page.getByTestId('report-row-rpt-pending-2')).toHaveCount(0);
});
});
test.describe('inbox tickets (mock)', () => {
test.beforeEach(async ({ page }) => {
await seedAuthenticatedSession(page);
});
test('open → in_progress → resolved', async ({ page }) => {
await page.goto('/inbox/tickets');
await expect(page.getByTestId('page-inbox-tickets')).toBeVisible();
await page.getByTestId('ticket-row-tkt-open-1').click();
await page.getByTestId('btn-ticket-in-progress').click();
await expect(page.getByTestId('btn-ticket-resolved')).toBeVisible();
await page.getByTestId('btn-ticket-resolved').click();
// resolved leaves active queue
await expect(page.getByTestId('ticket-row-tkt-open-1')).toHaveCount(0);
await page.getByTestId('filter-all').click();
await expect(page.getByTestId('ticket-row-tkt-open-1')).toBeVisible();
});
});
test.describe('reports explore (mock)', () => {
test.beforeEach(async ({ page }) => {
await seedAuthenticatedSession(page);
});
test('список и detail reviewed с confirm', async ({ page }) => {
await page.goto('/reports');
await expect(page.getByTestId('page-reports')).toBeVisible();
await page.goto('/reports/rpt-pending-1');
await expect(page.getByTestId('page-report-detail')).toBeVisible();
await page.getByTestId('btn-report-reviewed').click();
await expect(page.getByTestId('dialog-confirm-report-status')).toBeVisible();
await page.getByTestId('btn-confirm-status').click();
await expect(page.getByTestId('btn-report-reviewed')).toHaveCount(0);
});
});
test.describe('reviews explore (mock)', () => {
test.beforeEach(async ({ page }) => {
await seedAuthenticatedSession(page);
});
test('страница reviews рендерится, bulk отключён без выбора', async ({ page }) => {
await page.goto('/reviews');
await expect(page.getByTestId('page-reviews')).toBeVisible();
await expect(page.getByText('Great event')).toBeVisible();
await expect(page.getByTestId('btn-reviews-bulk-hidden')).toBeDisabled();
});
});