[tool.poetry] name = "atom-e2e-ui-tests" version = "3.1.0" description = "E2E UI tests for Atom using Playwright and pytest" authors = ["Atom Team"] readme = "README.md" [tool.poetry.dependencies] python = "^3.11" [tool.poetry.dev-dependencies] # Core testing framework pytest = ">=8.0.0" pytest-cov = ">=4.1.0" # Playwright for browser automation pytest-playwright = ">=1.58.0" playwright = ">=1.58.0" # Async support pytest-asyncio = ">=0.23.0" # Parallel test execution pytest-xdist = ">=3.5.0" # Test data generation faker = ">=22.0.0" # HTTP client for API-first setup httpx = ">=0.26.0" # Test reporting pytest-html = ">=4.1.0" pytest-json-report = ">=1.5.0" # Code quality mypy = ">=1.8.0" ruff = ">=0.2.0" [tool.pytest.ini_options] minversion = "7.4" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] # Note: Test retries (--reruns 2) are configured via conftest.py # to apply only in CI environment. Local development runs without # retries for faster feedback. See pytest_configure() in conftest.py. addopts = """ --strict-markers --strict-config --verbose --tb=short """ markers = [ "e2e: mark test as end-to-end UI test", "auth: mark test as authentication test", "agent: mark test as agent chat test", "canvas: mark test as canvas presentation test", "skill: mark test as skill test", "workflow: mark test as workflow test", "no_browser: mark test as unit test that doesn't need browser/fixtures", ] asyncio_mode = "auto" [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long (handled by formatter) ] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false # Allow gradual typing plugins = ["pytest.mypy"] [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"