Ответ
На последнем проекте (веб-приложение на React) основным фреймворком для UI-автоматизации был Playwright (на Python). Мы выбрали его после сравнения с Selenium и Cypress по нескольким причинам:
- Скорость и стабильность: Встроенные auto-wait и более умные селекторы резко сократили количество flaky-тестов.
- Поддержка нескольких браузеров из коробки: Мы легко покрыли Chrome, Firefox и Safari.
- Мощный API: Удобные методы для работы с сетью, файлами и мобильной эмуляцией.
Пример реального теста, который я писал:
import pytest
from playwright.sync_api import Page, expect
@pytest.mark.ui
class TestCheckoutFlow:
def test_guest_checkout_with_credit_card(self, page: Page):
# 1. Переход на сайт и добавление товара
page.goto("https://shop.example.com")
page.locator(".product-card:first-child .add-to-cart").click()
# 2. Переход в корзину
page.locator("a[href='/cart']").click()
expect(page).to_have_url("/cart")
# 3. Начало оформления заказа
page.locator("button:has-text('Checkout as Guest')").click()
# 4. Заполнение формы оплаты (имитация ввода в iframe)
card_frame = page.frame_locator(".card-iframe")
card_frame.locator("[name='cardnumber']").fill("4111111111111111")
card_frame.locator("[name='exp-date']").fill("12/30")
card_frame.locator("[name='cvc']").fill("123")
# 5. Завершение заказа и проверка успеха
page.locator("button#submit-payment").click()
expect(page.locator(".order-confirmation"))
.to_be_visible(timeout=10000)
# 6. Дополнительная проверка через API, что заказ создан в БД
order_id = page.locator(".order-id").text_content()
# ... здесь шёл вызов внутреннего API для верификации
Для API-тестирования мы использовали связку pytest + requests, а для управления тестовыми данными — pytest-fixtures. Отчётность генерировали в Allure, что давало наглядные дашборды для анализа падений.