Voltar à base de conhecimento

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.

Atualizado fevereiro 12, 2026