We will cache the login token in the browser storage and reuse it between tests. This will speed up the tests and reduce the load on the server.
128 lines
3.8 KiB
TypeScript
128 lines
3.8 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/');
|
|
});
|
|
|
|
test.describe('Pad Create', () => {
|
|
test('checks all the create pad elements are visible', async ({ page }) => {
|
|
const buttonCreateHomepage = page.getByRole('button', {
|
|
name: 'Create a new document',
|
|
});
|
|
await buttonCreateHomepage.click();
|
|
await expect(buttonCreateHomepage).toBeHidden();
|
|
|
|
const card = page.getByLabel('Create new document card').first();
|
|
|
|
await expect(card.getByLabel('Document name')).toBeVisible();
|
|
|
|
await expect(card.getByLabel('icon group')).toBeVisible();
|
|
|
|
await expect(
|
|
card.getByRole('heading', {
|
|
name: 'Name the document',
|
|
level: 3,
|
|
}),
|
|
).toBeVisible();
|
|
|
|
await expect(card.getByText('Is it public ?')).toBeVisible();
|
|
|
|
await expect(
|
|
card.getByRole('button', {
|
|
name: 'Create the document',
|
|
}),
|
|
).toBeVisible();
|
|
|
|
await expect(
|
|
card.getByRole('button', {
|
|
name: 'Cancel',
|
|
}),
|
|
).toBeVisible();
|
|
});
|
|
|
|
test('checks the cancel button interaction', async ({ page }) => {
|
|
const buttonCreateHomepage = page.getByRole('button', {
|
|
name: 'Create a new document',
|
|
});
|
|
await buttonCreateHomepage.click();
|
|
await expect(buttonCreateHomepage).toBeHidden();
|
|
|
|
const card = page.getByLabel('Create new document card').first();
|
|
|
|
await card
|
|
.getByRole('button', {
|
|
name: 'Cancel',
|
|
})
|
|
.click();
|
|
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
|
});
|
|
|
|
test('checks the routing on new pad created', async ({
|
|
page,
|
|
browserName,
|
|
}) => {
|
|
const panel = page.getByLabel('Documents panel').first();
|
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
|
|
|
const padName = `My routing pad ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
|
await page.getByText('Document name').fill(padName);
|
|
await page.getByRole('button', { name: 'Create the document' }).click();
|
|
|
|
const elPad = page.locator('h2').getByText(padName);
|
|
await expect(elPad).toBeVisible();
|
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
|
await expect(elPad).toBeHidden();
|
|
|
|
await panel.locator('li').getByText(padName).click();
|
|
await expect(elPad).toBeVisible();
|
|
});
|
|
|
|
test('checks alias pads url with homepage', async ({ page }) => {
|
|
await expect(page).toHaveURL('/');
|
|
|
|
const buttonCreateHomepage = page.getByRole('button', {
|
|
name: 'Create a new document',
|
|
});
|
|
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
|
|
|
await page.goto('/docs');
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
|
await expect(page).toHaveURL(/\/docs$/);
|
|
});
|
|
|
|
test('checks 404 on docs/[id] page', async ({ page }) => {
|
|
await page.goto('/docs/some-unknown-pad');
|
|
await expect(
|
|
page.getByText(
|
|
'It seems that the page you are looking for does not exist or cannot be displayed correctly.',
|
|
),
|
|
).toBeVisible({
|
|
timeout: 15000,
|
|
});
|
|
});
|
|
|
|
test('checks that the pad is public', async ({ page, browserName }) => {
|
|
const responsePromisePad = page.waitForResponse(
|
|
(response) =>
|
|
response.url().includes('/documents/') && response.status() === 201,
|
|
);
|
|
|
|
const panel = page.getByLabel('Documents panel').first();
|
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
|
|
|
const padName = `My routing pad ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
|
await page.getByText('Document name').fill(padName);
|
|
await page.getByText('Is it public ?').click();
|
|
await page.getByRole('button', { name: 'Create the document' }).click();
|
|
|
|
const responsePad = await responsePromisePad;
|
|
const is_public = (await responsePad.json()).is_public;
|
|
expect(is_public).toBeTruthy();
|
|
});
|
|
});
|