# Pruebas de navegador y apps mock

Verifica lifecycle y CSP en un navegador y genera proveedores de prueba desde contratos.

Requiere WU CLI `1.2.0` y, para las APIs de las aplicaciones, WU Framework `4.0.0`. Comprueba `wu --version` y las dependencias del proyecto.

<span class="section-anchor" id="section-1"></span>

## Pruebas Node y navegador

```sh
wu test
wu test --watch
npm install --save-dev @playwright/test
npx playwright install chromium
wu test --browser --csp strict --trusted-types --json
```

Sin `--browser`, `wu test` ejecuta `node --test` y transmite los argumentos restantes y su salida. Con `--browser` cambia al verificador de lifecycle en Chromium: obtiene las apps de la configuración, inicia desarrollo si hace falta y prueba montaje, actualizaciones, ocultación, recuperación y limpieza. El código de salida es `0` si pasa, `1` si falla una comprobación y `2` si no puede preparar la prueba.

| Opción | Uso |
| --- | --- |
| `--url <origin>` | Usa un servidor existente. |
| `--port <port>` | Puerto al iniciar servidor; defecto `3999`. |
| `--only <app>` | Filtra apps por nombre; puede repetirse. |
| `--cycles <n>` | De `2` a `20`; defecto `2`. |
| `--timeout <ms>` | De `1000` a `120000`; defecto `30000`. |
| `--csp <mode>` | `scripts` por defecto, `strict` o `off`. |
| `--trusted-types` | Añade las directivas de Trusted Types. |
| `--channel <name>` | Canal de Chromium; también `WU_BROWSER_CHANNEL`. |
| `--headed`, `--verbose`, `--json` | Ventana visible, detalle o informe JSON. |

<span class="section-anchor" id="section-2"></span>

## Generar un proveedor mock

Guarda este descriptor como `counter.json` en el workspace:

```json
{ "name": "counter", "version": "1.1.0", "methods": {
  "double": { "input": { "type": "number" }, "output": { "type": "number" } }
} }
```

```sh
wu mock counter.json --name counter-mock --dir mf-counter-mock --json
wu install
wu dev
```

`wu mock` genera una microapp ejecutable, respuestas válidas para los esquemas y su entrada en `wu.config.json`. Edita `src/samples.js` para cambiar los datos; la app muestra métodos y llamadas. El nombre predeterminado deriva del servicio con sufijo `-mock`; `--dir` elige carpeta. `--force` permite reemplazar el destino existente, por lo que debes revisar sus cambios antes de usarlo.

La generación termina con `0`; contrato, argumentos o proyecto inválidos producen `2`. El mock sirve para desarrollar contra el contrato, no implementa la lógica de negocio real. Una suite de lifecycle tampoco sustituye las pruebas funcionales de tus pantallas. Comprueba ambas antes de publicar.