Вопрос с собеседования · Frontend
Как писать сквозные (e2e) тесты на Playwright?
MiddleВыкатка и эксплуатация
Ещё спрашивают так:
- Чем e2e-тест отличается от юнит-теста?
Коротко
E2E-тест проходит пользовательский сценарий в настоящем браузере против развёрнутого приложения: вход, поиск, оформление заказа. Их мало (вершина пирамиды) — только ключевые сценарии. В Playwright элементы ищут как пользователь: getByRole, getByLabel, getByText, а не по CSS-классам; авто-ожидание и web-first проверки (await expect(locator).toBeVisible()) убирают ручные sleep. Каждый тест независим: свои данные, авторизация через сохранённое состояние, запуск в CI параллельно с трассами при падении.
- Внешние сервисы (платежи) подменяют через page.route
- Trace viewer показывает шаги, DOM и сеть упавшего теста
- Тесты на нескольких браузерах и размерах экрана
Подробно
test('покупка', async ({ page }) => {
await page.goto('/catalog');
await page.getByRole('button', { name: 'В корзину' }).first().click();
await page.getByRole('link', { name: 'Корзина' }).click();
await expect(page.getByText('1 товар')).toBeVisible();
});Что хотят услышать
- Ключевые сценарии, мало тестов.
- Локаторы по ролям и авто-ожидание.
- Независимость тестов и запуск в CI.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Ключевые сценарии в браузере, локаторы по ролям, авто-ожидание вместо sleep, независимые тесты
- ✗Покрыть e2e-тестами все функции вместо юнит-тестов, а искать элементы по CSS-селекторам из вёрстки
- ✗Искать элементы по длинным CSS-селекторам из вёрстки
- ✗Тесты должны зависеть друг от друга и идти строго по порядку
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.