Gli email test con Playwright hanno bisogno di un failure budget
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
Non basta un timeout: ogni test deve registrare stati ed evidenze che distinguono problemi di delivery, inbox o parser.
Un test email che aspetta 60 secondi e alla fine stampa “message not found” non spiega niente. Potrebbe essere consegna lenta, inbox sbagliata, messaggio vecchio, o nessun invio dell’app1.
Il “failure budget” aggiunge domande precise oltre al timeout: a cosa deve rispondere il test prima di fallire. Ha quattro stati per una mail di verifica: triggered, observed, accepted, opened. Ogni stato lascia tracce. Si salvano l’istante del trigger, l’identificatore dell’inbox, gli id dei messaggi visti, gli orari di ricezione, le ragioni di scarto. Se non arriva nulla, il sospetto cade su consegna o wiring. Se arrivano messaggi ma nessuno passa i controlli, il matching è sospetto. Se un messaggio è accettato ma il passaggio del browser fallisce, l’attenzione va all’applicazione o al parser del link1.
Questo schema funziona con un’inbox usa e getta, per esempio tempmail. Conta il contratto di evidenze sul confine tra consegna e prodotto. Il provider è un componente. Il test deve rendere visibile quel confine, così si separa il rumore di delivery da un difetto reale1.
Per non spargere logica duplicata, il polling e la raccolta delle prove vivono in un helper dedicato. Il test descrive il flusso utente, non le regole dell’inbox. L’esempio definisce un tipo di evidence con: inbox, triggeredAt, seen con id, subject e receivedAt, più un elenco di rejected. Il ciclo interroga la casella a partire dal momento del trigger, non dalla creazione dell’inbox. Ha una deadline di 45_000 millisecondi e un intervallo di 1_000 millisecondi. Accetta un messaggio solo se il subject contiene “Verify your email” e se l’HTML include una prova del destinatario. Alla fine restituisce l’URL di verifica, altrimenti lancia un errore con le evidenze strutturate, pronte per finire nel report di CI1.
Per leggere una run rossa, l’ordine conta. Primo, nessun messaggio visto: guardare la richiesta che attiva l’invio, il routing delle mail, la latenza di consegna. Secondo, solo messaggi vecchi: controllare il boundary since e l’isolamento dell’inbox. Terzo, messaggi freschi ma rifiutati: verificare subject, prova del destinatario e assunzioni del parser. Quarto, un messaggio accettato ma la UI fallisce: controllare l’URL estratto, lo stato di sessione e la navigazione del browser. Questo evita l’errore tipico: allungare il timeout quando la vera causa è la contaminazione tra test in parallelo1.
Prima del merge conviene passare una checklist. Il timestamp del trigger va registrato subito dopo l’azione del browser. L’inbox deve essere unica per worker o test case. Il polling deve avere una deadline chiara e un intervallo definito. Ogni candidato respinto deve spiegare perché. Il messaggio accettato deve dimostrare proprietà e freschezza. La CI deve conservare le evidenze quando il test fallisce1.
Così ogni controllo è esplicito su ciò che protegge. Ogni run rossa spende un pezzo di budget in diagnosi e lascia una scia leggibile.
Quando la suite scala su più worker, condividere una sola inbox crea collisioni. Un indirizzo fresco per worker, o un lease supportato dal provider, dà all’evidenza un proprietario chiaro1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
- Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 10/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 8,4/10 dopo 3 revisioni.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.