chore: consolidate browser tests and remove temporary artifacts
Some checks failed
Test and deploy / Verify production build (push) Failing after 6m0s
Some checks failed
Test and deploy / Verify production build (push) Failing after 6m0s
This commit is contained in:
53
tests/browser/admin.spec.ts
Normal file
53
tests/browser/admin.spec.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
test('owner can edit content, create a translated project, upload media, and sign out', async ({ page, request }) => {
|
||||
expect((await request.get('/api/admin/settings')).status()).toBe(401);
|
||||
await page.goto('/admin');
|
||||
await expect(page).toHaveURL(/\/admin\/login$/);
|
||||
await page.getByLabel('Email', { exact: true }).fill('e2e@example.com');
|
||||
await page.getByLabel('Password', { exact: true }).fill('Only-for-isolated-e2e-tests-2026');
|
||||
await page.getByRole('button', { name: 'Sign in', exact: true }).click();
|
||||
await expect(page.getByRole('heading', { name: 'Site settings', exact: true })).toBeVisible();
|
||||
await page.screenshot({ path: test.info().outputPath('admin-settings.png'), fullPage: true });
|
||||
await page.getByRole('button', { name: 'Profile & sections', exact: true }).click();
|
||||
await page.getByRole('button', { name: 'Hero hero', exact: true }).click();
|
||||
const name = page.getByLabel('Name', { exact: true });
|
||||
const oldName = await name.inputValue();
|
||||
await name.fill('An editable portfolio');
|
||||
await page.getByRole('button', { name: 'Save changes', exact: true }).first().click();
|
||||
await expect(page.getByRole('status')).toContainText('Saved');
|
||||
expect(await (await request.get('/')).text()).toContain('An editable portfolio');
|
||||
await page.getByLabel('Name', { exact: true }).fill(oldName);
|
||||
await page.getByRole('button', { name: 'Save changes', exact: true }).first().click();
|
||||
await expect(page.getByRole('status')).toContainText('Saved');
|
||||
|
||||
await page.getByRole('button', { name: 'Languages', exact: true }).click();
|
||||
await page.getByRole('button', { name: '+ Add language', exact: true }).click();
|
||||
await page.getByLabel('Name', { exact: true }).fill('Deutsch');
|
||||
await page.getByLabel('Language code').fill('de');
|
||||
await page.getByRole('button', { name: 'Save changes', exact: true }).first().click();
|
||||
await expect(page.getByRole('status')).toContainText('Saved');
|
||||
const german = await request.get('/de'); expect(german.status()).toBe(200); expect(await german.text()).toContain('lang="de"');
|
||||
|
||||
await page.getByRole('button', { name: 'Projects', exact: true }).click();
|
||||
await page.getByRole('button', { name: '+ Add item', exact: true }).click();
|
||||
const id = `browser-project-${test.info().project.name}`;
|
||||
await page.getByLabel('ID (used in the URL)', { exact: true }).fill(id);
|
||||
await page.getByRole('button', { name: 'Save changes', exact: true }).first().click();
|
||||
await expect(page.getByRole('status')).toContainText('Saved');
|
||||
expect((await request.get(`/de/projects/${id}`)).status()).toBe(200);
|
||||
await page.getByLabel('Visible', { exact: true }).uncheck();
|
||||
await page.getByRole('button', { name: 'Save changes', exact: true }).first().click();
|
||||
await expect(page.getByRole('status')).toContainText('Saved');
|
||||
expect((await request.get(`/projects/${id}`)).status()).toBe(404);
|
||||
page.once('dialog', dialog => dialog.accept());
|
||||
await page.getByRole('button', { name: 'Delete item', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('Deleted');
|
||||
|
||||
await page.getByRole('button', { name: 'Media library', exact: true }).click();
|
||||
await page.locator('input[type=file]').setInputFiles({ name: 'certificate.pdf', mimeType: 'application/pdf', buffer: Buffer.from('%PDF-1.4\n1 0 obj\n<<>>\nendobj\n%%EOF') });
|
||||
await expect(page.getByRole('link', { name: 'certificate.pdf' }).first()).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Sign out', exact: true }).click();
|
||||
await expect(page).toHaveURL(/\/admin\/login$/);
|
||||
await page.goto('/admin'); await expect(page).toHaveURL(/\/admin\/login$/);
|
||||
});
|
||||
Reference in New Issue
Block a user