ByClinic — Roteiro de Testes QA¶
Ambiente: https://byclinic.digitalface.dev.br API: https://api.byclinic.digitalface.dev.br Data: 2026-04-16 Versao: MVP
Credenciais de teste¶
| Perfil | Senha | |
|---|---|---|
| Admin | admin@byclinic.com.br | admin123 |
| Medico | camila@byclinic.com.br | doctor123 |
1. Autenticacao¶
1.1 Login — caminho feliz¶
- Acessar https://byclinic.digitalface.dev.br
- Verificar redirect para /login
- Tela de login: fundo cinza claro, card branco, logo ByClinic cyan
- Preencher email:
admin@byclinic.com.br - Preencher senha:
admin123 - Clicar "Entrar"
- Esperado: redirect para /dashboard
1.2 Login — credenciais invalidas¶
- Preencher email incorreto ou senha errada
- Clicar "Entrar"
- Esperado: mensagem "Email ou senha incorretos"
1.3 Login — validacao de campos¶
- Tentar submeter formulario vazio
- Esperado: mensagens "Informe seu email" e "Informe sua senha"
- Digitar email invalido (ex: "abc")
- Esperado: mensagem "Email invalido"
1.4 Sessao¶
- Apos login, fechar aba e reabrir /dashboard
- Esperado: continua logado (token no localStorage)
- Limpar localStorage e recarregar
- Esperado: redirect para /login
2. Layout Geral¶
2.1 Sidebar¶
- Sidebar branca a esquerda (~220px)
- Logo ByClinic com icone cyan no topo
- Nome da clinica abaixo do logo
- Menu items: Visao Geral, Agenda, Pacientes, Financeiro, Minha Clinica, WhatsApp (badge "Beta")
- Item ativo com fundo cyan claro e texto cyan
- Botao collapse (
</>) funciona - Sidebar colapsada mostra so icones
- Links "Configuracoes" e "Sair" no rodape
2.2 Header¶
- Nome da clinica a esquerda
- Badge do perfil (Administrador/Medico)
- Badge do plano (Plano Starter)
- Icone ajuda (?)
- Icone notificacoes (sino)
- Avatar com iniciais do usuario
- Clicar avatar: dropdown com "Meu Perfil", "Configuracoes", "Sair"
2.3 Mobile (< 768px)¶
- Sidebar some, bottom nav aparece
- Bottom nav: Geral, Agenda, Pacientes, Financeiro, WhatsApp
- Item ativo em cyan
- Conteudo ocupa tela cheia
3. Dashboard (Visao Geral)¶
3.1 Cabecalho¶
- Titulo "Visao Geral"
- Data atual formatada (ex: "quarta-feira, 16 de abril de 2026")
3.2 Cards de estatistica¶
- 4 cards no topo: Consultas Hoje, Consultas na Semana, Receita do Mes, Despesas do Mes
- Cards brancos com bordas coloridas (cyan para positivos, vermelho para despesas)
- Valores numericos em destaque
3.3 Heatmap de Atividade¶
- Grid estilo GitHub contributions
- Labels dias (Seg, Qua, Sex)
- Legenda "Menos → Mais" com 5 niveis de azul
- Tooltip ao passar mouse: "YYYY-MM-DD: X atendimentos"
3.4 Grafico de Receita¶
- Area chart com fill gradient cyan
- Eixo X: meses (Jan, Fev, Mar...)
- Eixo Y: valores em "Xk"
- Tooltip com valor em R$ formatado
3.5 Taxa de Ocupacao¶
- Progress circular com porcentagem
- Cores cyan no stroke
- Taxa de no-show em vermelho
3.6 Consultas por Status¶
- Barras horizontais por status
- Labels: Agendadas, Confirmadas, Em andamento, Concluidas, Canceladas, Nao compareceram
- Cores distintas por status
3.7 Top Medicos¶
- Lista rankada com avatar, nome, qtd consultas
- Medalhas ouro/prata/bronze nos 3 primeiros
3.8 Ultimas Consultas¶
- Tabela com colunas: Paciente, Medico, Horario, Status
- Avatar com iniciais do paciente
- Tags coloridas de status
4. Agenda¶
- Acessar /agenda
- Pagina carrega sem erros
- Titulo "Agenda" visivel
- Nota: funcionalidade completa depende de dados. Verificar que nao ha erros JS no console.
5. Pacientes¶
- Acessar /pacientes
- Pagina carrega sem erros
- Titulo visivel
- Tabela/lista de pacientes (pode estar vazia)
- Se houver dados: busca por nome funciona
6. Financeiro¶
- Acessar /financeiro
- Pagina carrega sem erros
- Titulo visivel
7. Minha Clinica (Equipe)¶
- Acessar /equipe
- Pagina carrega sem erros
- Lista de membros da equipe
8. WhatsApp (CRM)¶
- Acessar /crm
- Pagina carrega sem erros
- Badge "Beta" no menu sidebar
9. Configuracoes¶
9.1 Pagina principal¶
- Acessar /configuracoes
- Card "Integracoes" com icone e descricao
- Clicar navega para /configuracoes/integracoes
9.2 Integracoes¶
- Acessar /configuracoes/integracoes
- Titulo "Integracoes" + subtitulo
- Botao "Gerar API Key"
- Botao "Conectar Produto"
- Estado vazio: "Nenhuma integracao conectada"
9.3 Gerar API Key¶
- Clicar "Gerar API Key"
- Esperado: card cyan aparece com key
bc_live_xxxxx... - Botao "Copiar" copia para clipboard
- Verificar API:
POST /api/v1/integrations/api-keysretorna 200 com key
9.4 Conectar Produto (modal)¶
- Clicar "Conectar Produto"
- Modal abre com formulario
- Select: ChatDigi ou Agenda
- Campos: API Key, URL da API
- Validacao de campos obrigatorios
- Nota: conexao real requer produto remoto rodando. Verificar que modal funciona e valida.
10. API Backend — Testes via curl¶
10.1 Health check¶
Esperado:{"status":"ok","service":"ByClinic"}
10.2 Login¶
curl -X POST https://api.byclinic.digitalface.dev.br/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@byclinic.com.br","password":"admin123"}'
access_token e refresh_token
10.3 Dashboard¶
TOKEN="<access_token do passo anterior>"
curl https://api.byclinic.digitalface.dev.br/clinic/dashboard \
-H "Authorization: Bearer $TOKEN"
10.4 Gerar API Key (admin)¶
curl -X POST https://api.byclinic.digitalface.dev.br/api/v1/integrations/api-keys \
-H "Authorization: Bearer $TOKEN"
api_key e created_at
10.5 Integration Status (API key auth)¶
API_KEY="<key gerada no passo anterior>"
curl https://api.byclinic.digitalface.dev.br/api/v1/integrations/status \
-H "X-Integration-Key: $API_KEY"
product, version, features
10.6 Buscar paciente por telefone¶
curl "https://api.byclinic.digitalface.dev.br/api/v1/integrations/search/patients?phone=+5582999999999" \
-H "X-Integration-Key: $API_KEY"
found: true/false
11. Cross-browser / Responsivo¶
- Chrome desktop — todas paginas carregam
- Safari desktop — todas paginas carregam
- Chrome mobile (DevTools responsive) — bottom nav funciona
- Sem erros JS criticos no console (ignorar warnings de React dev)
12. Seguranca basica¶
- Acessar /dashboard sem token → redirect pra /login
- API sem Bearer token → 401/403
- API com token expirado → 401
- Integration endpoints sem X-Integration-Key → 401
- Integration endpoints com key invalida → 401
Legenda¶
- Blocker: impede uso da funcionalidade
- Major: funcionalidade prejudicada mas contornavel
- Minor: cosmetico ou UX nao-ideal