gremlins.js は、ランダムなユーザー操作をシミュレートして堅牢性の問題を検出する Web アプリおよび Node.js 向けのモンキーテストライブラリです。
基本的な使い方
CDN からの実行
<script src="https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js"></script>
<script>
gremlins.createHorde().unleash();
</script>
Horde(大群)のカスタマイズ
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
// 一定間隔で実行されるカスタムアクション
document.activeElement.blur();
})
.unleash();
完全な設定例
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => element.tagName !== 'A')
.showAction((x, y) => { /* クリックの視覚的インジケータ */ }))
.gremlin(gremlins.species.scroller())
.gremlin(gremlins.species.typer())
.mogwai(gremlins.mogwais.alert())
.mogwai(gremlins.mogwais.fps())
.mogwai(gremlins.mogwais.gizmo().maxErrors(2))
.unleash();
ライフサイクルフック
同期 Before / After フック
gremlins.createHorde()
.before(function () {
this.log('モンキーテストの実行を開始');
console.profile('gremlins');
})
.after(function () {
this.log('モンキーテストが完了しました');
console.profileEnd();
})
.unleash();
非同期フック
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('非同期セットアップ完了');
done();
}, 500);
})
.unleash();
種族リファレンス (Species)
Gremlins(攻撃側)
- formFiller: input、textarea、select などのフォーム要素にランダムな有効値を自動入力します。
- clicker: 表示領域内のアクティブ要素をランダムにクリックします。
- scroller: ウィンドウをランダムな方向や距離にスクロールします。
- typer: フォーカスのある入力欄にランダムなキー入力を送信します。
- toucher: タッチ対応画面でタッチジェスチャーをエミュレートします。
Mogwais(監視・守護側)
- alert:
window.alertダイアログ呼び出しを捕捉してログに記録します。 - fps: フレームレートを監視し、しきい値を下回ったフレーム落ちを検知します。
- gizmo: 未捕捉の JavaScript ランタイムエラー数が上限に達した際に実行を停止します。