# marmelab/gremlins.js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/marmelab-gremlins-js).**

9,080 stars · 426 forks · JavaScript · mit

## Links

- GitHub: https://github.com/marmelab/gremlins.js
- Homepage: https://marmelab.com/blog/2020/06/02/gremlins-2.html
- awesome-repositories: https://awesome-repositories.com/repository/marmelab-gremlins-js.md

## Topics

`frontend` `fuzz-testing` `test`

## Description

gremlins.js is a JavaScript stress testing framework and web UI monkey testing library. It functions as a browser chaos testing tool that automates random interactions with DOM elements to identify stability issues, unexpected crashes, and edge-case bugs in web applications.

The tool utilizes a seeded-random interaction engine to ensure test sequence repeatability, allowing specific failure sequences to be recreated for debugging. It supports the definition of custom interaction rules and pluggable strategies to target specific application behaviors through weighted-probability action dispatching.

The framework includes capabilities for frontend performance monitoring, tracking frame rates and logging errors during simulated stress. It further provides mechanisms for concurrent stress distribution and an automatic simulation termination system that halts execution when defined error or lag thresholds are reached.

## Tags

### Testing & Quality Assurance

- [Automated UI Bug Hunting](https://awesome-repositories.com/f/testing-quality-assurance/automated-ui-bug-hunting.md) — Executes chaotic patterns of clicks and typing to find stability issues and failures that standard scripted tests miss.
- [Monkey Testing](https://awesome-repositories.com/f/testing-quality-assurance/monkey-testing.md) — Implements a web UI monkey testing library that automates random interactions to stress test application robustness. ([source](https://cdn.jsdelivr.net/gh/marmelab/gremlins.js@master/README.md))
- [Deterministic Simulation Workflows](https://awesome-repositories.com/f/testing-quality-assurance/deterministic-simulation-workflows.md) — Uses seeded random interactions to recreate specific failure sequences for debugging and verification purposes.
- [Chaotic](https://awesome-repositories.com/f/testing-quality-assurance/input-simulations/chaotic.md) — Provides automated random clicks, touches, and typing to discover stability issues and crashes in web interfaces. ([source](https://marmelab.com/gremlins.js/))
- [Stress Testing Frameworks](https://awesome-repositories.com/f/testing-quality-assurance/javascript-testing-frameworks/stress-testing-frameworks.md) — Provides a framework for simulating chaotic user interactions to test the robustness and performance of JavaScript applications.
- [Monkey Testing Libraries](https://awesome-repositories.com/f/testing-quality-assurance/monkey-testing-libraries.md) — Automates random interactions with DOM elements to find stability issues through exhaustive input simulation.
- [Chaos Testing Tools](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/browser-and-ui-testing/browser-automation-frameworks/browser-automation-testing/chaos-testing-tools.md) — Triggers random clicks and inputs in web browsers to uncover unexpected crashes and edge-case bugs.
- [UI](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/execution-and-infrastructure/automated-test-generators/stress-testing/ui.md) — Simulates high volumes of concurrent inputs to test the robustness and stability of a user interface.
- [Interaction Attack Strategies](https://awesome-repositories.com/f/testing-quality-assurance/automation-interaction-tools/user-interaction-simulation/interaction-attack-strategies.md) — Controls the frequency and order of simulated interactions using custom delays and probability weights to mimic user behaviors. ([source](https://cdn.jsdelivr.net/gh/marmelab/gremlins.js@master/README.md))
- [Concurrent Input Bursts](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/execution-and-infrastructure/automated-test-generators/stress-testing/concurrent-input-bursts.md) — Provides the ability to execute multiple simultaneous interactions to test system limits via high-frequency input bursts.

### Part of an Awesome List

- [Chaos Engineering](https://awesome-repositories.com/f/awesome-lists/devtools/chaos-engineering.md) — Triggers random user interactions as a form of chaos engineering to uncover unexpected crashes and edge-case bugs.

### Data & Databases

- [Interaction Strategies](https://awesome-repositories.com/f/data-databases/data-compression-algorithms/pluggable-architectures/interaction-strategies.md) — Allows the definition of custom, pluggable simulation functions to target specific application behaviors.

### Programming Languages & Runtimes

- [Seeding Utilities](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/core-conceptual-frameworks/programming-language-concepts/random-number-generation/random-number-generators/seeding-utilities.md) — Uses deterministic seeding to generate repeatable sequences of chaotic user inputs for debugging purposes.

### Software Engineering & Architecture

- [Deterministic Test Sequences](https://awesome-repositories.com/f/software-engineering-architecture/execution-flow-control/deterministic-test-sequences.md) — Utilizes a seeded-random engine to ensure chaotic interaction sequences are repeatable for debugging and verification. ([source](https://cdn.jsdelivr.net/gh/marmelab/gremlins.js@master/README.md))
- [Performance Threshold Enforcement](https://awesome-repositories.com/f/software-engineering-architecture/coding-standards-enforcement/performance-standard-enforcers/performance-threshold-enforcement.md) — Automatically terminates simulation sequences when real-time performance metrics hit defined error or lag thresholds.

### User Interface & Experience

- [Simulation Rules](https://awesome-repositories.com/f/user-interface-experience/editor-customization-tools/editor-appearance-customization/interaction-customization/simulation-rules.md) — Provides a system for defining custom simulation functions to target specific application behaviors not covered by defaults. ([source](https://cdn.jsdelivr.net/gh/marmelab/gremlins.js@master/README.md))
- [Weighted Action Dispatching](https://awesome-repositories.com/f/user-interface-experience/state-update-logic/state-action-value-updates/instance-scoped-action-dispatchers/action-dispatch-abstractions/weighted-action-dispatching.md) — Selects simulation tasks based on assignable weights and custom delays to mimic specific human behavior patterns.

### DevOps & Infrastructure

- [Client-Side Stress Distribution](https://awesome-repositories.com/f/devops-infrastructure/worker-node-management/distributed-orchestration/stress-testing-platforms/client-side-stress-distribution.md) — Allows simulating high volumes of concurrent inputs by grouping actions and executing them in bursts. ([source](https://marmelab.com/gremlins.js/))

### System Administration & Monitoring

- [Application Performance Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/application-performance-monitoring.md) — Tracks frame rates and logs errors when simulated interactions cause performance to drop.
- [Frame Rate Monitors](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/performance-resource-management/frame-rate-monitors.md) — Tracks frame rates and logs errors during simulated stress to identify frontend performance degradation.
