63 lines
2.9 KiB
TypeScript
63 lines
2.9 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { seedAuthenticatedSession } from '../helpers/session';
|
|
|
|
test.describe('system / overview (mock)', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await seedAuthenticatedSession(page);
|
|
});
|
|
|
|
test('admins: список, create dialog, detail', async ({ page }) => {
|
|
await page.goto('/admins');
|
|
await expect(page.getByTestId('page-admins')).toBeVisible();
|
|
await expect(page.getByTestId('row-admin-e2e-2')).toBeVisible();
|
|
await page.getByTestId('btn-create-admin').click();
|
|
await expect(page.getByTestId('dialog-create-admin')).toBeVisible();
|
|
await page.goto('/admins/admin-e2e-2');
|
|
await expect(page.getByTestId('page-admin-detail')).toBeVisible();
|
|
await expect(page.getByTestId('btn-edit-admin')).toBeVisible();
|
|
});
|
|
|
|
test('audit: страница и фильтры', async ({ page }) => {
|
|
await page.goto('/audit');
|
|
await expect(page.getByTestId('page-audit')).toBeVisible();
|
|
await expect(page.getByTestId('filter-audit')).toBeVisible();
|
|
await expect(page.getByTestId('row-audit-e2e-1')).toBeVisible();
|
|
});
|
|
|
|
test('monitoring: страница, range и node', async ({ page }) => {
|
|
await page.goto('/monitoring');
|
|
await expect(page.getByTestId('page-monitoring')).toBeVisible();
|
|
await page.getByTestId('filter-monitoring-range-30').click();
|
|
await page.getByTestId('filter-monitoring-node-node-a').click();
|
|
await expect(page).toHaveURL(/node=node-a/);
|
|
});
|
|
|
|
test('profile: view и edit', async ({ page }) => {
|
|
await page.goto('/profile');
|
|
await expect(page.getByTestId('page-profile')).toBeVisible();
|
|
await page.getByTestId('btn-edit-profile').click();
|
|
await expect(page.getByTestId('btn-save-profile')).toBeVisible();
|
|
await page.getByTestId('btn-cancel-profile').click();
|
|
await expect(page.getByTestId('btn-edit-profile')).toBeVisible();
|
|
});
|
|
|
|
test('dashboard остаётся доступен', async ({ page }) => {
|
|
await page.goto('/dashboard');
|
|
await expect(page.getByTestId('page-dashboard')).toBeVisible();
|
|
});
|
|
});
|
|
|
|
test.describe('i18n (mock)', () => {
|
|
test('переключение языка через меню меняет UI', async ({ page }) => {
|
|
await seedAuthenticatedSession(page);
|
|
await page.goto('/dashboard');
|
|
await page.getByTestId('menu-user').click();
|
|
await expect(page.getByTestId('menu-profile')).toHaveText(/Мой профиль/i);
|
|
await page.getByTestId('lang-en').click();
|
|
// Dropdown may close; reopen after store + i18n sync from PUT /me
|
|
await expect(page.getByText(/Профиль обновлён|Profile updated/i)).toBeVisible({ timeout: 15_000 });
|
|
await page.getByTestId('menu-user').click();
|
|
await expect(page.getByTestId('menu-profile')).toHaveText(/My profile/i);
|
|
});
|
|
});
|