Какой фреймворк использовали для автоматизации на последнем проекте?

«Какой фреймворк использовали для автоматизации на последнем проекте?» — вопрос из категории Фреймворки тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На последнем проекте (веб-приложение на 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, что давало наглядные дашборды для анализа падений.