# 🧑‍💻 Guía de Revisión Completa de Rama (QA + CI)

Este documento resume cómo realizar una revisión exhaustiva de una rama antes de mergear a `main`, ejecutando todos los tests y validaciones automáticas disponibles en el proyecto.

---

## 1️⃣ Requisitos previos

- Tener la rama actualizada (`git pull`)
- Dependencias instaladas:
  - Composer (`composer install`)
  - Node.js y npm (`npm install`)
  - Playwright (`npx playwright install`)
- Variables de entorno configuradas (DB, credenciales, etc.)

---

## 2️⃣ Validaciones de Código Estático

### PHPStan (análisis estático PHP)

```bash
# Ejecución recomendada (instalación aislada, no toca vendor principal)
php tools/phpstan/vendor/bin/phpstan analyse --memory-limit=1G

# O para analizar una carpeta específica:
php tools/phpstan/vendor/bin/phpstan analyse src/MB/ProductoBundle/Clases/Reportes --memory-limit=1G
```

- Si prefieres, puedes crear un alias en tu terminal:
  ```bash
  alias phpstan-mbinv="php $(pwd)/tools/phpstan/vendor/bin/phpstan"
  ```
  Y luego usar:
  ```bash
  phpstan-mbinv analyse src --memory-limit=1G
  ```

- No instales PHPStan en el vendor principal para evitar conflictos de dependencias.
### Intelephense (VS Code)
- Verifica que no haya errores marcados en el editor


---

## 🛠️ Instalación de PHPStan (si no está)

Si al ejecutar los comandos de PHPStan recibes un error de "no encontrado", instala PHPStan localmente con:

```bash
composer require --dev phpstan/phpstan
```

Si prefieres instalarlo globalmente:

```bash
composer global require phpstan/phpstan
```

Luego puedes ejecutar:
```bash
vendor/bin/phpstan analyse --memory-limit=1G
# o si es global
phpstan analyse --memory-limit=1G
```


### PHPUnit (Symfony)

```bash
# Ejecuta todos los tests
php bin/phpunit --testdox
```
- Esperado: Todos los tests pasan, sin fallos ni skips

---

## 4️⃣ Pruebas End-to-End (E2E)

### Playwright

```bash
# Instala dependencias si es necesario
npm install
# Ejecuta todos los tests E2E
npm test
```
- Esperado: Todos los tests E2E pasan

---

## 5️⃣ Validaciones Manuales (QA)

- Revisar rutas críticas en la app (ver QA_TESTING_INSTRUCTIONS.md)
- Validar que no haya errores 500 ni regresiones
- Probar flujos de usuario principales

---

## 6️⃣ Checklist Final

- [ ] PHPStan sin errores críticos
- [ ] PHPUnit: 100% tests pasan
- [ ] Playwright: 100% tests pasan
- [ ] Sin errores en logs
- [ ] QA manual completado

---

## 7️⃣ Comandos útiles

```bash
# Limpiar caché Symfony
php bin/console cache:clear

# Revisar logs
less app/logs/dev.log
less app/logs/prod.log
```

---

## 8️⃣ Notas
- Si algún test falla, corrige antes de mergear.
- Documenta cualquier excepción o test ignorado.
- Adjunta resultados de los comandos en el PR si es posible.

---

**Referencia rápida:**
- PHPStan: análisis estático PHP
- PHPUnit: tests unitarios y funcionales
- Playwright: tests E2E (frontend)
- QA manual: validación de flujos críticos

---

**Última actualización:** 18/04/2026
