# 🧪 Guia de Teste - Push Notifications e Melhorias do Chat

## Pré-requisitos

1. ✅ Convex rodando (`cd packages/backend && bun run dev`)
2. ✅ Frontend rodando (`cd apps/web && bun run dev`)
3. ✅ Variáveis de ambiente configuradas (ver `configurar-variaveis-ambiente.md`)
4. ✅ Usuários criados no sistema

## Teste 1: Configuração de Push Notifications

### 1.1 Verificar Service Worker

1. Abra o navegador em `http://localhost:5173`
2. Faça login no sistema
3. Abra DevTools (F12)
4. Vá em **Application** > **Service Workers**
5. ✅ Verifique se `sw.js` está registrado e ativo

### 1.2 Solicitar Permissão de Notificações

1. Abra o chat no sistema
2. O sistema deve solicitar permissão para notificações automaticamente
3. Clique em **Permitir**
4. ✅ Verifique em **Application** > **Notifications** que a permissão está concedida

### 1.3 Verificar Subscription

1. Abra o Console do DevTools
2. Execute:
```javascript
navigator.serviceWorker.ready.then(reg => {
  reg.pushManager.getSubscription().then(sub => {
    console.log('Subscription:', sub);
  });
});
```
3. ✅ Deve retornar um objeto Subscription com endpoint e keys

## Teste 2: Envio e Recebimento de Push Notifications

### 2.1 Teste Básico

1. Abra o sistema em **duas abas diferentes** (ou dois navegadores)
2. Faça login com usuários diferentes em cada aba
3. Na aba 1, abra uma conversa com o usuário da aba 2
4. Envie uma mensagem da aba 1
5. ✅ A aba 2 deve receber uma notificação push (mesmo se estiver em background)

### 2.2 Teste de Menção

1. Na aba 1, envie uma mensagem mencionando o usuário da aba 2 (use @)
2. ✅ A aba 2 deve receber uma notificação push destacada

### 2.3 Teste Offline

1. Feche a aba 2 (ou coloque o navegador em modo offline)
2. Envie uma mensagem da aba 1
3. ✅ O sistema deve enviar um email para o usuário da aba 2 (se estiver offline)

## Teste 3: Edição de Mensagens

### 3.1 Editar Mensagem Própria

1. Envie uma mensagem no chat
2. Clique no ícone ✏️ ao lado da mensagem
3. Edite o conteúdo
4. Pressione **Ctrl+Enter** ou clique em **Salvar**
5. ✅ A mensagem deve ser atualizada com indicador "(editado)"

### 3.2 Tentar Editar Mensagem de Outro Usuário

1. Tente editar uma mensagem de outro usuário
2. ✅ Não deve aparecer o botão de editar (ou deve retornar erro)

## Teste 4: Soft Delete de Mensagens

### 4.1 Deletar Mensagem Própria

1. Envie uma mensagem
2. Clique no ícone 🗑️ ao lado da mensagem
3. Confirme a exclusão
4. ✅ A mensagem deve ser marcada como "Mensagem deletada"

### 4.2 Tentar Deletar Mensagem de Outro Usuário

1. Tente deletar uma mensagem de outro usuário
2. ✅ Não deve aparecer o botão de deletar (ou deve retornar erro)

## Teste 5: Respostas Encadeadas

### 5.1 Responder Mensagem

1. Clique no botão **↪️ Responder** em uma mensagem
2. ✅ Deve aparecer um preview da mensagem original no campo de input
3. Digite sua resposta e envie
4. ✅ A mensagem enviada deve mostrar o preview da mensagem original acima

### 5.2 Visualizar Thread

1. Envie várias respostas para diferentes mensagens
2. ✅ Cada resposta deve mostrar claramente qual mensagem está respondendo

## Teste 6: Preview de Links

### 6.1 Enviar Mensagem com URL

1. Envie uma mensagem contendo uma URL (ex: `https://www.google.com`)
2. Aguarde alguns segundos
3. ✅ Deve aparecer um preview do link abaixo da mensagem com:
   - Imagem (se disponível)
   - Título
   - Descrição
   - Site/nome do domínio

### 6.2 Testar Diferentes URLs

Teste com diferentes tipos de URLs:
- ✅ Google: `https://www.google.com`
- ✅ YouTube: `https://www.youtube.com`
- ✅ Artigo de notícia
- ✅ Site sem Open Graph (deve funcionar mesmo assim)

## Teste 7: Busca Full-Text

### 7.1 Busca Básica

1. Envie algumas mensagens com palavras específicas
2. Use a busca no chat (se implementada) ou a query de busca
3. ✅ Deve encontrar mensagens mesmo com acentos diferentes

### 7.2 Busca com Filtros

1. Busque mensagens por:
   - ✅ Remetente específico
   - ✅ Tipo (texto, arquivo, imagem)
   - ✅ Período de data
2. ✅ Os filtros devem funcionar corretamente

## Teste 8: Rate Limiting de Emails

### 8.1 Enviar Múltiplos Emails

1. Configure o sistema para enviar emails
2. Tente enviar mais de 10 emails em 1 minuto
3. ✅ Deve retornar erro de rate limit após o limite

### 8.2 Verificar Delay Exponencial

1. Aguarde o rate limit ser aplicado
2. Tente enviar novamente
3. ✅ Deve haver um delay antes de permitir novo envio

## Checklist de Validação

- [ ] Service Worker registrado e funcionando
- [ ] Permissão de notificações concedida
- [ ] Push notifications sendo recebidas
- [ ] Emails sendo enviados quando usuário offline
- [ ] Edição de mensagens funcionando
- [ ] Soft delete funcionando
- [ ] Respostas encadeadas funcionando
- [ ] Preview de links aparecendo
- [ ] Busca full-text funcionando
- [ ] Rate limiting de emails funcionando

## Problemas Comuns e Soluções

### Push notifications não funcionam

**Problema**: Notificações não aparecem

**Soluções**:
1. Verifique se as VAPID keys estão configuradas no Convex
2. Verifique se `VITE_VAPID_PUBLIC_KEY` está no `.env` do frontend
3. Reinicie o servidor Convex e frontend
4. Limpe o cache do navegador
5. Verifique o console para erros

### Preview de links não aparece

**Problema**: Links não geram preview

**Soluções**:
1. Verifique se a URL é válida (começa com http:// ou https://)
2. Aguarde alguns segundos (processamento é assíncrono)
3. Verifique o console do Convex para erros na extração
4. Alguns sites bloqueiam scrapers - isso é normal

### Edição não funciona

**Problema**: Botão de editar não aparece ou não funciona

**Soluções**:
1. Verifique se a mensagem é sua (só pode editar próprias mensagens)
2. Verifique se a mensagem não foi deletada
3. Verifique o console para erros
4. Certifique-se de que a mutation `editarMensagem` está funcionando

## Relatório de Testes

Após completar os testes, preencha:

- **Data**: ___________
- **Testador**: ___________
- **Ambiente**: [ ] Desenvolvimento [ ] Produção
- **Navegador**: ___________
- **Resultados**: ___________

**Observações**:
_______________________________________
_______________________________________
_______________________________________

