2024-04-03 11:49:14 +02:00
|
|
|
import { expect, test } from '@playwright/test';
|
|
|
|
|
|
2024-06-06 22:13:18 +02:00
|
|
|
test.beforeEach(async ({ page }) => {
|
2024-04-03 11:49:14 +02:00
|
|
|
await page.goto('/');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test.describe('Pad Create', () => {
|
|
|
|
|
test('checks all the create pad elements are visible', async ({ page }) => {
|
|
|
|
|
const buttonCreateHomepage = page.getByRole('button', {
|
2024-05-27 13:27:49 +02:00
|
|
|
name: 'Create a new document',
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|
|
|
|
|
await buttonCreateHomepage.click();
|
|
|
|
|
await expect(buttonCreateHomepage).toBeHidden();
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
const card = page.getByLabel('Create new document card').first();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
await expect(card.getByLabel('Document name')).toBeVisible();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
|
|
|
|
await expect(card.getByLabel('icon group')).toBeVisible();
|
|
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
card.getByRole('heading', {
|
2024-05-27 13:27:49 +02:00
|
|
|
name: 'Name the document',
|
2024-04-03 11:49:14 +02:00
|
|
|
level: 3,
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
2024-04-18 13:21:08 +02:00
|
|
|
await expect(card.getByText('Is it public ?')).toBeVisible();
|
|
|
|
|
|
2024-04-03 11:49:14 +02:00
|
|
|
await expect(
|
|
|
|
|
card.getByRole('button', {
|
2024-05-27 13:27:49 +02:00
|
|
|
name: 'Create the document',
|
2024-04-03 11:49:14 +02:00
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
card.getByRole('button', {
|
|
|
|
|
name: 'Cancel',
|
|
|
|
|
}),
|
|
|
|
|
).toBeVisible();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('checks the cancel button interaction', async ({ page }) => {
|
|
|
|
|
const buttonCreateHomepage = page.getByRole('button', {
|
2024-05-27 13:27:49 +02:00
|
|
|
name: 'Create a new document',
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|
|
|
|
|
await buttonCreateHomepage.click();
|
|
|
|
|
await expect(buttonCreateHomepage).toBeHidden();
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
const card = page.getByLabel('Create new document card').first();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
|
|
|
|
await card
|
|
|
|
|
.getByRole('button', {
|
|
|
|
|
name: 'Cancel',
|
|
|
|
|
})
|
|
|
|
|
.click();
|
|
|
|
|
|
|
|
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('checks the routing on new pad created', async ({
|
|
|
|
|
page,
|
|
|
|
|
browserName,
|
|
|
|
|
}) => {
|
2024-05-27 13:27:49 +02:00
|
|
|
const panel = page.getByLabel('Documents panel').first();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
|
|
|
|
const padName = `My routing pad ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
2024-05-27 13:27:49 +02:00
|
|
|
await page.getByText('Document name').fill(padName);
|
|
|
|
|
await page.getByRole('button', { name: 'Create the document' }).click();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
2024-04-16 09:15:10 +02:00
|
|
|
const elPad = page.locator('h2').getByText(padName);
|
2024-04-03 11:49:14 +02:00
|
|
|
await expect(elPad).toBeVisible();
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
2024-04-03 11:49:14 +02:00
|
|
|
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', {
|
2024-05-27 13:27:49 +02:00
|
|
|
name: 'Create a new document',
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
await page.goto('/docs');
|
2024-04-03 11:49:14 +02:00
|
|
|
await expect(buttonCreateHomepage).toBeVisible();
|
2024-05-27 13:27:49 +02:00
|
|
|
await expect(page).toHaveURL(/\/docs$/);
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
test('checks 404 on docs/[id] page', async ({ page }) => {
|
|
|
|
|
await page.goto('/docs/some-unknown-pad');
|
2024-04-03 11:49:14 +02:00
|
|
|
await expect(
|
|
|
|
|
page.getByText(
|
|
|
|
|
'It seems that the page you are looking for does not exist or cannot be displayed correctly.',
|
|
|
|
|
),
|
|
|
|
|
).toBeVisible({
|
|
|
|
|
timeout: 15000,
|
|
|
|
|
});
|
|
|
|
|
});
|
2024-04-18 13:21:08 +02:00
|
|
|
|
|
|
|
|
test('checks that the pad is public', async ({ page, browserName }) => {
|
|
|
|
|
const responsePromisePad = page.waitForResponse(
|
|
|
|
|
(response) =>
|
|
|
|
|
response.url().includes('/documents/') && response.status() === 201,
|
|
|
|
|
);
|
|
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
const panel = page.getByLabel('Documents panel').first();
|
2024-04-18 13:21:08 +02:00
|
|
|
|
2024-05-27 13:27:49 +02:00
|
|
|
await panel.getByRole('button', { name: 'Add a document' }).click();
|
2024-04-18 13:21:08 +02:00
|
|
|
|
|
|
|
|
const padName = `My routing pad ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
2024-05-27 13:27:49 +02:00
|
|
|
await page.getByText('Document name').fill(padName);
|
2024-04-18 13:21:08 +02:00
|
|
|
await page.getByText('Is it public ?').click();
|
2024-05-27 13:27:49 +02:00
|
|
|
await page.getByRole('button', { name: 'Create the document' }).click();
|
2024-04-18 13:21:08 +02:00
|
|
|
|
|
|
|
|
const responsePad = await responsePromisePad;
|
|
|
|
|
const is_public = (await responsePad.json()).is_public;
|
|
|
|
|
expect(is_public).toBeTruthy();
|
|
|
|
|
});
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|