Wróć do bazy wiedzy

Jak programiści wykorzystują jednorazowy e-mail do testowania

Testowanie funkcjonalności e-mail jest żmudne. Utwórz konto Gmail #47, zweryfikuj je, sprawdź skrzynkę, zrób zrzut ekranu, powtórz dla każdego testu.

Jednorazowy e-mail to zmienia: wygeneruj adres, przetestuj przepływ, zamknij kartę. Zero sprzątania, zero pracy ręcznej.

Problem z testowaniem

Tradycyjny przepływ pracy testowania e-maili:

1. Utwórz użytkownika testowego z [email protected]
2. Uruchom resetowanie hasła
3. Otwórz Gmail w innej karcie
4. Czekaj na e-mail
5. Znajdź go wśród 200 innych testowych e-maili
6. Test zakończony
7. Skrzynka ma teraz 247 testowych e-maili

Problemy:

  • Zanieczyszcza Twoją skrzynkę
  • Nie można zrównoleglić (ten sam adres jest ponownie używany)
  • Gmail może oznaczyć Twoje testowe e-maile jako spam
  • Trzeba ręcznie wyczyścić setki kont testowych

Rozwiązanie: API jednorazowego e-maila

Z tempy.email:

// Utwórz skrzynkę
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
  method: 'POST'
}).then(r => r.json());

// Użyj w teście
await yourApp.signup({ email: mailbox.email });

// Pobierz e-maile
const emails = await fetch(
  `https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());

console.log(emails[0].subject); // "Zweryfikuj swój e-mail"

// Adres wygasa automatycznie - zero sprzątania

Realne przypadki użycia

1. Testy integracyjne

def test_welcome_email():
    # Wygeneruj tymczasową skrzynkę
    r = requests.post('https://tempy.email/api/v1/mailbox')
    email = r.json()['email']

    # Utwórz użytkownika
    create_user(email=email)

    # Sprawdź skrzynkę
    time.sleep(2)
    emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')

    assert "Welcome" in emails.json()[0]['subject']

2. Testy E2E (Cypress/Playwright)

// Wygeneruj unikalny e-mail dla każdego uruchomienia testu
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();

// Czekaj na e-mail weryfikacyjny
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. Testy obciążeniowe

Przetestuj 1000 rejestracji równolegle — każda z unikalnym adresem:

await Promise.all(
  Array(1000).fill().map(async () => {
    const m = await createMailbox();
    await testSignup(m.email);
    // Wygasa automatycznie, nie wymaga sprzątania
  })
);

4. Weryfikacja szablonów e-mail

// Wyślij testowy e-mail
await sendEmail({
  to: tempAddress,
  template: 'order_confirmation',
  data: { order: '12345', total: '$99' }
});

// Sprawdź czy szablon wyrenderował się poprawnie
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));

Dokumentacja API

Utwórz skrzynkę:

POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }

Pobierz e-maile:

GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]

Wydłuż TTL:

POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Dodaje 5 minut

Najlepsze praktyki

Używaj unikalnych adresów na test:

// Każdy test dostaje czystą skrzynkę
test('signup', async () => {
  const email = await createUniqueEmail();
  await testWith(email);
});

Odpytuj o e-maile:

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 nie został odebrany');
}

Nie używaj współdzielonych adresów:

// Źle - e-maile z różnych testów mieszają się
const SHARED_EMAIL = '[email protected]';

Oszczędność czasu

Wcześniej: 10 min/test x 100 testów/tydzień = 1000 min/tydzień = 16,7 godzin/tydzień

Teraz: 30 sek/test x 100 testów = 50 min/tydzień

Oszczędność: ponad 15 godzin na programistę tygodniowo.

Integracja 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

Bez kluczy API. Bez limitów zapytań. Po prostu działa.

Przestań zanieczyszczać swoją skrzynkę. Zacznij testować mądrzej z tempy.email.

Zaktualizowano lutego 12, 2026