Test end-to-end delle app Electron: oltre il supporto di Playwright per Electron

Test delle app Electron come li vede l'utente: cosa copre l'API Electron di Playwright, dove si ferma, e un test attraverso la pagina, la finestra di dialogo dei file e la notifica.

10 min di letturaDi Ait Nohaila, Business Development Representative

La risposta breve

Per testare automaticamente un'app Electron, pilotatela come un utente, finestre di dialogo native comprese, e controllate ciò che disegna sullo schermo.

  • L'API Electron di Playwright copre il renderer e il processo principale; la shell ha bisogno di uno strumento che veda lo schermo.

Questa guida è per gli sviluppatori e le persone del QA di un'app desktop Electron.Dice cosa rende diverso il test di un'app di questo tipo, fa un resoconto onesto dell'API Electron di Playwright, poi mostra un test end-to-end attraverso la pagina, la finestra di dialogo dei file nativa, un'esportazione e la sua notifica, eseguito a ogni build.

Cosa rende diverso il test di un'app Electron

Un'app Electron è due programmi che lavorano insieme.Il processo principale gira in Node.js: apre le finestre, gestisce il ciclo di vita dell'app, e chiede al sistema operativo tutto ciò che è nativo, come menu, finestre di dialogo e icone nell'area di notifica.Ogni finestra esegue poi un processo renderer, che è una pagina Chromium: HTML, CSS e JavaScript, come un sito web.

File · Modifica · Visualizza · Guida
Menu nativo
La pagina (renderer)
Esporta
Apri
invoice-2026.csv
Apri
Finestra di dialogo dei file nativa
Esportazione completata
invoice-2026.pdf è pronto
Notifica del sistema operativo
Processo principale
Node.js: apre le finestre e chiede a Windows finestre di dialogo, menu, area di notifica e notifiche
Icona nell'area di notifica
Solo la parte tratteggiata è una pagina web.La barra dei menu, la finestra di dialogo dei file, la notifica e l'icona nell'area di notifica sono disegnate da Windows su richiesta del processo principale, e un utente le incontra tutte.

Per i test, questa divisione conta.Uno strumento fatto per i siti web vede la pagina e solo la pagina.Un utente vede tutto: la barra dei menu, la finestra di dialogo dei file di Windows che si apre su Apri, la notifica che dice che l'esportazione è completata, l'icona che resta nell'area di notifica dopo la chiusura della finestra.

È lì che le app Electron si rompono in modi che un test a livello di pagina non vede mai.

  • La finestra di dialogo Salva si apre sulla cartella sbagliata.
  • Una voce di menu è disattivata dopo un aggiornamento.
  • Una seconda finestra si apre dietro la prima.
  • Una notifica scatta due volte, o mai.
  • Le etichette vanno a capo su un portatile da 1366 pixel.

Cosa copre l'API Electron di Playwright, e dove si ferma

Tra gli strumenti di test dell'interfaccia per Electron, Playwright è quello che la maggior parte dei team prova per primo, perché lo usa già per la propria app web.La sua classe Electron è documentata come supporto sperimentale, per Electron 21 e successivi.Il test avvia l'app dal suo script di ingresso, ottiene ogni finestra come una pagina Playwright, ed esegue codice nel processo principale con evaluate().

È un vero accesso all'interno dell'app.Ogni locator, clic e asserzione che Playwright offre su una pagina web funziona sul renderer, una seconda finestra arriva tramite l'evento window, ed evaluate() può leggere o modificare lo stato dell'app.Vedete la classe ElectronApplication per l'elenco completo.

Il limite è documentato con la stessa chiarezza.Le chiamate alle finestre di dialogo native come dialog.showOpenDialog non vengono intercettate, perché vanno dritte al sistema operativo, e la documentazione consiglia di sostituire quei metodi dal test con uno stub che restituisce il percorso del file desiderato.La vera finestra di dialogo non si apre mai, quindi non viene mai testata.Lo stesso vale per tutto il resto che il sistema operativo disegna fuori dalla pagina.

