> For the complete documentation index, see [llms.txt](https://docs.tunnelhub.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tunnelhub.io/sdk/logging-and-testing.md).

# Build, deploy e testes

O SDK atual não cobre apenas runtime. Ele também participa do empacotamento do projeto, da estratégia de logging e dos testes locais.

## Build e empacotamento

O pacote público expõe tooling de build em `@tunnelhub/sdk/building` e o bin `tunnelhub-sdk-esbuild`.

Esse fluxo lê a configuração do projeto, usa `tunnelhub.yml` como referência e normalmente gera um artefato ZIP para deploy.

Na prática, isso ajuda a padronizar:

* entrypoint;
* runtime;
* memória e timeout;
* arquivos incluídos no bundle;
* artefato final esperado pela CLI.

## Estratégia de logging

O SDK escolhe entre logging em tempo real e logging em lote conforme o volume e o perfil da execução.

Em alto nível:

* cargas pequenas tendem a usar logging em tempo real;
* cargas muito grandes tendem a usar modo em lote;
* flows podem ajustar limiares protegidos para adaptar o comportamento.

Esse desenho melhora custo e performance sem exigir lógica manual em cada integração.

## Observabilidade

Os logs da automação alimentam as telas de monitoramento da plataforma. A qualidade dos metadados e das mensagens impacta diretamente a capacidade de suporte e investigação.

Boas práticas:

* incluir identificadores de negócio nos metadados;
* evitar mensagens genéricas demais;
* diferenciar erro técnico de erro funcional;
* usar `setupInterceptor()` apenas quando o ganho investigativo justificar.

## Testes locais

Para testes, o SDK expõe o flag:

```ts
SDK.testMode = true;
```

Esse modo é recomendado para suítes Jest e cenários de mock de serviços AWS ou chamadas externas.

Para `SqlTables`, o modo de teste apenas desativa a validação de runtime no construtor. Faça mock explícito dos métodos usados, como `queryRows` e `insertRow`; ele não cria SQLite local, EFS ou persistência. Consulte [Tabelas de Apoio](/produto/sql-tables.md#testes-locais) para um exemplo com fixtures JSON e armazenamento em memória.

## Modo verboso

Quando necessário, você pode habilitar:

```ts
SDK.verbose = true;
```

Isso ajuda durante desenvolvimento e depuração local.

## O que vale testar em uma automação

Checklist mínimo:

* handler chama `AutomationExecution.executeAutomation(...)` corretamente;
* flow instancia sem erro com payload mínimo;
* `defineMetadata()` está válida;
* principal caminho feliz da integração está coberto;
* erros relevantes retornam mensagens operacionais úteis.

## Troubleshooting comum

* **parâmetro obrigatório ausente**: valide o cadastro no produto e o helper usado no código;
* **Tabela De/Para ou Sequência não encontrada**: confirme código, ambiente e associação correta;
* **erro de metadata**: revise labels reservadas e tipos inválidos;
* **artefato inconsistente**: confira `tunnelhub.yml`, entrypoint e caminho do ZIP antes do deploy.
