Initial
This commit is contained in:
commit
b43955e0d9
162 changed files with 15425 additions and 0 deletions
54
tests/e2e/admin.spec.ts
Normal file
54
tests/e2e/admin.spec.ts
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import { test, expect, type Page } from '@playwright/test';
|
||||
|
||||
async function login(page: Page, user: string, pass: string) {
|
||||
await page.goto('/login/');
|
||||
await page.fill('#lg-username', user);
|
||||
await page.fill('#lg-password', pass);
|
||||
await page.click('button[type=submit]');
|
||||
await expect(page.getByTestId('nav-menu')).toBeVisible();
|
||||
}
|
||||
|
||||
test('a non-staff user cannot reach the admin panel', async ({ page }) => {
|
||||
await login(page, 'demo', 'demo');
|
||||
// The menu entry is staff-only...
|
||||
await page.getByTestId('nav-menu').click();
|
||||
await expect(page.getByTestId('nav-admin')).toHaveCount(0);
|
||||
|
||||
// ...and visiting the route directly redirects away from it.
|
||||
await page.goto('/admin/');
|
||||
await expect(page).toHaveURL(/\/app/);
|
||||
await expect(page.getByTestId('admin-table')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('staff can list, search and deactivate a user', async ({ page }) => {
|
||||
await login(page, 'admin', 'admin');
|
||||
await page.getByTestId('nav-menu').click();
|
||||
await page.getByTestId('nav-admin').click();
|
||||
await expect(page.getByTestId('admin-table')).toBeVisible();
|
||||
|
||||
// Both seeded users are listed.
|
||||
await expect(page.getByTestId('admin-row')).toHaveCount(2);
|
||||
|
||||
// Search narrows the list.
|
||||
await page.getByTestId('admin-search').fill('demo');
|
||||
await expect(page.getByTestId('admin-row')).toHaveCount(1);
|
||||
|
||||
// Deactivation asks for an inline confirm first.
|
||||
await page.getByTestId('admin-deactivate').click();
|
||||
await page.getByTestId('admin-confirm-deactivate').click();
|
||||
await expect(page.getByTestId('admin-state')).toContainText(/отключён|disabled/i);
|
||||
|
||||
// And it can be reversed.
|
||||
await page.getByTestId('admin-activate').click();
|
||||
await expect(page.getByTestId('admin-state')).toContainText(/активен|active/i);
|
||||
});
|
||||
|
||||
test('staff cannot deactivate their own account', async ({ page }) => {
|
||||
await login(page, 'admin', 'admin');
|
||||
await page.goto('/admin/');
|
||||
await page.getByTestId('admin-search').fill('admin');
|
||||
await expect(page.getByTestId('admin-row')).toHaveCount(1);
|
||||
// The row is marked as "you" and offers no deactivate control.
|
||||
await expect(page.getByTestId('admin-row')).toContainText(/вы|you/i);
|
||||
await expect(page.getByTestId('admin-deactivate')).toHaveCount(0);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue