185 lines
7.7 KiB
TypeScript
185 lines
7.7 KiB
TypeScript
![]() |
import { test, expect } from '@playwright/test';
|
|||
|
|
|||
|
const baseHost = process.env.BASE_HOST || 'https://localhost:3000'
|
|||
|
|
|||
|
function generateRandomString(length = 10) {
|
|||
|
let result = '';
|
|||
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|||
|
const charactersLength = characters.length;
|
|||
|
for (let i = 0; i < length; i++) {
|
|||
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|||
|
}
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
async function login(page) {
|
|||
|
await page.getByRole('link', { name: 'Войти' }).click();
|
|||
|
await page.getByPlaceholder('Почта').click();
|
|||
|
await page.getByPlaceholder('Почта').fill('guests@discours.io');
|
|||
|
await page.getByPlaceholder('Пароль').click();
|
|||
|
await page.getByPlaceholder('Пароль').fill('Gue$tP@ss');
|
|||
|
await page.getByRole('button', { name: 'Войти' }).click();
|
|||
|
}
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Open Page', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await expect(page.getByRole('link', { name: 'Дискурс', exact: true })).toBeVisible();
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Login', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
});
|
|||
|
|
|||
|
test('Drafts - create article', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Черновики' }).click();
|
|||
|
await page.getByRole('link', { name: 'Создать публикацию' }).click();
|
|||
|
await page.locator('li').filter({ hasText: 'статья' }).locator('img').click();
|
|||
|
/* Fill the form */
|
|||
|
/* Save */
|
|||
|
/* Check is it created */
|
|||
|
});
|
|||
|
|
|||
|
test('Drafts - create literature', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Черновики' }).click();
|
|||
|
await page.getByRole('link', { name: 'Создать публикацию' }).click();
|
|||
|
await page.locator('li').filter({ hasText: /^литература$/ }).locator('img').click();
|
|||
|
/* Fill the form */
|
|||
|
/* Save */
|
|||
|
/* Check is it created */
|
|||
|
});
|
|||
|
|
|||
|
test('Drafts - create images', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);;
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Черновики' }).click();
|
|||
|
await page.getByRole('link', { name: 'Создать публикацию' }).click();
|
|||
|
await page.locator('li').filter({ hasText: 'изображения' }).locator('img').click();
|
|||
|
/* Fill the form */
|
|||
|
/* Save */
|
|||
|
/* Check is it created */
|
|||
|
});
|
|||
|
|
|||
|
test('Drafts - create music', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Черновики' }).click();
|
|||
|
await page.getByRole('link', { name: 'Создать публикацию' }).click();
|
|||
|
await page.locator('li').filter({ hasText: 'музыка' }).locator('img').click();
|
|||
|
/* Fill the form */
|
|||
|
/* Save */
|
|||
|
/* Check is it created */
|
|||
|
});
|
|||
|
|
|||
|
test('Drafts - create video', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Черновики' }).click();
|
|||
|
await page.getByRole('link', { name: 'Создать публикацию' }).click();
|
|||
|
await page.locator('li').filter({ hasText: 'видео' }).locator('img').click();
|
|||
|
/* Fill the form */
|
|||
|
/* Save */
|
|||
|
/* Check is it created */
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
test('Post topic', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
/* Open Draft */
|
|||
|
/* Post */
|
|||
|
});
|
|||
|
|
|||
|
test('Subscribe to user', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.goto(`${baseHost}/author/discours`);
|
|||
|
await page.getByRole('main').getByRole('button', { name: 'Подписаться' }).click();
|
|||
|
/* Check is it subscribed */
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Subscribe to topic', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/topic/society`);
|
|||
|
await page.getByRole('button', { name: 'Подписаться на тему' }).click();
|
|||
|
await page.getByPlaceholder('Почта').click();
|
|||
|
await page.getByPlaceholder('Почта').fill('guests@discours.io');
|
|||
|
await page.getByPlaceholder('Пароль').click();
|
|||
|
await page.getByPlaceholder('Пароль').fill('Gue$tP@ss');
|
|||
|
await page.getByRole('button', { name: 'Войти' }).click();
|
|||
|
await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Подписаться на тему' }).click();
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Un - Subscribe to topic', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/topic/society`);
|
|||
|
await login(page);
|
|||
|
await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Отписаться от темы' }).click();
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Change user data', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/`);
|
|||
|
await login(page);
|
|||
|
await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible();
|
|||
|
await page.getByRole('button', { name: 'Т.Р' }).click();
|
|||
|
await page.getByRole('link', { name: 'Профиль' }).click();
|
|||
|
await page.getByRole('button', { name: 'Редактировать профиль' }).click();
|
|||
|
await page.locator('.tiptap').click();
|
|||
|
const randomString = generateRandomString();
|
|||
|
const currentDate = new Date();
|
|||
|
await page.locator('.tiptap').fill('test: ' + randomString + ' ' + currentDate);
|
|||
|
try {
|
|||
|
const button = await page.getByRole('button', { name: 'Сохранить настройки' });
|
|||
|
await button.click();
|
|||
|
} catch (error) {
|
|||
|
console.log('Button has disappeared');
|
|||
|
}
|
|||
|
await expect(page.getByText('test: ' + randomString + ' ' + currentDate)).toBeVisible();
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Add comment to topic', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/v-peschere-u-tsiklopa/`);
|
|||
|
await login(page);
|
|||
|
const randomString = generateRandomString();
|
|||
|
const currentDate = new Date();
|
|||
|
await page.locator('.tiptap').click();
|
|||
|
await page.locator('.tiptap').fill('Проверка Комментариев: ' + randomString + ' ' + currentDate);
|
|||
|
await page.getByRole('button', { name: 'Отправить' }).click();
|
|||
|
await expect(page.getByText('Проверка Комментариев: ' + randomString + ' ' + currentDate)).toBeVisible();
|
|||
|
});
|
|||
|
|
|||
|
/* Done */
|
|||
|
test('Edit comment to topic', async ({ page }) => {
|
|||
|
await page.goto(`${baseHost}/author/testdev/comments`);
|
|||
|
await login(page);
|
|||
|
const firstCommentEditButton = await page.locator('._32U0J.WXcGK').first();
|
|||
|
await firstCommentEditButton.click();
|
|||
|
const randomString = generateRandomString();
|
|||
|
const currentDate = new Date();
|
|||
|
await page.locator('.tiptap').fill('Редактируемый Комментарий: ' + randomString + ' ' + currentDate);
|
|||
|
await page.getByRole('button', { name: 'Сохранить' }).click();
|
|||
|
await expect(page.getByText('Редактируемый Комментарий: ' + randomString + ' ' + currentDate)).toBeVisible();
|
|||
|
});
|