What is an engine?

An Artillery engine provides actions which may be used in a virtual user scenario. For example, the built-in HTTP engine provides actions such as get, post, put, and delete for working with HTTP-based APIs. The WebSocket engine provides a send action for sending messages over a WebSocket connection. Each scenario is controlled by an engine, for example the following "Hello World" scenario for sending a message to a WebSocket endpoint:

- name: Send hello world
  engine: websocket
    - send: 'hello world!'

If an engine isn't specified, the http engine will be used by default.

Protocol and application-level logic

Engines are very flexible and aren't limited to implementing protocols only. For example the built-in Playwright engine allows real headless browsers to be controlled via Playwright (opens in a new tab), and the artillery-engine-kinesis (opens in a new tab) engine implements support for AWS Kinesis (opens in a new tab)-specific operations.

Custom engines

Artillery has an engine interface for building custom engines.