Note: pytest-asyncio creates new event loop per test, so we cannot
reuse KworkClient across tests. Each test logs in independently.
This is acceptable because:
1. Login is fast (<1s)
2. Tests are independent (no shared state)
3. Auth tests verify login works correctly
4. Catalog tests verify API endpoints work
- Add event_loop fixture with session scope
- Add e2e_client fixture that logs in ONCE for all catalog tests
- Add catalog_kwork_id fixture that fetches kwork ID ONCE
- All catalog tests now reuse the same authenticated client
- Reduces login calls from 10 to 1 per test session
- Add session-scoped 'client' fixture for authenticated client
- Add 'catalog_kwork_id' fixture for reusable kwork ID
- Update all catalog tests to use fixtures
- Reduces login calls from 10 to 1 per test session
Features:
- Full async API client for Kwork.ru
- Pydantic models for type-safe responses
- Comprehensive error handling
- 93% test coverage
CI/CD:
- Parallel workflow jobs (lint, test, security)
- Ruff for linting and formatting
- MyPy for static type checking
- pip-audit for security scanning
- Pre-commit hooks for code quality