Код-ревью Middle Playwright обновлено
Ревью: тест оформления заказа на Playwright
Вопрос
Найдите проблемы в тесте.
import { test, expect } from '@playwright/test';
test('оформление заказа', async ({ page }) => {
await page.goto('https://stage.shop.local/login');
await page.fill('#email', 'qa@example.com');
await page.fill('#password', 'Qwerty123');
await page.click('text=Войти');
await page.waitForTimeout(3000);
await page.goto('https://stage.shop.local/cart');
await page.getByRole('button', { name: 'Оформить' }).click();
const visible = await page.getByText('Заказ оформлен').isVisible();
expect(visible).toBe(true);
});
Коротко
Правильная версия: авторизованный контекст из storageState, корзина наполняется через API в фикстуре, переход по относительному пути с baseURL, пароль из окружения, итоговая проверка web-first assertion.
Что должен найти ревьюер
- Стильстрока 4Полный адрес стенда в тесте: должен быть baseURL из конфига
- Безопасностьстрока 6Пароль в коде теста: брать из переменных окружения или секретов CI
- Производительностьстрока 7Логин через UI в каждом тесте: медленно, лучше storageState из setup-проекта
- Ошибкастрока 8waitForTimeout(3000) вместо ожидания состояния
- Ошибкастрока 9Корзина не подготовлена тестом: тест зависит от того, что в ней уже что-то лежит
- Ошибкастрока 11isVisible() даёт снимок без ожидания; нужен await expect(locator).toBeVisible()
Разбор
Правильная версия: авторизованный контекст из storageState, корзина наполняется через API в фикстуре, переход по относительному пути с baseURL, пароль из окружения, итоговая проверка web-first assertion.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.