feat: With auth e2e test scenarios, not fully done. With debug mode playwright in main yml for gitea

This commit is contained in:
Stepan Vladovskiy 2024-06-13 08:38:43 -03:00
parent 914f9a6a7b
commit 86c091f366
2 changed files with 186 additions and 0 deletions

View File

@ -36,6 +36,7 @@ jobs:
run: npm run e2e
env:
BASE_URL: ${{ github.event.deployment_status.target_url }}
DEBUG: pw:api
email-templates:
runs-on: ubuntu-latest

View File

@ -0,0 +1,185 @@
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();
});