Thomas Mahringer Selbstständig

Es ist mit wenig Aufwand möglich, die Objekte in einem Browser fernzusteuern. So lässt sich z. B. die Logausgabe und -formatierung des console-Objekts nutzen, auch wenn die App gar nicht im Browser läuft.

Die Fähigkeiten eines Browsers zu nutzen, auch wenn die eigentliche Applikation gar nicht im Browser läuft, wie kann das gehen? Mittels WebSockets und ein wenig JavaScript lässt sich das im Prinzip einfach umsetzen, um remote Browser-Console-Logging und Browser-Testing zu nutzen.

Artikelserie
Teil 1: Die Browserkonsole als remote Logausgabe verwenden
Teil 2: Den Browser zum automatisierten Browser-Testing verwenden

Der Anteil von webbasierten Applikationen steigt ständig, seien es klassische Browser-Apps, responsive Apps, oder Apps, die über Container wie Cordova oder Electron „nativ verpackt“ werden. Darüber hinaus bieten Browser umfangreiche Funktionalität – zum Beispiel für Logausgaben – an. Es wäre daher überaus nützlich, wenn man Browserfunktionalität als externe Remote-Funktionen in die eigene App einbinden und darüber z. B. die Logausgaben nutzen könnte. Oder wenn man in Testsuites App-Funktionalität, die im Browser läuft, remote aufrufen und deren Ergebnisse automatisiert überprüfen könnte.

Der Browser als Logausgabe

Moderne Browser bieten eine sehr gute und bequeme Möglichkeit, Logausgaben formatiert auszugeben, und zwar über das console-Objekt. Besonders mit Chrome lässt sich der Output sehr flexibel formatieren und filtern, z. B. kann man in „error“ und „warn“ unterscheiden, Gruppierungen einführen oder die Ausgabe mittels CSS gestalten, wie in Abbildung 1 dargestellt.

Abb. 1: Logausgaben in der Chrome Console

Abb. 1: Logausgaben in der Chrome Console

Diese Möglichkeiten hat wahrscheinlich jeder schon genutzt, der im Browser JavaScript verwendet hat. Es wäre doch praktisch, wenn man diese bequeme Art der Logausgabe und -formatierung nicht nur in Browser-Apps, sondern generell verwenden könnte. Wir verwenden es z. B., um komplexe Programmabläufe in Node.js oder .NET-Applikationen zu visualisieren. Wie wir sehen können, lässt sich das mit der Browserfernsteuerung leicht durchführen.

Ein Hinweis für JavaScript-Puristen: Die im Folgenden gezeigten Beispiele verwenden TypeScript. Wer das nicht mag, möge sich bitte die Typangaben wegdenken.

Automatisiertes Testen von Browser-Apps

Für das automatisierte Testen von Browser-Apps gibt es generell mehrere Ansätze, die im Folgenden dargestellt werden.

Unit-Tests: Zunächst einmal sollten die einzelnen UI-Komponenten Unit-getestet werden, was sich mit den üblichen JS-Testframeworks leicht erledigen lässt.

Simulierte Benutzertests mit Recording und Replay: Mit einem Browsertesttool wie Selenium lassen sich Benutzerinteraktionen aufzeichnen, mit Testbedingungen versehen und wieder abspielen. Solche Tests eignen sich sehr gut für „klassische“ Testteams, die die App als Blackbox testen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 3.18 - "Web und Desktop ergänzen sich"

Alle Infos zum Heft
579828111Remote Browser-Console-Logging mit WebSockets
X
- Gib Deinen Standort ein -
- or -