npm package: @joaoseixas/adtest
Description: CLI to discover and run Adonis test files and cases
Latest version: 0.1.6

# adtest

CLI em TypeScript para localizar testes Japa em projetos Adonis, selecionar testes e montar/executar comandos `node ace test`.

## Requisitos

- Bun para desenvolvimento
- Node.js para executar a saída compilada

## Scripts

- `bun run test` — executa a suíte Jest
- `bun run build` — gera `dist/` compatível com Node
- `bun run dev` — executa a CLI com Bun
- `node dist/cli.js` — executa a CLI compilada

## Como usar

Instalação global via npm:

```bash
npm install -g @joaoseixas/adtest
```

Execução com `npx`:

```bash
npx @joaoseixas/adtest
```

Execute a CLI na raiz do projeto Adonis:

```bash
adtest
```

O seletor padrão é o `fzf`:

```bash
adtest
```

Usando o seletor interno:

```bash
adtest -e enquirer
```

Imprimindo apenas os comandos gerados no terminal:

```bash
adtest -t
```

Copiando os comandos formatados para o clipboard:

```bash
adtest -c
```

Com seletor externo e saída em texto:

```bash
adtest -e fzf -t
adtest -e fzf -c
```

Executando diretamente o último comando salvo para o projeto atual:

```bash
adtest -l
adtest --load
adtest -l last
adtest last
```

Buscando apenas entre os testes dos últimos comandos salvos:

```bash
adtest -h
adtest -h -t
adtest -h -c
```

ou:

```bash
bun run build
adtest
```

Fluxo atual:

1. encontra arquivos `tests/**/*.spec.ts` e `tests/**/*.test.ts`
2. extrai grupos `test.group('...')` e testes `test('...')`
3. por padrão, envia os testes para o `fzf`
4. permite filtrar e selecionar os testes diretamente nessa lista
5. gera e executa um comando `node ace test ...` com os testes selecionados
6. continua executando as demais suítes mesmo se alguma falhar

## Saída em texto

- `-t` ou `--text-output`
- imprime apenas os comandos finais
- não executa os testes
- útil para copiar, reutilizar ou colar o último comando manualmente

Exemplo de saída:

```bash
node ace test \
  --tests="applyFixedCost multiplies quantity by unit cost" \
  --tests="it should create an User"
```

## Clipboard

- `-c` ou `--copy`
- copia os comandos formatados para o clipboard
- não executa os testes
- se usado junto com `-t`, também imprime o texto no terminal

O clipboard tenta, nesta ordem:

- `wl-copy`
- `xclip`
- `xsel`
- `pbcopy`

## Histórico

- o histórico fica em `~/.config/adtest/history.json`
- o arquivo é global do usuário
- as entradas são separadas por projeto usando o caminho absoluto como chave
- cada projeto mantém os últimos `50` comandos executados

### `-l last`

- carrega o último comando salvo para o projeto atual
- pula a seleção de testes
- executa diretamente esse comando

### `-h`

- carrega apenas os testes presentes no histórico recente do projeto atual
- usa esse conjunto menor como fonte da seleção
- útil para repetir rapidamente testes recentes sem varrer o projeto inteiro

## Navegação no prompt

- no `fzf` padrão: `Ctrl+J` e `Ctrl+K` navegam, `Tab` marca e `Enter` confirma
- no seletor interno (`-e enquirer`): digite para filtrar, `Alt+J` e `Alt+K` navegam, `Tab` ou `Espaço` marcam e `Enter` confirma

## Seletores externos

### `-e fzf`

- envia todos os testes para o `fzf`
- não mostra caminhos de arquivo na lista
- mostra grupo com uma indentação e teste com indentação maior
- usa `Tab` para marcar múltiplos itens
- usa `Ctrl+J` e `Ctrl+K` para navegar
- ao confirmar, a CLI monta os comandos `node ace test ...`

## Escopo do MVP

Suportado:

- `test.group('...')`
- `test('...')`
- testes fora de grupo
- múltiplos grupos no mesmo arquivo

Fora do escopo neste momento:

- `test.only(...)`
- `test.skip(...)`
- `test.group(...).tap(...)`
- nomes dinâmicos de grupos e testes
- wrappers customizados de teste

Quando uma dessas variantes fora do escopo aparecer, a CLI as ignora e continua processando os casos suportados.