Fernanda KipperAutor
Você já passou pela experiência de configurar testes unitários em um projeto simples que usa TypeScript e, quando viu, estava abrindo 5 arquivos de configuração e instalando 12 pacotes diferentes?
Se a resposta for sim, bem-vindo ao clube.
Hoje eu quero te apresentar uma alternativa que mudou completamente minha relação com testes automatizados: o Poku — um framework de testes minimalista, eficiente e, olha só, brasileiro.
Neste post, vou te mostrar por que ele pode ser a solução perfeita para seus projetos pequenos, suas bibliotecas, seus scripts e até para aquela funçãozinha que você só queria validar sem abrir um buraco negro de configurações.
Vamos começar com a verdade nua e crua: configurar ferramentas como Jest ou Vitest, especialmente em ambientes ESM + TypeScript, pode ficar muito chato muito rápido.
Você começa com boas intenções:
npm install --save-dev jest ts-jest @types/jest
E aí vem a cascata:
Quer usar ESM? Prepare-se pra lidar com experimental-vm-modules, resolver problemas de mock, e configurar o Jest para um monte de exceções.
Mesmo o Vitest, que é bem mais moderno e tem integração com Vite, exige configuração específica se você estiver usando ESM puro com Node.
No fim das contas, tudo o que você queria era testar isso aqui:
function sum(a: number, b: number): number {
return a + b;
}
E ter um resultado simples como: ✅ sum(2, 3) retorna 5.
Mas parece que você precisa invocar um ritual pra isso.
Foi aí que descobri o Poku.
Criado pelo Wesley, o Poku é um test runner ultra minimalista, feito com foco em simplicidade e produtividade.
Você instala com um único comando:
npm install -D poku
E pronto. Não precisa de configuração, babel, ts-jest, plugins ou qualquer outro peso extra.
Aqui vai um exemplo real de como usei o Poku para testar uma função de validação de senha.
export function isStrongPassword(password: string): boolean {
return (
password.length >= 8 &&
/[A-Z]/.test(password) &&
/[a-z]/.test(password) &&
/[0-9]/.test(password)
);
}
import { assert, test } from 'poku';
import { isStrongPassword } from './validador.js';
test('Senha válida: Abc12345', () => {
assert.ok(isStrongPassword('Abc12345'));
});
test('Falta número', () => {
assert.ok(!isStrongPassword('Abcdefgh'));
});
test('Falta maiúscula', () => {
assert.ok(!isStrongPassword('abc12345'));
});
test('Muito curta', () => {
assert.ok(!isStrongPassword('Ab1'));
});
Executar? Só rodar:
npx poku
O resultado é direto no terminal, rápido e sem overhead.
Um dos diferenciais do Poku é que ele lida muito bem com testes assíncronos — sem precisar de done(), async setup, ou nenhuma sintaxe especial.
Veja este exemplo simples com setTimeout:
import { test } from 'poku';
import assert from 'node:assert/promises'; // O Poku permite importar tanto o 'assert' direto do node quanto a função wrapper da própria lib
async function fetchData() {
return new Promise((resolve) => setTimeout(() => resolve(42), 100));
}
test('fetchData retorna 42', async () => {
const result = await fetchData();
assert.strictEqual(result, 42);
});
Você pode usar assert/promises do próprio Node. Sem gambiarras.
Imagine que você está testando uma lista de tarefas. Você pode usar o beforeEach do Poku para inicializar o estado a cada teste:
import { test, beforeEach } from 'poku';
import assert from 'node:assert';
let tasks: string[] = [];
beforeEach(() => {
tasks = ['Lavar louça'];
});
test('adiciona uma nova tarefa', () => {
tasks.push('Estudar Poku');
assert.deepStrictEqual(tasks, ['Lavar louça', 'Estudar Poku']);
});
test('inicializa com 1 tarefa', () => {
assert.strictEqual(tasks.length, 1);
});
Funciona exatamente como você espera, e mantém cada teste isolado.
Se você está construindo:
… o Poku é uma escolha incrível.
Agora, se o seu projeto é um app React, Vue ou uma aplicação grande com testes complexos de UI, mocks profundos, e integrações, talvez seja melhor usar Jest ou Vitest.
Testar pode (e deve) ser leve. O que falta muitas vezes não é uma nova feature, mas sim menos fricção, mais foco no essencial e ferramentas que respeitem nosso tempo.
E é por isso que esse post é também um agradecimento à comunidade open-source brasileira.
Gente como o Wesley Imon, criador do Poku, que dedica tempo e talento para tornar o dia a dia de outros devs mais simples.
Se você ainda não conhece o Poku, recomendo fortemente experimentar. Aqui tem o Github dele: https://github.com/wellwelwel/poku
Ele pode não ser o test runner definitivo para todos os projetos…
Mas pode ser exatamente o que você precisava para voltar a escrever testes com prazer.