gremlins.js ist eine Monkey-Testing-Bibliothek für Web-Apps und Node.js, die zufällige Benutzerinteraktionen simuliert.
Grundlegende Verwendung
CDN-Integration
<script src="https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js"></script>
<script>
gremlins.createHorde().unleash();
</script>
Anpassen der Horde
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
// Benutzerdefinierte Aktion in regelmäßigen Intervallen
document.activeElement.blur();
})
.unleash();
Vollständiges Konfigurationsbeispiel
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => element.tagName !== 'A')
.showAction((x, y) => { /* Visuelle Klick-Anzeige */ }))
.gremlin(gremlins.species.scroller())
.gremlin(gremlins.species.typer())
.mogwai(gremlins.mogwais.alert())
.mogwai(gremlins.mogwais.fps())
.mogwai(gremlins.mogwais.gizmo().maxErrors(2))
.unleash();
Lifecycle-Hooks
Synchrone Before- und After-Hooks
gremlins.createHorde()
.before(function () {
this.log('Beginn der Monkey-Test-Ausführung');
console.profile('gremlins');
})
.after(function () {
this.log('Monkey-Testing abgeschlossen');
console.profileEnd();
})
.unleash();
Asynchrone Hooks
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('Asynchrones Setup abgeschlossen');
done();
}, 500);
})
.unleash();
Arten-Referenz (Species Reference)
Gremlins (Angreifer)
- formFiller: Füllt Formularelemente wie Inputs, Textareas und Selects mit zufälligen Daten aus.
- clicker: Klickt zufällig auf aktive Elemente im Viewport.
- scroller: Scrollt das Fenster in zufällige Richtungen.
- typer: Tippt zufällige Tastenanschläge in fokussierte Eingabefelder.
- toucher: Erzeugt Touch-Gesten auf touchfähigen Bildschirmen.
Mogwais (Wachhunde)
- alert: Fängt Aufrufe von
window.alertab und protokolliert sie. - fps: Überwacht die Bildwiederholrate (FPS) und meldet Einbrüche.
- gizmo: Stoppt die Ausführung, wenn JavaScript-Laufzeitfehler das Limit überschreiten.