Добавлено описание для удаления и поиска новостей в файле NewsAdminPage.ts. Реализованы тесты для удаления и поиска новостей
This commit is contained in:
@@ -27,6 +27,7 @@ export class NewsAdminPage {
|
||||
// Ошибки
|
||||
readonly emptyTitleError: Locator;
|
||||
readonly emptyContentError: Locator;
|
||||
readonly noNewsMessage: Locator;
|
||||
|
||||
constructor(page: Page) {
|
||||
this.page = page;
|
||||
@@ -54,6 +55,7 @@ export class NewsAdminPage {
|
||||
// Ошибки валидации
|
||||
this.emptyTitleError = page.getByText('Заголовок новости не может быть пустым.');
|
||||
this.emptyContentError = page.getByText('Текст новости не может быть пустым.');
|
||||
this.noNewsMessage = page.getByText('Новости отсутствуют');
|
||||
}
|
||||
|
||||
async loginAsAdmin() {
|
||||
@@ -111,7 +113,12 @@ export class NewsAdminPage {
|
||||
await this.page.locator('tr', { hasText: title }).getByRole('button', { name: 'Удалить' }).click();
|
||||
}
|
||||
|
||||
async deleteExistingImage() {
|
||||
await this.deleteFileButton.click();
|
||||
async deleteExistingImage() {
|
||||
await this.deleteFileButton.click();
|
||||
}
|
||||
|
||||
async searchNews(query: string) {
|
||||
await this.page.getByPlaceholder('Поиск').fill(query);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
48
tests/ui/admin/news/admin-news-delete.spec.ts
Normal file
48
tests/ui/admin/news/admin-news-delete.spec.ts
Normal 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);
|
||||
});
|
||||
|
||||
});
|
||||
37
tests/ui/admin/news/admin-news-search.spec.ts
Normal file
37
tests/ui/admin/news/admin-news-search.spec.ts
Normal 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();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user