# Matriz de Testes (com/sem banco e Playwright)

## Status (pronto x faltando)

**Pronto**
- Conteúdo descrito neste documento.

**Faltando**
- Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário.

---


Este documento consolida **todos os testes** conhecidos no repositório e define uma matriz clara para rodar testes **com banco**, **sem banco** e **E2E/Playwright**.

---

## 1) Backend (Go) — `backend/`

### 1.1 Sem banco
- **Unitários e integrações sem DB** (default):
  ```bash
  cd backend
  go test ./... -cover
  ```

### 1.2 Com banco
- Alguns testes usam conexão real e **podem ser ignorados** quando `SKIP_DB_TEST` está setado.
- Para rodar com banco, **não** defina `SKIP_DB_TEST` e configure `DATABASE_URL`:
  ```bash
  cd backend
  export DATABASE_URL=postgres://postgres:postgres@localhost:5432/saveinmed?sslmode=disable
  go test ./... -cover
  ```

### 1.3 Observações
- Testes com banco estão em:
  - `backend/internal/server/server_test.go`
  - `backend/internal/repository/postgres/postgres_test.go`

---

## 2) Marketplace (React/Vite) — `marketplace/`

### 2.1 Unitários (Vitest)
```bash
cd marketplace
npm test
```

### 2.2 Coverage
```bash
cd marketplace
npm run test:coverage
```

### 2.3 Observações
- Configuração do Vitest: `marketplace/vitest.config.ts`
- Pastas de testes: `marketplace/src/**/*.test.{ts,tsx}`

---

## 3) Backoffice (NestJS) — `backoffice/`

### 3.1 Unitários
```bash
cd backoffice
pnpm test
```

### 3.2 E2E
```bash
cd backoffice
pnpm test:e2e
```

### 3.3 Coverage
```bash
cd backoffice
pnpm test:cov
```

---

## 4) SaveInMed Frontend (Next.js) — `saveinmed-frontend/`

### 4.1 Unitários (quando configurados)
```bash
cd saveinmed-frontend
npm test
```

### 4.2 E2E (quando configurados)
```bash
cd saveinmed-frontend
npm run test:e2e
```

### 4.3 Playwright (dependência presente)
- Existe dependência de `@playwright/test` no `package-lock.json`, mas não há documentação/roteiro de testes.
- **Recomendação**: criar `playwright.config.ts` e uma pasta `tests/e2e`.
- Exemplo de comando esperado após configuração:
  ```bash
  cd saveinmed-frontend
  npx playwright test
  ```

---

## 5) Website (Fresh/Deno) — `website/`

### 5.1 Testes
```bash
cd website
deno test
```

### 5.2 Coverage
```bash
cd website
deno test --coverage=coverage
```

---

## 6) Runner unificado (script raiz)

O script `start.sh` possui função para executar testes do backend e marketplace:

```bash
./start.sh --test
```

---

## 7) Matriz resumida

| Componente | Sem DB | Com DB | Unitário | E2E | Playwright |
|-----------|--------|--------|----------|-----|------------|
| Backend (Go) | ✅ | ✅ | ✅ | ❌ | ❌ |
| Marketplace (React) | ✅ | N/A | ✅ | ❌ | ❌ |
| Backoffice (NestJS) | ✅ | ✅* | ✅ | ✅ | ❌ |
| SaveInMed Frontend | ✅ | N/A | ✅* | ✅* | ✅* |
| Website (Fresh/Deno) | ✅ | N/A | ✅ | ❌ | ❌ |

\* dependendo da configuração local e do banco necessário pelos testes.
