gremlins.js — библиотека для monkey-тестирования веб-приложений и 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('Начало выполнения monkey-тестирования');
console.profile('gremlins');
})
.after(function () {
this.log('Monkey-тестирование завершено');
console.profileEnd();
})
.unleash();
Асинхронные хуки
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('Асинхронная настройка завершена');
done();
}, 500);
})
.unleash();
Справочник видов (Species)
Гремлины (Атакующие)
- formFiller: заполняет формы (input, textarea, select) случайными валидными данными.
- clicker: случайным образом кликает по активным элементам страницы.
- scroller: прокручивает страницу в случайных направлениях.
- typer: вводит случайные символы в поля ввода.
- toucher: генерирует жесты касания на сенсорных экранах.
Могваи (Наблюдатели)
- alert: перехватывает и логирует вызовы диалогов
window.alert. - fps: отслеживает частоту кадров (FPS) и фиксирует просадки производительности.
- gizmo: останавливает выполнение, если число необработанных JS-ошибок превышает лимит.