gremlins.js é uma biblioteca de monkey testing para web apps e Node.js que simula interações aleatórias de usuários.
Uso Básico
Execução via CDN
<script src="https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js"></script>
<script>
gremlins.createHorde().unleash();
</script>
Personalizando a Horda
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
// Ação customizada executada em intervalos regulares
document.activeElement.blur();
})
.unleash();
Exemplo de Configuração Completa
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => element.tagName !== 'A')
.showAction((x, y) => { /* Indicador visual de clique */ }))
.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 Ciclo de Vida
Before e After Síncronos
gremlins.createHorde()
.before(function () {
this.log('Iniciando execução do monkey testing');
console.profile('gremlins');
})
.after(function () {
this.log('Monkey testing concluído');
console.profileEnd();
})
.unleash();
Hooks Assíncronos
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('Configuração assíncrona concluída');
done();
}, 500);
})
.unleash();
Referência de Espécies
Gremlins (Atacantes)
- formFiller: Preenche inputs, textareas e selects com valores aleatórios válidos.
- clicker: Clica aleatoriamente em elementos ativos da tela.
- scroller: Rola a janela em direções aleatórias.
- typer: Digita teclas aleatórias em campos focados.
- toucher: Gera toques em telas sensíveis ao toque.
Mogwais (Guardiões)
- alert: Intercepta e registra chamadas de
window.alert. - fps: Monitora a taxa de quadros (FPS) e alerta sobre quedas.
- gizmo: Interrompe a execução se os erros não tratados de JavaScript excederem o limite.