Como desenvolvedores usam e-mail descartável para testes
Testar funcionalidade de e-mail é tedioso. Criar a conta Gmail #47, verificar, checar a caixa de entrada, capturar tela do e-mail, repetir para cada teste.
E-mail descartável muda isso: gerar endereço, testar fluxo, fechar aba. Zero limpeza, zero trabalho manual.
O problema dos testes
Fluxo de trabalho tradicional de testes de e-mail:
1. Criar usuário de teste com [email protected]
2. Disparar redefinição de senha
3. Abrir Gmail em outra aba
4. Esperar o e-mail
5. Encontrá-lo entre outros 200 e-mails de teste
6. Teste completo
7. Caixa de entrada agora tem 247 e-mails de teste
Problemas:
- Polui sua caixa de entrada
- Não é possível paralelizar (mesmo endereço é reutilizado)
- Gmail pode marcar seus e-mails de teste como spam
- É preciso limpar manualmente centenas de contas de teste
Solução: API de e-mail descartável
Com tempy.email:
// Criar caixa de correio
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
method: 'POST'
}).then(r => r.json());
// Usar no teste
await yourApp.signup({ email: mailbox.email });
// Obter e-mails
const emails = await fetch(
`https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());
console.log(emails[0].subject); // "Verifique seu e-mail"
// Endereço expira automaticamente - zero limpeza
Casos de uso reais
1. Testes de integração
def test_welcome_email():
# Gerar caixa de correio temporária
r = requests.post('https://tempy.email/api/v1/mailbox')
email = r.json()['email']
# Criar usuário
create_user(email=email)
# Verificar caixa de entrada
time.sleep(2)
emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')
assert "Welcome" in emails.json()[0]['subject']
2. Testes E2E (Cypress/Playwright)
// Gerar e-mail único por execução de teste
const mailbox = await cy.request('POST', 'https://tempy.email/api/v1/mailbox');
cy.visit('/signup');
cy.get('[name="email"]').type(mailbox.body.email);
cy.get('button').click();
// Aguardar e-mail de verificação
cy.wait(2000);
cy.request(`https://tempy.email/api/v1/mailbox/${mailbox.body.email}/emails`)
.then((res) => {
const link = extractLink(res.body[0].bodyHtml);
cy.visit(link);
});
3. Testes de carga
Testar 1000 cadastros em paralelo — cada um com endereço único:
await Promise.all(
Array(1000).fill().map(async () => {
const m = await createMailbox();
await testSignup(m.email);
// Expira automaticamente, sem necessidade de limpeza
})
);
4. Verificação de templates de e-mail
// Enviar e-mail de teste
await sendEmail({
to: tempAddress,
template: 'order_confirmation',
data: { order: '12345', total: '$99' }
});
// Verificar se o template renderizou corretamente
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));
Referência da API
Criar caixa de correio:
POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }
Obter e-mails:
GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]
Estender TTL:
POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Adiciona 5 minutos
Melhores práticas
Usar endereços únicos por teste:
// Cada teste recebe caixa de entrada limpa
test('signup', async () => {
const email = await createUniqueEmail();
await testWith(email);
});
Consultar e-mails periodicamente:
async function pollForEmail(address, timeout = 10000) {
const start = Date.now();
while (Date.now() - start < timeout) {
const emails = await getEmails(address);
if (emails.length > 0) return emails[0];
await sleep(500);
}
throw new Error('E-mail não recebido');
}
Não usar endereços compartilhados:
// Ruim - e-mails de diferentes testes se misturam
const SHARED_EMAIL = '[email protected]';
Economia de tempo
Antes: 10 min/teste x 100 testes/semana = 1000 min/semana = 16,7 horas/semana
Depois: 30 seg/teste x 100 testes = 50 min/semana
Economia: mais de 15 horas por desenvolvedor por semana.
Integração CI/CD
# .github/workflows/test.yml
name: Email Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test -- email.test.js
env:
TEMP_EMAIL_API: https://tempy.email/api/v1
Sem chaves de API. Sem limites de taxa. Simplesmente funciona.
Pare de poluir sua caixa de entrada. Comece a testar de forma mais inteligente com tempy.email.