Skip to main content
Glama
jonathan-ponciano

tuxedo-qa

README.md
# tuxedo-qa

Servidor MCP que permite ao [Claude](https://claude.com), [Gemini](https://gemini.google.com) e
outros assistentes de IA compatíveis com MCP criar, rodar, autocorrigir e monitorar testes
[Playwright](https://playwright.dev) do seu app — com dashboard local, cofre de credenciais
e página pública de status.

**[Landing page e documentação →](https://jonathan-ponciano.github.io/sts-tools-mcp-tuxedo-qa/)**

## O que é

O tuxedo-qa expõe 16 ferramentas MCP que cobrem todo o ciclo de vida de uma suíte de testes
sintéticos: escrever specs em linguagem natural, rodar sob demanda ou por agendamento,
autocorrigir falhas, acessar ambientes de staging protegidos por headers, e expor os
resultados numa página pública de status — tudo conduzido por uma conversa com seu
assistente de IA, sem precisar de pipeline de CI.

Veja a [referência completa das ferramentas e casos de uso](https://jonathan-ponciano.github.io/sts-tools-mcp-tuxedo-qa/#tools)
na landing page.

### Subagent do Claude Code

O instalador também registra o subagent **`tuxedo-qa-tester`** (globalmente, em
`~/.claude/agents/`) — ele já sabe as 16 ferramentas, as convenções de teste do projeto
(usar o helper de credenciais em vez de senha fixa, `brasil.ts` pra CPF/CNPJ, `human-loop.ts`
pra 2FA) e quando usar `run_until_pass` vs. corrigir manualmente. O Claude Code aciona ele
sozinho quando a tarefa é sobre testes/QA; não precisa chamar por nome. (Só Claude Code por
enquanto — o Gemini CLI não tem esse mecanismo de subagents ainda.)

## Como começar

Instalador de um comando só — clona/atualiza, builda, e registra automaticamente
no Claude Code e/ou Gemini CLI (o que você tiver instalado):

```bash
curl -fsSL https://raw.githubusercontent.com/jonathan-ponciano/sts-tools-mcp-tuxedo-qa/main/install.sh | bash
```

Instala em `~/tuxedo-qa` por padrão (mude com `TUXEDO_QA_DIR=/outro/caminho`). Rodar de
novo atualiza a instalação existente — seguro de repetir.

<details>
<summary>Instalação manual</summary>

```bash
git clone https://github.com/jonathan-ponciano/sts-tools-mcp-tuxedo-qa.git
cd sts-tools-mcp-tuxedo-qa
npm install
npm run build
```

Registre como servidor MCP. No Claude Code (escopo `user` = disponível em todos os projetos):

```bash
claude mcp add tuxedoqa --scope user -- node "$(pwd)/dist/index.js"
```

No Gemini CLI (sem `--` antes do comando — sintaxe diferente do Claude Code):

```bash
gemini mcp add tuxedoqa node "$(pwd)/dist/index.js" --scope user
```

</details>

Opcionalmente, inicie o dashboard local:

```bash
npm run dashboard
# → http://localhost:3131
```

## Monitorando mais de um app/cliente

Uma instalação só do tuxedo-qa serve quantos projetos você quiser, cada um **completamente
isolado** (testes, credenciais, schedule, histórico próprios), com **um dashboard só** pra
ver e gerenciar todos eles juntos. A ideia:

- Cada projeto tem sua própria conexão MCP (o Claude/Gemini "conectado" naquele projeto
  específico só enxerga e mexe nos testes daquele projeto).
- O dashboard (`npm run dashboard`) não pertence a nenhum projeto — ele enxerga todos ao
  mesmo tempo, com um seletor pra trocar de contexto.
- O scheduler (monitoramento automático) roda dentro do dashboard e cuida de **todos os
  projetos ao mesmo tempo**, cada um no seu próprio horário.

### 1. Registrar um novo projeto

Rode o instalador de novo, passando um slug em `TUXEDO_QA_PROJECT` (letras, números, `-`/`_`).
Ele reaproveita a mesma instalação (mesmo clone, mesmo `node_modules`) e só registra uma nova
conexão MCP:

```bash
TUXEDO_QA_PROJECT=fretebras bash install.sh
# → registra o servidor MCP "tuxedoqa-fretebras"

TUXEDO_QA_PROJECT=xtagger bash install.sh
# → registra o servidor MCP "tuxedoqa-xtagger"
```

Repita pra cada projeto/cliente novo. Os dados de cada um ficam isolados em
`projects/<slug>/` dentro da instalação (`~/tuxedo-qa/projects/fretebras/`,
`~/tuxedo-qa/projects/xtagger/`, etc.) — testes, credenciais, schedule e histórico
nunca se misturam entre projetos.

### 2. Usar cada projeto pelo Claude/Gemini

Depois de registrado, abra uma conversa e escolha a conexão MCP certa pra cada projeto
(`tuxedoqa-fretebras` quando estiver falando sobre o Fretebras, `tuxedoqa-xtagger` pro
xtagger). Cada uma só cria/roda/lê testes do seu próprio projeto — não tem como um
misturar com o outro por acidente.

### 3. Ver tudo junto no dashboard

Suba o dashboard uma vez só (ele não precisa de `TUXEDO_QA_PROJECT` nenhum — enxerga todos
sozinho):

```bash
npm run dashboard
# → http://localhost:3131
```

Na aba **Monitor** tem uma visão geral com todos os projetos (quantos testes, uptime,
o que tá rodando agora). Clicar num projeto ali — ou usar o seletor no topo da página —
troca o contexto do resto do dashboard (abas Testes, Credenciais, Proteção, Status Page)
pra aquele projeto específico. É o mesmo dashboard, só muda o que ele mostra.

### 4. Monitoramento automático

O scheduler roda dentro do processo do dashboard e verifica **todos os projetos a cada
minuto** — não importa qual está selecionado na tela no momento. Se `fretebras` tem um
teste agendado a cada 1h e `xtagger` tem um a cada 6h, os dois rodam nos seus próprios
horários, de forma independente, enquanto o dashboard estiver de pé.

### Sem `TUXEDO_QA_PROJECT`

Se você só tem um projeto, não precisa mexer em nada disso — sem essa variável, tudo
funciona no modo padrão (um projeto só, sem namespace), exatamente como antes.

## Desenvolvimento

```bash
npm run dev         # roda o servidor MCP com tsx (sem build)
npm run dashboard    # dashboard em modo dev
npm test             # roda a suíte Playwright diretamente
```

## Navegador headless vs. visível

Por padrão, todo teste roda **headless** — o Chromium abre em background, sem janela
nenhuma na tela. Pra acompanhar visualmente o que o teste está fazendo (útil pra debugar
um fluxo novo), basta passar a flag `PWHEADED=1` antes do comando:

```bash
npx playwright test                # headless (padrão)
PWHEADED=1 npx playwright test     # abre o navegador visível
PWHEADED=1 npm run dev             # mesma flag funciona rodando via o servidor MCP
```

Isso vale pra qualquer execução — manual, via dashboard, ou disparada pelo Claude/Gemini
com `run_tests`/`run_until_pass`/`create_test` — porque todas passam pelo mesmo runner
(`src/lib/playwright-runner.ts`), que lê `playwright.config.ts`.

## Licença

MIT

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource or action: credentials, tests (CRUD except create), debugging sessions, status, and pausing. No overlapping purposes.

Naming Consistency4/5

Most tools follow verb_noun pattern (e.g., delete_test, get_status). 'run_until_pass' deviates slightly as a verb phrase, but overall convention is consistent and clear.

Tool Count5/5

9 tools is well-scoped for a test management server, covering operations like test editing, debugging, status checks, and credential management without excess.

Completeness3/5

Missing a create_test tool, which is a notable gap for full lifecycle management. Also lacks a simple 'run test' command independent of the auto-fix loop. However, debugging features are well-covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing