Ответ
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
Этот тест имитирует действия реального пользователя, проверяя интеграцию фронтенда, бэкенда, базы данных и, возможно, платежного шлюза.