4.5+
Electron
ist ein Framework zur Ausführung von Cross-Plattform
Desktop-Anwendungen mit Hilfe des Webbrowsers Chromium und des Node.js-Frameworks.
Diese Anwendungen können mittels HTML, CSS und JavaScript entwickelt werden und auf native
Funktionen des Betriebssystems wie Menüs, Dateien oder die Taskleiste zugreifen.
Seit QF-Test Version 4.5 können Anwendungen, die mit dem Electron Framework entwickelt wurden, getestet werden.
Sämtliche Features, die QF-Test für das Web bietet, können auch hier verwendet werden.
Die Verbindung zur Electron Anwendung gleicht nahezu der einer Web-Anwendung
über den WebDriver-Verbindungsmodus (siehe Abschnitt 46.3.2).
Mit Hilfe des Schnellstart-Assistenten (vgl. Kapitel 3)
lässt sich die passende 'Vorbereitung' Sequenz erstellen.
Dies ermöglicht den einfachen Start der Anwendung.
Die Electron spezifischen Angaben im Schnellstart-Assistenten werden weiter unten
in diesem Kapitel erläutert.
Die verbleibenden optionalen Einstellungen sind im Schnellstart-Assistenten
selbst beschrieben.
Wählen Sie in der Rubrik "Typ der Anwendung" des Schnellstart-Assistenten den Punkt
Eine Electron Anwendung
.
Geben Sie in der Rubrik "Electron Anwendung" Ihre Anwendung
inklusive Pfad an, wobei Sie das Dateiauswahlmenü nutzen können, das über den
Button rechts des Eingabefelds aktiviert werden kann. Wenn Sie beim Start der Anwendung
eigene Kommandozeilenargumente benötigen, so können Sie diese hier ebenfalls angeben.
In der Rubrik "ChromeDriver" können Sie entweder direkt die passende Electron Version zu
Ihrer Applikation angeben oder diese über den Button "Electron Version ermitteln"
durch QF-Test feststellen lassen.
Electron basiert auf Node.js, welches in der JavaScript-Laufzeitumgebung "V8" ausgeführt wird.
Diese kann mit Hilfe des ChromeDrivers angesteuert werden.
Electron kann mit verschiedenen Node-Versionen laufen, die jeweils einen anderen ChromeDriver benötigen.
Wenn der passende ChromeDriver bereits installiert ist, zeigt QF-Test dies im
unteren Eingabefeld an. Falls dieses Feld leer ist, laden Sie den passenden ChromeDriver durch Klick
auf den Button "ChromeDriver herunterladen". Dieser wird dann im Unterverzeichnis
chromedriver
des QF-Test Installationsverzeichnisses gespeichert.
Neben den Features, die QF-Test für das Web bietet, steht für Electron die nachfolgend
beschriebene Funktionalität zur Verfügung.
Zur Ansteuerung der nativen Menüs der Electron Anwendung verwenden Sie bitte einen
'Auswahl' Knoten, bei dem Sie im Attribut 'QF-Test ID der Komponente' die 'QF-Test ID'
des Knotens Webseite
des SUT angeben.
Im Attribut 'Detail' tragen Sie den Menüpunkt mit der folgenden Syntax ein:
clickmenu:@/<Menüpfad>
, wobei
statt <Menüpfad>
das Menü mit dem oder den Untermenüpunkten,
getrennt durch /
, einzutragen ist. Wenn Sie zum Beispiel im Menü
Datei
den Unterpunkt Speichern unter
aktivieren wollen,
lautet der Eintrag clickmenu:@/Datei/Speichern unter
.
5.1.0+
QF-Test unterstützt die Aufnahme, Prüfung und Ansteuerung von Dialogen, welche mit dem dialog
-Modul
von Electron aufgerufen werden. Aus technischen Gründen können sich dabei die angezeigten Dialoge optisch von
den üblichen Dialogen unterscheiden.
Bei der Aufnahme wird ein Komponenten-Knoten mit der Klasse Dialog
erstellt, auf dem
mit Hilfe eines 'Check Text'-Knotens der Text des Dialogfensters geprüft werden kann.
Zum Interagieren mit dem Dialogfenster wird ein 'Auswahl' Knoten verwendet, wobei die Details
vom Typ des Dialogs abhängen:
-
Message Box: Der Wert im Attribut 'Detail' entspricht der Nummer des ausgewählten Buttons, z.B.
2
.
Enthält die Message Box zusätzlich eine CheckBox, so kann deren Wert mit :
getrennt angefügt werden, also z.B. 2:true
.
-
Error Box: Bei einer Error Box ist nur ein Knopf vorhanden, der Rückgabewert muss daher
0
lauten.
-
Open File Dialog: Im Attribut 'Detail' muss der Dateiname der auszuwählenden Datei angegeben werden.
Ist die Auswahl mehrerer Dateien erlaubt, so kann alternativ als Attribut-Wert ein Json-Array mit Dateinamen angegeben werden, also
z.B.
["datei.txt","C:\\TEMP\\andere.txt"]
. Möchte man den Dialog abbrechen, gibt man als Attribut-Wert <CANCEL>
an.
-
Save File Dialog: Die Attribut-Werte für Save File Dialog entsprechen denen des Open File Dialogs.
Eine Mehrfachauswahl wird von Electron beim Save File Dialog nicht unterstützt.
Damit QF-Test auf die Electron-APIs zugreifen kann, d.h. um Interaktionen mit nativen Menüs aufzunehmen
oder abzuspielen, muss QF-Test die Electron API über den Render-Prozess der getesteten Anwendung aufrufen.
Dazu sollte die nodeIntegration
Property des
BrowserWindow nicht auf false
gesetzt werden.
Zusätzlich muss
contextIsolation
deaktiviert bleiben
und enableRemoteModule
den Wert true
behalten.
|
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
contextIsolation: false,
...
},
...
}) |
|
| | Beispiel 18.1: Einfaches Beispiel für eine Electron Anwendung, die gut getestet werden kann | |
Wenn Sie vermeiden wollen, dass die vollständige Node-Integration im Render-Prozess zugänglich ist,
können Sie die API-Integration mit Hilfe eines preload
-Skripts verfügbar machen:
|
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false,
...
preload: `${__dirname}/preload.js` // absolute pathname required
},
...
}) |
|
| | Beispiel 18.2: Die Einstellungen für den eingeschränkten Node Zugriff | |
|
// Expose require API in test mode:
if (process.env.NODE_ENV === 'test') {
window.electronRequire = require;
} |
|
| | Beispiel 18.3: Die zugehörige Datei preload.js | |
Da QF-Test die NODE_ENV
-Umgebungsvariable immer mit dem Wert test
belegt,
können Sie hierdurch dynamisch die Zugriffssicherheit während des Tests auf die benötigten Werte herabsetzen:
|
const inTestMode = (process.env.NODE_ENV === 'test');
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: inTestMode,
enableRemoteModule: inTestMode,
contextIsolation: ! inTestMode,
...
},
...
}) |
|
| | Beispiel 18.4: Dynamisches Beispiel für eine Electron Anwendung, die gut getestet werden kann | |