Cosa testateL'API Electron di PlaywrightUn test dello schermo, in GUI Test Studio
La pagina (il renderer)Ogni finestra è una pagina: locator, clic, digitazione, asserzioni, screenshot.Clic e tasti come input reale, e controlli di ciò che la pagina disegna.
Il processo principaleevaluate() vi esegue il vostro codice: leggere lo stato dell'app, sostituire un metodo con uno stub.Non raggiunto direttamente.Ciò che fa viene controllato dove si vede: sullo schermo.
Finestre di dialogo native per file e messaggiNon intercettate, per sua stessa documentazione: il test sostituisce la chiamata alla finestra di dialogo con uno stub.La vera finestra di dialogo di Windows fa parte del test: registrata, pilotata, controllata.
L'area di notifica e i menu nativiNessuna chiamata propria.Il gestore di una voce di menu può essere eseguito da evaluate(), senza il clic.Raggiunti con un clic dove sono disegnati, a vista, come fa l'utente.
Notifiche del sistema operativoNessuna chiamata legge ciò che Windows ha disegnato.Il test può controllare il codice che ne ha chiesta una.Un'asserzione testuale attende sullo schermo le parole della notifica.
Una seconda finestraOgni finestra è una pagina, tramite l'evento window o windows().Qualsiasi finestra sullo schermo, compresa la finestra di dialogo sopra di essa.
Ciò che vede l'utenteUno screenshot della pagina di una finestra, che il test può confrontare con uno memorizzato.L'intero schermo viene registrato, e ogni controllo confronta ciò che viene disegnato.

Fatti letti nella documentazione di Playwright il 6 novembre 2026.Playwright ed Electron sono marchi dei rispettivi proprietari; questa guida non è affiliata a essi né approvata da essi.

Una finestra di dialogo sostituita da uno stub dimostra che l'app gestisce un percorso di file.Solo la vera finestra di dialogo dimostra che l'utente può scegliere il file.

Un solo test end-to-end attraverso il renderer e la shell

Ecco come testare un'app Electron end-to-end in GUI Test Studio, con un'app di fatturazione come esempio: aprire un file tramite la finestra di dialogo nativa, modificare una riga, esportare un PDF, e controllare la notifica che dice che è fatto.

  1. 1

    Registrare l'app, non la pagina

    In GUI Test Runner-Recorder, fate clic su Registra e scegliete Un'app.Selezionate la vostra app Electron, oppure cercate il suo eseguibile, e spuntate la casella che la avvia con il test e la chiude alla fine, così ogni esecuzione parte da un'app appena aperta.Poi usatela come farebbe un utente.

    Viene sempre registrato l'intero schermo.Scegliere l'app decide solo da dove provengono i controlli automatici.
  2. 2

    Aprire un file tramite la vera finestra di dialogo

    Fate clic su Apri.Per la registrazione, la finestra di dialogo dei file di Windows è una finestra come le altre: digitate il percorso del file nel campo del nome file e premete Invio, ed entrambi vengono registrati come input reale.Prima del clic viene registrato un controllo della finestra di dialogo, così l'esecuzione attende che sia davvero aperta.

    Molte app Electron sono servite anche come pagina web.Per quella versione delle stesse schermate, il passaggio Carica file consegna il file alla pagina senza alcuna finestra di dialogo.

  3. 3

    Modificare, esportare e leggere la notifica

    Cambiate una quantità, fate clic su Esporta.Quando compare la notifica, lasciatela visibile un momento prima di fermarvi: la registrazione annota ciò che è comparso, e il test ne riceve un controllo.

  4. 4

    Dire cosa deve verificare il test

    Quando vi fermate, GUI Test Runner-Recorder chiede cosa deve verificare il test: gli elementi su cui avete fatto clic, i testi e ciò che è comparso sullo schermo.Lasciate attivi tutti e tre.Ogni passaggio diventa poi un blocco sulla timeline in GUI Test Studio, e nulla in essa nomina un processo.

Una registrazione, cinque momenti, tre luoghi

  1. ShellEsegui appAvvia l'app da zero
  2. PaginaClic su ApriAsserzione visiva sul pulsante
  3. Finestra di dialogoDigitare il nome del file, InvioAsserzione testuale: la finestra di dialogo è aperta
  4. PaginaModificare, poi EsportaAsserzione testuale sul totale
  5. DesktopLa notificaAsserzione testuale: Esportazione completata
Il test non sa quale processo ha disegnato cosa.Vede un solo schermo, come lo vede l'utente, e lo controlla in ogni momento che conta.

I controlli che contano: testo, aspetto visivo, layout

