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(); }); });