explaingit

artilleryio/artillery

8,979JavaScriptAudience · ops devopsComplexity · 3/5LicenseSetup · moderate

TLDR

A load testing tool that simulates hundreds or thousands of users hitting your website or API at once so you can find performance problems before real traffic does.

Mindmap

mindmap
  root((Artillery))
    What it does
      Load testing
      Traffic simulation
      Performance reports
    Protocols
      HTTP and REST
      WebSocket
      gRPC
    Features
      Browser testing via Playwright
      Distributed on AWS
      CI integration
    Setup
      YAML scenario file
      Node.js CLI
      AWS account for scale
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run a load test that ramps to hundreds of simulated users against your API before launch to find bottlenecks.

USE CASE 2

Test real browser sessions with Playwright to simulate traffic through JavaScript-heavy pages.

USE CASE 3

Distribute a large-scale load test across AWS Lambda without managing any server infrastructure.

USE CASE 4

Integrate performance tests into a CI pipeline to catch regressions in response time automatically.

Tech stack

JavaScriptNode.jsPlaywrightAWS LambdaAWS Fargate

Getting it running

Difficulty · moderate Time to first run · 30min

Distributed testing on AWS Lambda requires an AWS account and IAM permissions, some Azure features require a paid commercial license.

Most code is MPL 2.0, you can use it freely but must share changes to the covered files, some Azure-specific parts require a paid commercial agreement for production use.

In plain English

Artillery is a tool for load testing, which means it simulates many users hitting your website, API, or application at the same time to see how the system holds up under pressure. Developers and engineering teams use it before launching a new product or after making major changes, to find out whether the servers will stay responsive when real traffic arrives. You describe a test scenario in a configuration file, specifying things like the sequence of requests to make, how many simulated users to ramp up to, and over what time period. Artillery then runs those scenarios and produces a report showing response times, error rates, and throughput. It supports a variety of protocols beyond standard web requests, including WebSocket (used for real-time features like chat), gRPC (a format common in backend services), and others. One notable feature is that tests can run on real web browsers rather than just simulating raw network requests. This is done through integration with Playwright, a browser automation tool, which lets you test the full experience a user would have, including JavaScript-heavy pages that only work correctly inside a browser. For running tests at large scale, Artillery can distribute the load across many machines on AWS Lambda or AWS Fargate, which are cloud computing services that handle infrastructure automatically. The tool also connects with more than 20 monitoring and continuous integration services. Most of the code is licensed under MPL 2.0, an open source license. Some Azure-specific parts use a different license that requires a commercial agreement for production use on that platform.

Copy-paste prompts

Prompt 1
Write an Artillery load test scenario that ramps from 10 to 500 users over 2 minutes against my REST API at /api/v1/products.
Prompt 2
How do I use Artillery with Playwright to simulate real browser login sessions for a React single-page app?
Prompt 3
Set up an Artillery test that runs distributed on AWS Lambda and reports results to my Datadog dashboard.
Prompt 4
How do I configure Artillery to load test a WebSocket endpoint and verify that messages arrive within 200ms?
Open on GitHub → Explain another repo

← artilleryio on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.