Una registrazione dà al test i controlli che mirano i suoi clic.Quelli che vale la pena aggiungere a mano colgono ciò che un'app Electron rompe più spesso.

Asserzione testuale

Un'asserzione testuale attende delle parole: il titolo della finestra di dialogo, il totale dopo la modifica, Esportazione completata nella notifica, e un'asserzione testuale dinamica accetta un valore di un formato noto, come la data di oggi nel nome di un file.

Asserzione visiva

Un'asserzione visiva confronta un'immagine: il pulsante Esporta, l'icona nell'area di notifica, la voce di menu che non deve essere disattivata.

Asserzione di layout

Un'asserzione di layout controlla che gli elementi di una schermata stiano ancora dove devono, il che coglie una finestra aperta dietro un'altra o un'etichetta andata a capo su uno schermo più piccolo.

Ogni confronto ignora il rumore di rendering che due esecuzioni hanno sempre, una sfumatura più chiara qui, un bordo più morbido là, e coglie comunque le vere regressioni che una persona chiamerebbe un cambiamento: un'icona mancante, una parola cambiata, un pulsante del colore sbagliato.Vedete Asserzioni visive per sapere quanto è rigoroso ogni controllo.

Due abitudini rendono solido un test Electron.

  • Controllate il risultato, non solo i clic: il totale sullo schermo, le parole della notifica.
  • Date ai pezzi nativi un controllo proprio: il titolo della finestra di dialogo prima di digitarci dentro, la voce di menu prima di farci clic.

Il report di affidabilità dice poi, per ogni controllo, se l'elemento è stato trovato e se ha l'aspetto registrato, con l'immagine attesa e quella trovata affiancate.Per un'app desktop i cui controlli Windows non sa descrivere, lo stesso approccio funziona solo a vista: vedete testare le app Windows senza albero di accessibilità.

Test automatici di Electron a ogni build

gtr-cli, l'esecutore da riga di comando, esegue il test esattamente come il pulsante Esegui test, e aggiunge ciò che serve a una pipeline: un codice di uscita, un file JUnit e ogni prova di un errore in un'unica cartella.

I test Electron a ogni build
gtr-cli run tests\electron --countdown 0 --junit results\junit.xml --artifacts results\artifacts

Il passaggio Esegui app all'inizio del test avvia la build in prova: puntatelo sull'eseguibile pacchettizzato prodotto dalla build, e lo stesso test controlla ogni versione che rilasciate.L'agente di build ha bisogno di una sessione desktop di Windows con l'utente connesso e sbloccata, perché l'app disegna su uno schermo reale.La guida CI/CD lo configura per TeamCity, Jenkins, GitHub Actions, GitLab e Azure DevOps.

Il passaggio Esegui app: il programma da avviare, i suoi argomenti, e quando il test prosegue.

Una cosa qui non si applica.Browser e dispositivi di GUI Test Studio creano versioni di un test web per Chrome, Edge, Firefox e telefoni emulati, come spiega il test cross-browser.Un'app Electron porta con sé il proprio Chromium, quindi c'è un solo browser da testare, e le versioni che contano sono le vostre build.

La build viene eseguita

gtr-cli avvia l'app pacchettizzata

Il percorso viene riprodotto

Pagina, finestra di dialogo, esportazione, notifica

Report di affidabilità

Regressione o rumore, con immagini

Rilasciare, o prima correggere

Un controllo non superato fa fallire la build

Quando l'API Electron di Playwright resta lo strumento giusto

Una guida onesta dice dove vince l'altro strumento, e qui vince.L'API Electron di Playwright è la scelta giusta per i test a livello di codice del processo principale: evaluate() legge direttamente lo stato dell'app, una finestra di dialogo sostituita da uno stub rende un test della gestione dei file veloce ed esatto, e nulla di tutto ciò ha bisogno di uno schermo.Un team che scrive già test Playwright per la propria app web mantiene nel renderer i propri locator e le proprie abitudini, ed esegue quei test in pochi secondi a ogni pull request.

I due non sono rivali.Tenete Playwright per il renderer e il processo principale, e un test dello schermo per il percorso che un utente compie attraverso la shell: la vera finestra di dialogo, il vero menu, la vera notifica, sulla vera build.Ognuno coglie ciò che l'altro non può vedere.

