Getting started with Artillery Cloud
Overview
Artillery Cloud is SaaS platform that provides a centralized dashboard for managing and analyzing load test results.
- Monitor load test runs in real-time
- View performance metrics generated by load test runs (response times, errors, custom
ensure
checks, and custom metrics) - Create custom charts for application-specific metrics
- Organize load test reports by project or team
- Share tests with external stakeholders
Artillery Cloud just added support for Playwright Test Runner reporting. You can monitor Playwright tests in real-time, view HTML reports with screenshots and traces, and integrate with GitHub Actions.
How it works
All load tests still run completely within your own environment (i.e. locally, on AWS Lambda, AWS Fargate or Azure Container Instances). The use of the cloud dashboard is opt-in per test run. The CLI will send test reports to the cloud dashboard only if the --record
flag is used.
Get started
Create an Artillery Cloud account
Create an Artillery Cloud account by signing in with your GitHub account on https://app.artillery.io
Upgrade Artillery CLI to latest version
Artillery CLI v2.0.0
or later is required to use Artillery Cloud. We recommend always running the latest release of the Artillery CLI.
Upgrade with:
npm install -g artillery@latest
Create an API key
To enable the Artillery CLI to send data to Artillery Cloud you will need an API key.
Sign in to the dashboard, go to Settings → API Keys, and create a new API key.
Configure the CLI to send data to Artillery Cloud
The use of Artillery Cloud is opt-in. You have to tell the CLI when you want test results to be sent to the cloud dashboard.
To record a test run to the dashboard, use the --record
and --key
flags with the artillery run
command. For example, if you’re currently running load tests with:
artillery run my-service-test.yml
To enable cloud dashboard reporting, add --record
and set the API key with --key
:
artillery run my-service-test.yml --record --key 0x12345_my_api_key
The API key may also be set via the ARTILLERY_CLOUD_API_KEY
environment
variable. When that variable is set, the --key
flag may be omitted.
Best practices
Naming tests
By default, Artillery Cloud will use the name of the test script file as the name of the test.
You can override this by using the --name
flag.
artillery run service-foo.yml --name "service-foo-spike-test" --record --key $MY_ARTILLERY_CLOUD_KEY
The name of the test is used in several places in the dashboard:
- The name shown in the list of test runs
- The name of the group in group view
- When showing other runs of the same test in Comparison View
- As the basis for calculating and showing performance trends across multiple runs
Using tags
Having a consistent strategy for tagging your tests will allow you to filter and search for tests more easily, and to aggregate and analyze test results across multiple runs.
Use the --tags
flag to pass a comma-separated list of tags to your test script, for example:
artillery run my-service-test.yml --tags "env:staging,service:auth,version:1.2.3" --record --key $MY_ARTILLERY_CLOUD_KEY
Here are some recommendations we have seen work well:
env
— different environments where the application is deployed
env
— different environments where the application is deployedFor example, you may use your staging environment to gather baselines under high load, and your production environment to run synthetic tests at lower loads.
Examples: env:staging
, env:prod
, env:qa
service
— name of the application or service
service
— name of the application or serviceExamples: service:auth
, service:billing
version
— version ID of the application or service
version
— version ID of the application or serviceFor example, you could use git rev-parse --short HEAD
to get a short Git SHA to tag your test with.
Examples: version:a231b3e
, version:1.2.3
type
— type of load test
type
— type of load testFor example, you may run nightly tests to gather baselines on the environment, but also run a pre-release soak test in the same environment every two weeks.
Examples: type:spike
, type:baseline
, type:soak
, type:acceptance
ci
— whether a run was triggered from CI or not
ci
— whether a run was triggered from CI or notExamples: ci:true
, ci:jenkins
team
— name of the team running the test
team
— name of the team running the testExamples: team:billing
, team:capybara
actor
— ID of the person or workflow that triggered the test
actor
— ID of the person or workflow that triggered the testFor example, in GitHub Actions, you can use the github.actor
or github.job
variables.
Examples: actor:github-post-deployment-check
, actor:deepak@example.com
Troubleshooting
Error: unable to reach Artillery Cloud API
If you see this error message, it means that the CLI is unable to reach the Artillery Cloud API.
The most common cause of this error is a corporate proxy or firewall blocking POST requests to the Artillery Cloud API (https://app.artillery.io ).
To check if requests are blocked run the following command:
MacOS or Linux
curl -X POST -H "user-agent: Artillery CLI v2.0.23" https://app.artillery.io/api/ping
You should see:
{"message":"pong"}
If you see an error message, such as a network timeout, or a message indicating that the request was blocked, you will need to work with your network administrators to allow requests to the Artillery Cloud API.
In the meantime, you can try running Artillery from a machine on a different network (e.g. from your home network, or from a cloud instance).