feat: With auth e2e test scenarios, not fully done. With debug mode playwright in main yml for gitea
This commit is contained in:
parent
914f9a6a7b
commit
86c091f366
|
@ -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
|
||||
|
|
185
tests/auth-user-test.spec.ts
Normal file
185
tests/auth-user-test.spec.ts
Normal 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();
|
||||
});
|
Loading…
Reference in New Issue
Block a user