Skip to main content
O SDK fornece APIs programáticas que permitem compilar, implantar, instalar e desinstalar seu aplicativo a partir de código de teste. Em conjunto com Vitest e os clientes de API tipados, você pode escrever testes de integração que verificam que seu aplicativo funciona de ponta a ponta em um servidor Twenty real.

Usando pacotes npm

Você pode instalar e usar qualquer pacote npm no seu app. Tanto funções lógicas quanto componentes de front-end são empacotados com esbuild, que incorpora suas dependências na saída — nenhum node_modules é necessário em tempo de execução.

Instalando um pacote

Em seguida, importe-o no seu código:
src/logic-functions/fetch-data.ts
O mesmo vale para componentes de front-end:
src/front-components/chart.tsx

Como o empacotamento funciona

A etapa de build usa o esbuild para produzir um único arquivo independente por função lógica e por componente de front-end. Pacotes importados são incorporados ao bundle, exceto aqueles listados abaixo. Funções lógicas são executadas em um ambiente Node.js. Módulos nativos do Node (fs, path, crypto, http, etc.) estão disponíveis e não precisam ser instalados. Componentes de front-end são executados em um Web Worker. Módulos internos do nó não estão disponíveis — apenas pacotes npm que funcionam em um ambiente de navegador. Note que a sandbox implementa um parcial DOM, para que um pacote possa ser construído de forma limpa e ainda falhar no tempo de execução; veja Limitação atual. Ambos os ambientes têm twenty-client-sdk/core e twenty-client-sdk/metadata disponíveis como módulos pré-fornecidos — eles não são empacotados, mas resolvidos em tempo de execução pelo servidor. Componentes de front-end também podem compartilhar dependências por meio de um bundle de dependências compartilhadas. Os pacotes listados no campo frontComponentSharedDependencies do package.json do app são compilados uma vez em um arquivo separado e carregados a partir dele em tempo de execução, em vez de serem incorporados em cada componente. Assim, um componente que importa apenas pacotes compartilhados praticamente não carrega código de dependência próprio.

Configuração

O aplicativo gerado pelo scaffolder já inclui o Vitest. Se você configurá-lo manualmente, instale as dependências:
Crie um vitest.config.ts na raiz do seu aplicativo:
vitest.config.ts
Crie um arquivo de configuração global que verifique se o servidor está acessível, escreva uma configuração de teste para o SDK (~/.twenty/config.test.json) e sincronize o app antes da execução dos testes:
src/__tests__/global-setup.ts

APIs programáticas do SDK

O subcaminho twenty-sdk/cli exporta funções que você pode chamar diretamente a partir do código de teste: Cada função retorna um objeto de resultado com success: boolean e data ou error.

Escrevendo um teste de integração

Aqui está um exemplo completo que compila, implanta e instala o aplicativo e, em seguida, verifica se ele aparece no espaço de trabalho:
src/__tests__/app-install.integration-test.ts

Executando testes

Certifique-se de que seu servidor Twenty local esteja em execução e, em seguida:
Ou no modo watch durante o desenvolvimento:

Verificação de tipos

Você também pode executar a verificação de tipos no seu aplicativo sem executar os testes:
Isso executa tsc --noEmit no tsconfig.json do seu app e informa quaisquer erros de tipo. Os apps criados pelo scaffold também incluem um script yarn typecheck que também cobre arquivos de teste (tsconfig.spec.json).

CI com GitHub Actions

O gerador de scaffold cria um workflow pronto para uso em .github/workflows/ci.yml. A cada push para main e a cada pull request, ele inicia um servidor Twenty efêmero no runner (por meio da action twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test) e então executa yarn lint, yarn typecheck, yarn test:unit e yarn test com TWENTY_API_URL / TWENTY_API_KEY apontando para esse servidor. Nenhum secret é necessário e você pode fixar a versão do servidor por meio da variável de ambiente TWENTY_VERSION no topo do workflow. Consulte Publicação → CI/CD automatizado para um passo a passo completo dos três workflows criados pelo scaffold (ci.yml, o pipeline de deploy cd.yml e publish.yml para publicação no npm).