[tool:pytest]
# Pytest configuration for Crawailer comprehensive test suite

# Test discovery
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*

# Output and reporting
addopts = 
    --strict-markers
    --strict-config
    --verbose
    --tb=short
    --showlocals
    --durations=10
    --color=yes

# Async support
asyncio_mode = auto

# Filtering and markers
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    integration: marks tests as integration tests
    security: marks tests as security/penetration tests
    performance: marks tests as performance/stress tests
    edge_case: marks tests as edge case tests
    regression: marks tests as regression tests
    critical: marks tests as critical for release
    unit: marks tests as unit tests
    smoke: marks tests as smoke tests for quick validation

# Minimum version requirements
minversion = 6.0

# Test session configuration
console_output_style = progress
junit_suite_name = crawailer_js_api_tests

# Timeout configuration (requires pytest-timeout)
# timeout = 300
# timeout_method = thread

# Coverage configuration (if pytest-cov is installed)
# addopts = --cov=src/crawailer --cov-report=html --cov-report=term-missing

# Log configuration
log_cli = true
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] %(name)s: %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S

# Warnings configuration
filterwarnings =
    error
    ignore::UserWarning
    ignore::DeprecationWarning:pytest.*
    ignore::PendingDeprecationWarning

# xfail configuration
xfail_strict = true

# Parallel execution (requires pytest-xdist)
# addopts = -n auto

# HTML report configuration (requires pytest-html)
# --html=reports/report.html --self-contained-html