Добавлено описание для удаления и поиска новостей в файле NewsAdminPage.ts. Реализованы тесты для удаления и поиска новостей
This commit is contained in:
@@ -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() {
|
||||||
@@ -111,7 +113,12 @@ export class NewsAdminPage {
|
|||||||
await this.page.locator('tr', { hasText: title }).getByRole('button', { name: 'Удалить' }).click();
|
await this.page.locator('tr', { hasText: title }).getByRole('button', { name: 'Удалить' }).click();
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteExistingImage() {
|
async deleteExistingImage() {
|
||||||
await this.deleteFileButton.click();
|
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