> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spn.wtf/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing

> Running tests for SPN

# Testing

SPN has comprehensive test suites for both backend and frontend.

## Backend Tests

Uses pytest with async support.

### Setup

```bash theme={null}
cd backend

# Ensure test database exists
docker exec -it spn_postgres psql -U postgres -c "CREATE DATABASE spn_test_db;" 2>/dev/null || true
```

### Run Tests

```bash theme={null}
# All tests
pytest tests/ -v

# Unit tests only (no DB)
pytest tests/unit/ -v

# Integration tests only
pytest tests/integration/ -v

# Specific file
pytest tests/integration/test_auth.py -v
```

### With Coverage

```bash theme={null}
pytest tests/ --cov=app --cov-report=term-missing
```

## Frontend Tests

Uses Vitest with React Testing Library.

### Run Tests

```bash theme={null}
cd frontend

# All tests
npm test

# Watch mode
npm run test:watch

# Coverage
npm run test:coverage
```

## Test Structure

### Backend

```
tests/
├── conftest.py         # Fixtures, test DB
├── unit/              # Unit tests
│   ├── test_security.py
│   └── test_config.py
└── integration/       # API endpoint tests
    ├── test_auth.py
    ├── test_companies.py
    └── test_catalog.py
```

### Frontend

```
src/
├── test/
│   ├── setup.ts        # Jest DOM, MSW setup
│   ├── test-utils.tsx  # renderWithProviders
│   └── mocks/
│       ├── handlers.ts # MSW handlers
│       └── server.ts   # MSW server
└── pages/__tests__/   # Component tests
```

## Mocking

External services are mocked in tests:

* Sanity CMS
* AWS S3
* Email service
* WhatsApp API

## CI/CD

Tests run automatically on GitHub Actions. See `.github/workflows/deploy.yml`.
