# Testes de navegador e apps mock

Verifique lifecycle e CSP no navegador e gere provedores de teste a partir de contratos.

Requer WU CLI `1.2.0` e WU Framework `4.0.0` para as APIs das aplicações. Confira `wu --version` e as dependências do projeto.

<span id="pruebas-node-y-navegador"></span>

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

## Testes Node e 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
```

Sem `--browser`, `wu test` executa `node --test` e repassa argumentos restantes e saída. Com `--browser`, usa a verificação de lifecycle no Chromium: lê apps configuradas, inicia desenvolvimento quando necessário e verifica montagem, atualizações, ocultação, recuperação e limpeza. A saída é `0` para sucesso, `1` para falha de verificação e `2` para falha de preparação.

| Opção | Uso |
| --- | --- |
| `--url <origin>` | Usa um servidor existente. |
| `--port <port>` | Porta ao iniciar servidor; padrão `3999`. |
| `--only <app>` | Filtra apps pelo nome; pode repetir. |
| `--cycles <n>` | De `2` a `20`; padrão `2`. |
| `--timeout <ms>` | De `1000` a `120000`; padrão `30000`. |
| `--csp <mode>` | `scripts` por padrão, `strict` ou `off`. |
| `--trusted-types` | Adiciona diretivas de Trusted Types. |
| `--channel <name>` | Canal Chromium; também `WU_BROWSER_CHANNEL`. |
| `--headed`, `--verbose`, `--json` | Janela visível, detalhes ou relatório JSON. |

<span id="generar-un-proveedor-mock"></span>

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

## Gerar um provedor mock

Salve este descritor como `counter.json` no 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` gera uma microapp executável, respostas válidas pelos schemas e sua entrada em `wu.config.json`. Edite `src/samples.js` para mudar os dados; a app mostra métodos e chamadas. O nome padrão deriva do serviço com sufixo `-mock`; `--dir` escolhe o diretório. `--force` permite substituir o destino existente; revise seu conteúdo antes.

A geração termina com `0`; contrato, argumentos ou projeto inválidos produzem `2`. O mock permite desenvolver contra o contrato, sem implementar a lógica real do negócio. A suite de lifecycle também não substitui testes funcionais das telas. Verifique ambos antes de publicar.