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(); }); });