Часть 1. Ответы
- Локаторы «ленивые» — это лишь описание поиска; реальный поиск идёт при действии, поэтому объявить их заранее безопасно.
context/pageсоздаются на каждый тест заново → тесты не делят состояние → их можно гонять параллельно.- Переопределить фикстуру
browser_context_args, добавив"viewport": {"width": ..., "height": ...}. --tracing=retain-on-failure; открыть —playwright show-trace <trace.zip>.- Через него можно быстро подготовить данные (POST) или проверить результат (GET) без UI — тесты короче и стабильнее.
Часть 2 и 3. Эталон
# conftest.py
import pytest
from pages.login_page import LoginPage
from pages.inventory_page import InventoryPage
@pytest.fixture(scope="session")
def browser_context_args(browser_context_args):
return {**browser_context_args, "viewport": {"width": 1440, "height": 900}}
@pytest.fixture
def login_page(page):
return LoginPage(page)
@pytest.fixture
def inventory_page(page):
return InventoryPage(page)
# tests/test_shop.py
from playwright.sync_api import expect
def test_add_backpack(login_page, inventory_page):
login_page.open() # page.goto("/") + base_url
login_page.login("standard_user", "secret_sauce")
expect(inventory_page.title).to_be_visible()
inventory_page.add_to_cart("Sauce Labs Backpack")
expect(inventory_page.cart_badge).to_have_text("1")
# Запуск
pytest --base-url https://www.saucedemo.com \
--tracing=retain-on-failure -n auto
⚠️ Реальные локаторы/классы saucedemo проверяйте через codegen — здесь важен подход.