クイックリファレンス

Gremlins.js モンキーテスト チートシート

Gremlins.js のクイックリファレンス:クリック、フォーム自動入力、スクロール、Mogwai 監視を用いた Web アプリのカオス&モンキーテスト自動化。

· 公開日

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 ランタイムエラー数が上限に達した際に実行を停止します。

参考リンク

関連テーマ