Добавлено описание для удаления и поиска новостей в файле NewsAdminPage.ts. Реализованы тесты для удаления и поиска новостей

This commit is contained in:
Vlad Smykov
2025-07-04 16:53:01 +03:00
parent d3cd65a063
commit 06df4f1121
3 changed files with 94 additions and 2 deletions

View File

@@ -27,6 +27,7 @@ export class NewsAdminPage {
// Ошибки // Ошибки
readonly emptyTitleError: Locator; readonly emptyTitleError: Locator;
readonly emptyContentError: Locator; readonly emptyContentError: Locator;
readonly noNewsMessage: Locator;
constructor(page: Page) { constructor(page: Page) {
this.page = page; this.page = page;
@@ -54,6 +55,7 @@ export class NewsAdminPage {
// Ошибки валидации // Ошибки валидации
this.emptyTitleError = page.getByText('Заголовок новости не может быть пустым.'); this.emptyTitleError = page.getByText('Заголовок новости не может быть пустым.');
this.emptyContentError = page.getByText('Текст новости не может быть пустым.'); this.emptyContentError = page.getByText('Текст новости не может быть пустым.');
this.noNewsMessage = page.getByText('Новости отсутствуют');
} }
async loginAsAdmin() { async loginAsAdmin() {
@@ -114,4 +116,9 @@ export class NewsAdminPage {
async deleteExistingImage() { async deleteExistingImage() {
await this.deleteFileButton.click(); await this.deleteFileButton.click();
} }
async searchNews(query: string) {
await this.page.getByPlaceholder('Поиск').fill(query);
}
} }

View File

@@ -0,0 +1,48 @@
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.clickDeleteButtonForNews(title);
// Проверяем, что новость исчезла
await expect(newsPage.newsTable).not.toContainText(title);
});
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 page.getByRole('button', { name: 'Удалить' }).click();
// Проверяем, что новости больше нет
await expect(newsPage.newsTable).not.toContainText(title);
});
});

View File

@@ -0,0 +1,37 @@
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);
// Используем твой PageObject метод
await newsPage.searchNews(title);
// Проверяем что таблица отфильтровалась и содержит только нужный текст
await expect(newsPage.newsTable).toContainText(title);
});
test('Поиск по несуществующей строке', async ({ page }) => {
const newsPage = new NewsAdminPage(page);
await newsPage.loginAsAdmin();
await newsPage.goto();
await newsPage.searchNews('Такой новости точно нет');
await expect(newsPage.noNewsMessage).toBeVisible();
});
});