Автоматизация тестирования веб-приложений давно перестала быть просто «написать скрипт и забыть». Современный QA-инженер — это наполовину разработчик, наполовину аналитик, который должен быстро разбираться в новых инструментах, отлаживать флейки и встраивать тесты в CI/CD. Но даже опытные специалисты тратят уйму времени на рутинные задачи: генерацию тестовых данных, написание шаблонного кода, анализ упавших тестов. Здесь на помощь приходят промты для ИИ-ассистентов — они позволяют делегировать рутину и сосредоточиться на действительно сложных задачах.
В этой статье я собрал 15 практичных промтов, которые покрывают весь цикл работы с автотестами: от написания первого теста до настройки пайплайна и разбора флейков. Каждый промт сопровождается примером использования и пояснением, как его адаптировать под ваш проект. Вы узнаете, как заставить нейросеть генерировать код, который действительно работает, а не просто выглядит правдоподобно.
Базовые промты: с чего начать
Эти промты помогут вам быстро создавать каркас тестов и не тратить время на рутину.
1. Генерация теста по пользовательскому сценарию
Задача: Получить готовый тест на основе описания сценария.
Промт:
Напиши тест на [Cypress/Playwright/Selenium] для проверки сценария: [опишите сценарий, например, «пользователь входит в систему, добавляет товар в корзину и оформляет заказ»]. Используй [Page Object Model], данные для теста возьми из [фикстур/переменных окружения]. Добавь проверки [критических элементов].
Пример результата:
// cypress/e2e/checkout.cy.js
describe('Checkout flow', () => {
it('should complete purchase', () => {
cy.login(Cypress.env('USER'), Cypress.env('PASS'));
cy.addToCart('apple');
cy.get('[data-test="checkout"]').click();
cy.fillShippingForm();
cy.get('[data-test="place-order"]').should('be.visible').click();
cy.contains('Order placed').should('be.visible');
});
});
Почему это работает: Промт задаёт контекст (инструмент, паттерн, источник данных), и нейросеть генерирует код, который легко интегрировать в проект.
2. Создание Page Object Model
Задача: Автоматически сгенерировать классы Page Object для вашей страницы.
Промт:
Создай Page Object для страницы [URL или название] в [Cypress/Playwright/Selenium]. Включи селекторы для элементов: [перечислите элементы, например, «поле email, кнопка submit, сообщение об ошибке»]. Используй [CSS/XPath] селекторы, добавь методы для взаимодействия с элементами.
Пример результата:
// pages/LoginPage.ts
export class LoginPage {
private emailInput = '[data-test="email"]';
private passwordInput = '[data-test="password\']';
private submitButton = '[data-test="login-submit"]';
async login(email: string, password: string) {
await page.fill(this.emailInput, email);
await page.fill(this.passwordInput, password);
await page.click(this.submitButton);
}
}
Совет: Уточняйте в промте, какие именно селекторы предпочтительны — это избавит от лишних правок.
3. Генерация тестовых данных
Задача: Получить набор реалистичных данных для тестов.
Промт:
Сгенерируй JSON-файл с тестовыми данными для [формы регистрации]. Включи 10 записей с полями: [имя, email, телефон, пароль]. Используй [faker.js/библиотеку] для генерации, данные должны быть уникальными и соответствовать формату [email/телефон].
Пример результата:
[
{
"name": "John Doe",
"email": "john.doe@example.com",
"phone": "+1-555-0100",
"password": "P@ssw0rd!"
},
// ... ещё 9 записей
]
Применение: Подключите файл в тестах через cy.fixture() или импортируйте в Playwright.
4. Написание проверок для API
Задача: Создать тесты для REST API.
Промт:
Напиши тест на [Cypress/Playwright] для API-эндпоинта [GET/POST] [URL]. Проверь статус-код, схему ответа (используй [Joi/JSON Schema]) и ключевые поля. Добавь тест на негативный сценарий [например, неверные данные].
Пример результата:
// cypress/e2e/api.cy.js
it('GET /api/users returns list', () => {
cy.request('GET', '/api/users').then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property('data');
expect(response.body.data).to.have.length.greaterThan(0);
});
});
5. Подключение браузеров и устройств
Задача: Настроить запуск тестов в разных браузерах и разрешениях.
Промт:
Настрой проект [Playwright/Cypress] для запуска тестов в [Chrome, Firefox, WebKit] и на мобильных устройствах [iPhone 12, Pixel 5]. Укажи конфигурацию в [playwright.config.ts/cypress.config.js].
Пример для Playwright:
// playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
projects: [
{ name: 'chromium', use: { browserName: 'chromium' } },
{ name: 'firefox', use: { browserName: 'firefox' } },
{ name: 'webkit', use: { browserName: 'webkit' } },
{ name: 'mobile-chrome', use: { browserName: 'chromium', viewport: { width: 390, height: 844 } } },
],
});
Продвинутые промты: отладка и стабильность
Здесь — промты для борьбы с флейками и оптимизации тестов.
6. Анализ флейковых тестов
Задача: Найти причины нестабильности теста.
Промт:
У меня флейковый тест [вставьте код]. Он падает примерно в 10% случаев. Проанализируй возможные причины: тайминги, гонки, асинхронность, внешние зависимости. Предложи конкретные исправления, например, использование [waitFor, expect.poll, cy.intercept].
Пример: Нейросеть может предложить заменить cy.wait(2000) на cy.get('[data-test="result"]').should('be.visible') или использовать expect.poll для опроса состояния.
7. Исправление таймингов и ожиданий
Задача: Заменить жёсткие задержки на умные ожидания.
Промт:
Замени в этом тесте [код] все `cy.wait()` и `setTimeout()` на явные ожидания: `cy.get().should()`, `expect(page).toHaveURL()`, `waitForSelector()`. Убедись, что тест не будет ждать лишнего времени.
Пример: Вместо cy.wait(5000) — cy.intercept('GET', '/api/data').as('getData'); cy.wait('@getData');
8. Работа с теневой DOM и iframe
Задача: Взаимодействовать с элементами внутри Shadow DOM и iframe.
Промт:
Напиши тест на [Cypress/Playwright] для работы с элементом внутри [Shadow DOM/iframe]. Используй [cy.get('selector').shadow()/frameLocator()]. Опиши, как получить доступ к элементу и кликнуть по нему.
Пример для Playwright:
const frame = page.frameLocator('#my-iframe');
await frame.locator('button').click();
9. Перехват сетевых запросов (Mocking)
Задача: Подменить ответы API для изоляции теста.
Промт:
Настрой перехват запроса [GET/POST] [URL] и верни мок-ответ [JSON]. Используй [cy.intercept()/page.route()]. Добавь проверку, что запрос был отправлен.
Пример для Cypress:
cy.intercept('GET', '/api/user', { fixture: 'user.json' }).as('getUser');
cy.visit('/profile');
cy.wait('@getUser');
10. Параллельный запуск и шардирование
Задача: Настроить параллельный запуск тестов.
Промт:
Настрой параллельный запуск тестов в [Cypress/Playwright]. Используй [Cypress Dashboard/Playwright sharding]. Покажи конфигурацию для CI [GitHub Actions/Jenkins].
Пример для Playwright:
# .github/workflows/playwright.yml
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npx playwright test --shard=${{ matrix.shard }}/3
Экспертные промты: интеграция и оптимизация
Для тех, кто хочет выжать максимум из автоматизации.
11. Настройка CI/CD пайплайна
Задача: Создать полный пайплайн для запуска тестов.
Промт:
Создай конфигурацию для [GitHub Actions/Jenkins] для запуска тестов [Cypress/Playwright] на каждый push в ветку [main]. Включи установку зависимостей, запуск тестов, загрузку артефактов и отправку уведомлений в [Slack/Telegram].
Пример: Готовый YAML-файл с шагами: checkout, setup-node, npm ci, run tests, upload artifacts, notify.
12. Генерация отчётов и аллюр-интеграция
Задача: Настроить красивые отчёты.
Промт:
Настрой генерацию отчётов для [Cypress/Playwright] с использованием [Allure/Mochawesome]. Покажи, как добавить шаги, скриншоты и видео в отчёт. Интегрируй с [CI].
Пример: Использование @shelex/cypress-allure-plugin или @playwright/test reporter: allure-playwright.
13. Анализ покрытия кода
Задача: Оценить покрытие тестами.
Промт:
Настрой сбор покрытия кода для [Cypress/Playwright] с использованием [Istanbul/nyc]. Покажи, как подключить плагин и как интерпретировать отчёт.
Пример: В Playwright — '@playwright/test' поддерживает coverage через @babel/plugin-istanbul.
14. Оптимизация скорости выполнения
Задача: Ускорить прогон тестов.
Промт:
Проанализируй этот набор тестов [код/описание] и предложи способы ускорить выполнение: сократить количество шагов, использовать [параллельные запуски, кэширование, моки]. Дай конкретные рекомендации.
Пример: Замена cy.visit() на cy.request() для подготовки данных, уменьшение скриншотов.
15. Кроссбраузерное и кроссдевайсное тестирование
Задача: Настроить запуск на реальных устройствах.
Промт:
Настрой запуск тестов на [BrowserStack/Sauce Labs] для [Cypress/Playwright]. Покажи конфигурацию и пример команды запуска.
Пример: Использование webdriverio или playwright с browserstack.
Заключение
Промты — это не замена инженерному мышлению, а инструмент для ускорения рутины. Надеюсь, эта подборка поможет вам сократить время на написание и отладку тестов. Начните с базовых промтов, адаптируйте их под свой проект и постепенно переходите к сложным. А если у вас есть свои проверенные промты — делитесь в комментариях, обсудим!
Помните: нейросеть — отличный помощник, но финальное слово всегда за вами. Всегда проверяйте сгенерированный код на корректность и безопасность.
Комментарии