Smoke-тест не заменяет полный набор, но за минуту отвечает на главный вопрос: новая версия вообще открывается и выполняет критический сценарий?
Минимальный тест
import { test, expect } from '@playwright/test';
test('главная, вход и форма обратной связи', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveTitle(/DevConnect/);
await page.getByRole('button', { name: 'Войти' }).click();
await page.getByLabel('Email').fill(process.env.E2E_EMAIL!);
await page.getByLabel('Пароль').fill(process.env.E2E_PASSWORD!);
await page.getByRole('button', { name: 'Войти' }).click();
await expect(page.getByText('Ваш профиль')).toBeVisible();
await page.goto('/contact');
await page.getByLabel('Сообщение').fill('Проверка стенда');
await expect(page.getByRole('button', { name: 'Отправить' })).toBeEnabled();
});
Используйте отдельного тестового пользователя без административных прав. Секреты храните в CI secret, не в репозитории. На production не отправляйте реальное сообщение: проверяйте форму до submit или используйте специальный безопасный тестовый маршрут на staging.
Надёжность
Опирайтесь на role/label, а не на цепочки CSS. Не добавляйте случайные sleep; Playwright сам ожидает готовность элемента. Сохраняйте trace и screenshot только при падении. Проверяйте как минимум Chromium и мобильный viewport для главной.
Официальные источники