Punti chiave

  • 1Un'app Electron è una pagina più una shell: il processo principale possiede finestre di dialogo, menu, area di notifica e notifiche, e un utente le incontra tutte.
  • 2L'API Electron di Playwright raggiunge la pagina e il processo principale dal codice, e la sua stessa documentazione dice che le finestre di dialogo native non vengono intercettate.
  • 3GUI Test Studio testa l'app come la vede l'utente: l'intero schermo registrato, la vera finestra di dialogo dei file pilotata come qualsiasi finestra, nessuna build di test e nessun plugin.
  • 4Le asserzioni testuali, visive e di layout colgono ciò che si rompe: un totale sbagliato, un'icona mancante, una voce di menu disattivata, una finestra dietro un'altra.
  • 5Lo stesso test viene eseguito a ogni build con gtr-cli, con un file JUnit per la pipeline; Browser e dispositivi sono per le pagine web, qui le versioni sono le vostre build.

Domande

Come si testa automaticamente un'app Electron?

Pilotandola come fa un utente: avviare l'app, fare clic e digitare nelle sue finestre, aprire le sue finestre di dialogo native, e controllare ciò che viene disegnato sullo schermo.GUI Test Studio registra quel percorso una volta e lo riproduce a ogni build, senza codice di test.L'API Electron di Playwright è la via d'accesso dal codice, per la pagina e il processo principale.

Playwright supporta Electron?

Sì, come funzionalità sperimentale.La classe Electron di Playwright avvia un'app Electron dal codice, vi dà ciascuna delle sue finestre come una pagina, ed esegue codice nel processo principale.La sua documentazione indica Electron 21 e versioni successive.

Playwright può testare le finestre di dialogo native di un'app Electron?

Non come le vede l'utente.La documentazione di Playwright dice che non intercetta le chiamate alle finestre di dialogo native come dialog.showOpenDialog, e consiglia di sostituire quei metodi dal test.Un test che deve aprire la vera finestra di dialogo dei file ha bisogno di uno strumento che piloti lo schermo.

Come si testano le finestre di dialogo di apertura e salvataggio dei file di un'app Electron?

Registrandole.In GUI Test Studio la finestra di dialogo dei file di Windows è una finestra come le altre: il clic su Apri, il nome del file digitato e il tasto Invio vengono registrati e riprodotti come input reale, e un controllo prima del clic assicura che la finestra di dialogo ci sia.Quando le stesse schermate sono servite come pagina web, il passaggio Carica file consegna il file senza alcuna finestra di dialogo.

Si possono testare l'area di notifica e le notifiche di un'app Electron?

Sì, quando il test vede lo schermo.Un'icona nell'area di notifica e una notifica sono disegnate da Windows fuori dalla finestra dell'app, quindi un test che raggiunge solo la pagina non può vederle.GUI Test Studio registra l'intero schermo: un clic sull'icona nell'area di notifica è un clic, e un'asserzione testuale attende le parole della notifica.

GUI Test Studio ha bisogno di una build di test o di un plugin all'interno dell'app Electron?

No.Nulla viene aggiunto all'app: GUI Test Studio osserva lo schermo, usa mouse e tastiera come una persona, e chiede a Windows ciò che l'app descrive già.La build che testate è la build che rilasciate.

I test delle app Electron possono essere eseguiti in una pipeline CI/CD?

Sì. gtr-cli esegue lo stesso test su un agente di build Windows con una sessione desktop sbloccata, fa fallire la build quando un controllo non viene superato, e scrive un file JUnit per la scheda dei test di TeamCity, Jenkins, GitHub Actions, GitLab o Azure DevOps.

Conviene usare Playwright o GUI Test Studio per la propria app Electron?

Usate l'API Electron di Playwright per test veloci a livello di codice della pagina e del processo principale, soprattutto se il vostro team scrive già test Playwright.Usate GUI Test Studio per il percorso end-to-end come lo vede l'utente, finestre di dialogo native, area di notifica e notifiche comprese, senza codice di test.Entrambi possono convivere.

Electron, Playwright, Chromium, Node.js, Windows, TeamCity, Jenkins, GitHub, GitLab e Azure DevOps sono marchi dei rispettivi proprietari.

Pronti a registrare il vostro primo test?

Tutte le funzionalità, per 15 giorni.

Preferite vederlo sul tipo di app che testate?Prenotate una chiamata gratuita di 30 minuti con il nostro team.

Prenota una demo