82 lines
3.4 KiB
TypeScript
82 lines
3.4 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
||
import path from 'path';
|
||
import { NewsAdminPage } from '../../../../page-objects/NewsAdminPage';
|
||
|
||
test.describe('Панель администратора — Новости (негативные сценарии редактирования)', () => {
|
||
|
||
test('Очистка полей при редактировании и сохранение', async ({ page }) => {
|
||
const newsPage = new NewsAdminPage(page);
|
||
await newsPage.loginAsAdmin();
|
||
await newsPage.goto();
|
||
|
||
const title = `Новость ${Date.now()}`;
|
||
const content = 'Текст для редактирования';
|
||
const imagePath = path.resolve(__dirname, '../../../../utils/test-data/image_1mb.png');
|
||
|
||
await newsPage.addNews({ title, content, imagePath });
|
||
await expect(newsPage.newsTable).toContainText(title);
|
||
|
||
await newsPage.clickEditButtonForNews(title);
|
||
|
||
await newsPage.titleTextarea.fill('');
|
||
await newsPage.contentTextarea.fill('');
|
||
await page.getByRole('button', { name: 'Сохранить' }).click();
|
||
|
||
await expect(newsPage.emptyTitleError).toBeVisible();
|
||
await expect(newsPage.emptyContentError).toBeVisible();
|
||
});
|
||
|
||
test('Попытка ввести слишком длинные заголовок и текст при редактировании', async ({ page }) => {
|
||
const newsPage = new NewsAdminPage(page);
|
||
await newsPage.loginAsAdmin();
|
||
await newsPage.goto();
|
||
|
||
const title = `Новость ${Date.now()}`;
|
||
const content = 'Текст для проверки длинного текста';
|
||
const imagePath = path.resolve(__dirname, '../../../../utils/test-data/image_1mb.png');
|
||
|
||
await newsPage.addNews({ title, content, imagePath });
|
||
await expect(newsPage.newsTable).toContainText(title);
|
||
|
||
await newsPage.clickEditButtonForNews(title);
|
||
|
||
const longTitle = 'A'.repeat(150);
|
||
const longContent = 'B'.repeat(1000);
|
||
|
||
await newsPage.titleTextarea.fill(longTitle);
|
||
await newsPage.contentTextarea.fill(longContent);
|
||
|
||
const titleValue = await newsPage.titleTextarea.inputValue();
|
||
const contentValue = await newsPage.contentTextarea.inputValue();
|
||
|
||
expect(titleValue.length).toBeLessThanOrEqual(100);
|
||
expect(contentValue.length).toBeLessThanOrEqual(750);
|
||
});
|
||
|
||
test('Попытка загрузить изображение больше 20 Мб при редактировании', async ({ page }) => {
|
||
const newsPage = new NewsAdminPage(page);
|
||
await newsPage.loginAsAdmin();
|
||
await newsPage.goto();
|
||
|
||
const title = `Новость ${Date.now()}`;
|
||
const content = 'Текст для проверки большого изображения';
|
||
const imagePath = path.resolve(__dirname, '../../../../utils/test-data/image_1mb.png');
|
||
|
||
await newsPage.addNews({ title, content, imagePath });
|
||
await expect(newsPage.newsTable).toContainText(title);
|
||
|
||
await newsPage.clickEditButtonForNews(title);
|
||
|
||
// Удаляем старое изображение
|
||
await newsPage.deleteExistingImage();
|
||
|
||
// Пробуем загрузить большое
|
||
const largeImagePath = path.resolve(__dirname, '../../../../utils/test-data/image_45mb.png');
|
||
await newsPage.fileInput.setInputFiles(largeImagePath);
|
||
|
||
// Проверяем появление ошибки
|
||
await expect(page.getByText('Размер файла превышает')).toBeVisible();
|
||
});
|
||
|
||
});
|