Приведи пример End-To-End теста.

«Приведи пример End-To-End теста.» — вопрос из категории Основы тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

End-To-End (E2E) тест проверяет полный пользовательский сценарий от начала до конца. Вот пример теста для процесса покупки в интернет-магазине, написанный на Python с использованием Selenium и Pytest.

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

@pytest.fixture
def browser():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    yield driver
    driver.quit()

def test_complete_purchase_flow(browser):
    """E2E тест: вход, добавление товара, оформление заказа."""
    # 1. Открыть сайт и авторизоваться
    browser.get("https://www.saucedemo.com")
    browser.find_element(By.ID, "user-name").send_keys("standard_user")
    browser.find_element(By.ID, "password").send_keys("secret_sauce")
    browser.find_element(By.ID, "login-button").click()

    # 2. Проверить успешный вход (переход на страницу товаров)
    assert "inventory" in browser.current_url

    # 3. Добавить первый товар в корзину
    add_to_cart_button = browser.find_element(By.ID, "add-to-cart-sauce-labs-backpack")
    add_to_cart_button.click()

    # 4. Перейти в корзину
    browser.find_element(By.CLASS_NAME, "shopping_cart_link").click()

    # 5. Проверить наличие товара в корзине и перейти к оформлению
    cart_item = browser.find_element(By.CLASS_NAME, "cart_item")
    assert cart_item.is_displayed()
    browser.find_element(By.ID, "checkout").click()

    # 6. Заполнить информацию для доставки
    browser.find_element(By.ID, "first-name").send_keys("Иван")
    browser.find_element(By.ID, "last-name").send_keys("Иванов")
    browser.find_element(By.ID, "postal-code").send_keys("123456")
    browser.find_element(By.ID, "continue").click()

    # 7. Завершить покупку и проверить подтверждение
    browser.find_element(By.ID, "finish").click()
    confirmation_message = WebDriverWait(browser, 5).until(
        EC.visibility_of_element_located((By.CLASS_NAME, "complete-header"))
    )
    assert "Thank you for your order!" in confirmation_message.text

Этот тест имитирует действия реального пользователя, проверяя интеграцию фронтенда, бэкенда, базы данных и, возможно, платежного шлюза.