Artillery is an open-source, TypeScript load testing platform that runs production-grade load and browser tests from a laptop or from serverless infrastructure, and it is built for developers, QA engineers, and platform teams who need to exercise HTTP APIs, GraphQL, WebSocket, Socket.io, gRPC, and Kinesis services at cloud scale.
What it is
Artillery is a load testing platform written in TypeScript and published under the Mozilla Public License 2.0. It describes itself as a complete platform rather than a single runner: it covers test definition, distributed execution, browser-driven load, and observability integration in one project. Its topics sit across API tooling, browser automation, AWS, and OpenTelemetry, which reflects the breadth of what it is expected to drive. The project lives at artillery.io and is distributed as a GitHub repository carrying ninety-plus KB of history, given its 9,080 stars and 565 forks.
The concrete problem it replaces is the combination of a local-only load generator and the manual DevOps work needed to make it distributed. Artillery scales load tests out on top of AWS Lambda or AWS Fargate with no infrastructure to set up or manage, so a team that would otherwise provision and tune a fleet of load generators can instead push the same test to serverless capacity. It also replaces the practice of approximating real browser behaviour with synthetic HTTP calls, because it can load test with real headless browsers through Playwright.
Key capabilities
- Distributed, cloud-native load testing out of the box and at no cost, scaling workers on AWS Lambda or AWS Fargate.
- Browser-based load testing with Playwright, using real headless browsers rather than simulated requests.
- Protocol coverage across HTTP, WebSocket, Socket.io, gRPC, and Kinesis.
- Workload modeling with request chains, multiple steps, and transactions to emulate complex user behaviour.
- More than twenty integrations for monitoring, observability, and CI/CD, including OpenTelemetry, reflected in the
opentelemetry and otel topics.
- A plugin API that allows the engine to be extended and customized.
- Execution from any Node.js module, so tests can be embedded in existing JavaScript tooling.
Who uses it and how
- AWS-centric teams that want distributed load without operating load generator hosts, deploying workers onto Lambda or Fargate instead.
- Performance engineers validating single-page applications and other browser-heavy front ends, running Playwright-driven load through real headless browsers.
- Platform and DevOps groups wiring load tests into CI/CD, using the CI/CD integrations to keep performance checks in the pipeline.
- Teams running service meshes and streaming pipelines who need to exercise gRPC or Kinesis endpoints alongside REST and WebSocket traffic.
- Observability-minded operators who export metrics and traces to their existing stack through the OpenTelemetry integration.
Getting started
The repository directs readers to the readme under packages/artillery and to the documentation at https://www.artillery.io, and the distributed execution path described in the README is to scale tests out on AWS Lambda or AWS Fargate, which requires no infrastructure to provision or manage.
How it compares
The facts provided do not name any commercial products that Artillery replaces, and they do not name comparable load testing tools either.
When to use it — and when not to
A self-hoster must be prepared to run tests locally or to hand execution to AWS, since the documented scale-out path depends on Lambda or Fargate rather than a self-managed cluster. Teams planning to run Artillery on Azure for commercial or production use should note that the Azure-specific modules are licensed under the BSL, not the MPL 2.0 that covers most of the repository, and that production use there requires a commercial licence. The README excerpt available here is short on installation and quickstart detail, and the project carries 487 open issues, so anyone evaluating it should check the documentation site and issue tracker rather than assume a frictionless setup.