[project] name = "argus-testing" version = "0.12.0" description = "Testing MCP for coding agents: exercise real user journeys, find bugs, and verify them with evidence and persistence checks" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [{name = "Yichen Wu"}] urls = {Homepage = "https://yichenwu.dev/projects/argus", Documentation = "https://github.com/chriswu727/argus#readme", Repository = "https://github.com/chriswu727/argus", Issues = "https://github.com/chriswu727/argus/issues"} classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Topic :: Software Development :: Testing", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", ] keywords = ["testing", "qa", "software-testing", "browser-testing", "autonomous-testing", "qa-engineer", "bug-finding", "ai-agent", "playwright", "exploratory-testing", "mcp", "claude-code", "codex"] dependencies = [ "playwright>=1.40.0", "mcp[cli]>=1.30.0,<2.0.0", "click>=8.0.0", "pydantic>=2.0.0", "rich>=13.0.0", "Pillow>=13.0.0", "filelock>=4.2.4,<5", "starlette>=0.27,<2", "uvicorn>=0.31,<1", "typing-extensions>=4.9", "PyJWT>=2.15.1", "cryptography>=50.0.2", "certifi>=2026.10.23", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "ruff>=0.17,<0.18", "mypy>=2.4,<3", "httpx>=0.27,<1", "pip-audit>=2.9,<3", ] mac = [ # Screen mode — installed only on macOS. "pyobjc-framework-Cocoa>=10.0; sys_platform == 'darwin'", "pyobjc-framework-Quartz>=10.0; sys_platform == 'darwin'", "pyobjc-framework-ApplicationServices>=10.0; sys_platform == 'darwin'", ] [project.scripts] argus-mcp = "argus.mcp_server:main" argus-testing = "argus.mcp_server:main" argus-regression = "argus.cli:regression" argus-cleanup = "argus.cli:cleanup" [tool.hatch.build.targets.wheel] packages = ["argus"] [tool.hatch.build.targets.sdist] only-include = [ "argus", "argus_lab", "tests", "examples", "scripts/check_distributions.py", "test-site/app.py", "human-eye-fixture/app.py", "docs/architecture.md", "docs/decisions.md", "docs/agent-protocol.md", "docs/evaluation.md", "docs/evaluation-0.8.md", "pyproject.toml", "README.md", "README.zh-CN.md", "LICENSE", "CHANGELOG.md", "CONTRIBUTING.md", "SECURITY.md", "PRIVACY.md", "AGENTS.md", "llms-install.md", "server.json", "glama.json", ] [tool.pytest.ini_options] testpaths = ["tests"] # Benchmarks and evaluations live in argus_lab, outside the installed package. pythonpath = ["."] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] asyncio_mode = "auto" [tool.ruff] target-version = "py311" line-length = 100 [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "I"] [tool.mypy] python_version = "3.11" files = ["argus/domain/contracts.py", "argus/domain/replay.py", "argus/domain/verification.py", "argus/settings.py", "argus/ports.py", "argus/application/context.py", "argus/application/telemetry.py", "argus/application/manager.py"] follow_imports = "silent" check_untyped_defs = true warn_unused_ignores = true no_implicit_optional = true [build-system] requires = ["hatchling"] build-backend = "hatchling.build"