pdf-accessibility/tests/conftest.py
Vadym Samoilenko 0e24602096 Add production readiness: authentication, logging, retry logic, and test suite
Phase 1: Critical bug fixes
- Fix missing os/sys imports in pdf_remediation.py (line 427 crash)
- Install Python dependencies (venv with 11 packages)
- Create runtime directories (uploads, results, .cache)
- Configure environment (.env from .env.example)

Phase 2: Production features
- Add authentication module (auth.php) with API key support
- Integrate auth into api.php with CORS headers update
- Add structured logging framework (logger_config.py) with rotation
- Add retry helper (retry_helper.py) with exponential backoff
- Apply retry decorators to AI API calls (Claude and Google Vision)
- Create comprehensive test suite (31 tests, 34% coverage)
  * Unit tests for checker and remediation
  * Integration tests for API and authentication
  * pytest configuration with coverage reporting

Documentation:
- Add requirements specifications (BRS, FRS, SAD) to docs_req/
- Add PDF-UA-1 technical background
- Add sample accessibility report

All tests passing (31/31). Ready for production deployment.

Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
2026-02-25 13:26:02 +00:00

61 lines
1.4 KiB
Python

"""
Pytest configuration and fixtures for PDF Accessibility Checker tests
"""
import pytest
import sys
import os
from pathlib import Path
# Add parent directory to path for imports
sys.path.insert(0, str(Path(__file__).parent.parent))
@pytest.fixture
def sample_good_pdf():
"""Path to sample good PDF file"""
return Path("Test_files/sample_good.pdf")
@pytest.fixture
def sample_poor_pdf():
"""Path to sample poor PDF file"""
return Path("Test_files/sample_poor.pdf")
@pytest.fixture
def temp_output_dir(tmp_path):
"""Temporary directory for test outputs"""
output_dir = tmp_path / "output"
output_dir.mkdir()
return output_dir
@pytest.fixture
def mock_api_responses():
"""Mock API responses for testing without actual API calls"""
return {
'claude': {
'type': 'informational',
'alt_text': 'A test image showing sample content',
'has_text': False,
'decorative': False
},
'google_vision': {
'has_text': False,
'text_content': None,
'labels': ['Document', 'Text', 'Paper'],
'objects': []
}
}
@pytest.fixture
def sample_pdf_metadata():
"""Sample PDF metadata for testing"""
return {
'title': 'Test Document',
'author': 'Test Author',
'subject': 'Test Subject',
'language': 'en-US'
}