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('/');
|
|
|
|
|
});
|
|
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
test.describe('Doc Create', () => {
|
|
|
|
|
test('checks all the create doc elements are visible', async ({ page }) => {
|
2024-04-03 11:49:14 +02:00
|
|
|
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();
|
|
|
|
|
});
|
|
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
test('checks the routing on new doc created', async ({
|
2024-04-03 11:49:14 +02:00
|
|
|
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
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
const docName = `My routing doc ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
|
|
|
|
await page.getByText('Document name').fill(docName);
|
2024-05-27 13:27:49 +02:00
|
|
|
await page.getByRole('button', { name: 'Create the document' }).click();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
const elDoc = page.locator('h2').getByText(docName);
|
|
|
|
|
await expect(elDoc).toBeVisible();
|
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-06-25 14:49:53 +02:00
|
|
|
await expect(elDoc).toBeHidden();
|
2024-04-03 11:49:14 +02:00
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
await panel.locator('li').getByText(docName).click();
|
|
|
|
|
await expect(elDoc).toBeVisible();
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|
|
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
test('checks alias docs url with homepage', async ({ page }) => {
|
2024-04-03 11:49:14 +02:00
|
|
|
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 }) => {
|
2024-06-13 14:24:56 +02:00
|
|
|
// eslint-disable-next-line playwright/no-wait-for-timeout
|
|
|
|
|
await page.waitForTimeout(300);
|
|
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
await page.goto('/docs/some-unknown-doc');
|
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
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
test('checks that the doc is public', async ({ page, browserName }) => {
|
|
|
|
|
const responsePromiseDoc = page.waitForResponse(
|
2024-04-18 13:21:08 +02:00
|
|
|
(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
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
const docName = `My routing doc ${browserName}-${Math.floor(Math.random() * 1000)}`;
|
|
|
|
|
await page.getByText('Document name').fill(docName);
|
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
|
|
|
|
2024-06-25 14:49:53 +02:00
|
|
|
const responseDoc = await responsePromiseDoc;
|
|
|
|
|
const is_public = (await responseDoc.json()).is_public;
|
2024-04-18 13:21:08 +02:00
|
|
|
expect(is_public).toBeTruthy();
|
|
|
|
|
});
|
2024-04-03 11:49:14 +02:00
|
|
|
});
|