Pular para o conteúdo principal
Versão: v2.x.x

Executando testes em plataformas específicas

Primeiro, vamos entender o que cada definição faz:

npx poku
  • Tenta identificar a plataforma ou executá-la no Node.js por padrão.
npx poku --node
  • Chama o Poku através do Node.js e executa todos os testes usando o Node.js.
npx poku --bun
  • Chama o Poku através do Node.js, mas executa todos os testes usando o Bun.
npx poku --deno
  • Chama o Poku através do Node.js, mas executa todos os testes usando o Deno.
nota

É importante notar que o tempo de execução do Poku é diferente do tempo de execução dos testes (node, npx tsx, bun, ou deno).


  • Veja a seção platform aqui.
  • Veja todas as flags e opções disponíveis para o comando poku aqui.

Recomendações

Para evitar conflitos em ambientes com múltiplas plataformas instaladas (Node.js + Bun, Deno + Bun. etc.), veja os exemplos a seguir:

npx poku --node
  • Executa o Poku através do Node.js e garante que todos os testes sejam executados com Node.js (ou tsx para testes com TypeScript).
bunx poku --bun
  • Executa o Poku através do Bun e garante que todos os testes sejam executados com Bun.
deno run npm:poku --deno
  • Executa o Poku através do Deno e garante que todos os testes sejam executados com Deno.
dica

Para usuários de TypeScript, não é necessário instalar tsx para o Bun e o Deno, pois ambos executam TypeScript nativamente.


Executando CommonJS com Deno

Veja todas as opções para o Deno aqui.

Todos os arquivos como CommonJS

deno run npm:poku --deno --denoCjs

Uma extensão específica como CommonJS

deno run npm:poku --deno --denoCjs='.cjs'

Múltiplas extensões como CommonJS

deno run npm:poku --deno --denoCjs='.cjs,.js'

Usando a API do Poku (conceito avançado)

Na descrição do Poku, você pode ler "O Poku facilita os testes para Node.js, Bun, Deno, e você ao mesmo tempo.", e é verdade:

Isso é mais para demonstrar um ponto, não uma recomendação 🙋🏻‍♂️

./test/run.test.ts:

import { describe, it, poku, exit } from 'poku';

const parallel = true;
const noExit = true;

const codes: (0 | 1)[] = [];

await describe('Executando Testes em Diferentes Plataformas ao Mesmo Tempo', async () => {
await Promise.all([
it('Suíte de teste deve passar no Node.js', async () => {
const exitCode = await poku(['./test/unit'], {
platform: 'node',
parallel,
noExit,
});

codes.push(exitCode);
}),

it('Suíte de teste deve passar no Bun', async () => {
const exitCode = await poku(['./test/unit'], {
platform: 'bun',
parallel,
noExit,
});

codes.push(exitCode);
}),

it('Suíte de teste deve passar no Deno', async () => {
const exitCode = await poku(['./test/unit'], {
platform: 'deno',
parallel,
noExit,
deno: {
cjs: ['.cjs'],
},
});

codes.push(exitCode);
}),
]);
});

const code = codes.every((code) => code === 0) ? 0 : 1;

exit(code);

Então, escolha uma plataforma:

  • Node.js (usando TypeScript)
npx tsx test/run.test.ts
  • Bun
bun test/run.test.ts
  • Deno
deno run test/run.test.ts
dica

Geralmente é benéfico ter um CI exclusivo para cada plataforma, especialmente para garantir um melhor controle em casos de erro.


nota

Se você encontrar algum erro de digitação, sinta-se à vontade para abrir um Pull Request corrigindo-o.