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.