gremlins.js est une bibliothèque de monkey testing pour applications web et Node.js simulant des interactions utilisateurs aléatoires.
Utilisation de base
Exécution via CDN
<script src="https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js"></script>
<script>
gremlins.createHorde().unleash();
</script>
Personnaliser la horde
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
// Action personnalisée exécutée à intervalles réguliers
document.activeElement.blur();
})
.unleash();
Exemple de configuration complète
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => element.tagName !== 'A')
.showAction((x, y) => { /* Indicateur visuel de clic */ }))
.gremlin(gremlins.species.scroller())
.gremlin(gremlins.species.typer())
.mogwai(gremlins.mogwais.alert())
.mogwai(gremlins.mogwais.fps())
.mogwai(gremlins.mogwais.gizmo().maxErrors(2))
.unleash();
Hooks de cycle de vie
Before et After synchrones
gremlins.createHorde()
.before(function () {
this.log('Démarrage de l exécution du monkey test');
console.profile('gremlins');
})
.after(function () {
this.log('Monkey testing terminé');
console.profileEnd();
})
.unleash();
Hooks asynchrones
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('Configuration asynchrone terminée');
done();
}, 500);
})
.unleash();
Répertoire des espèces
Les Gremlins (Attaquants)
- formFiller : Remplit les champs de formulaire (inputs, textareas, selects) avec des valeurs aléatoires.
- clicker : Clique aléatoirement sur des éléments actifs de la page.
- scroller : Fait défiler la page dans des directions aléatoires.
- typer : Tape des caractères aléatoires sur les champs de saisie actifs.
- toucher : Simule des gestes tactiles sur écrans tactiles.
Les Mogwais (Gardiens)
- alert : Intercepte et consigne les boîtes de dialogue
window.alert. - fps : Surveille le nombre d images par seconde (FPS) et signale les chutes de performance.
- gizmo : Arrête l exécution lorsque le nombre d erreurs JavaScript non interceptées dépasse la limite.