Send Request Step
The Send Request step is the most important and most commonly used step in Aethrix test automation. It sends an HTTP, SOAP, REST, or GraphQL request to a service endpoint and captures the response for assertion and variable mapping.
When to Use
- Calling a REST API endpoint in an automated test
- Sending a SOAP request in an integration test
- Authenticating and extracting a token for subsequent steps
- Chaining requests: extract an ID from one response and use it in the next request
Adding the Step
- Open (or create) a test case.
- Click Add Step → select Send Request.
- The step editor opens.
:::info Screenshot needed — light/dark 📸
send-request-step-editor-light.png and send-request-step-editor-dark.png — Send Request step editor with all tabs visible (Request, Authentication, Options, Mapping, Assertions)
:::
Configuration Tabs
Request Tab
| Field | Description |
|---|---|
| Service / Operation | Optional. Select an imported API operation from the drop-down. When selected, the URL, method, and body are pre-populated from the API definition. |
| URL | The service's base address. The engine appends the operation's path at send time, so write https://api.example.com — not https://api.example.com/pets/1, which would carry the path twice. Used as written when Default is the active environment; under any other environment this field is read-only and shows that environment's endpoint for the selected service instead — see Which URL a Request Uses. ${variables} resolve in both cases. |
| Method | HTTP method: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS |
| Headers | Key/value pairs for HTTP request headers (e.g., Content-Type: application/json, Accept: application/xml) |
| Body | Request body for POST, PUT, PATCH. Can be raw text, JSON, XML, or edited via the Object Editor. |
:::info Screenshot needed — light/dark 📸
send-request-request-tab-light.png and send-request-request-tab-dark.png — Request tab with URL, method, headers and body configured
:::
Using Imported Operations
If you have imported an API specification, click the Service / Operation drop-down to select a service and operation. This:
- Pre-fills the URL with the specification's server base address; the operation's own path is kept separately and added to it at send time
- Sets the correct HTTP method
- Opens a typed body editor based on the request schema
Variables, path tokens and query tokens
Three different placeholders meet in one request, and only the first is a variable:
| Written as | Filled by | Where it can appear |
|---|---|---|
${CustomerId} | a variable: case, suite, project or the active environment's variables, plus OS environment when that setting is on | the URL, the operation path, header names and values, cookies, the body, assertion expected values, most step fields |
{customerId} | the request object's URI-path value — the editor field the operation's schema tags as a path parameter | inside the operation's path, which is appended to the URL |
?limit=… | the request object's query fields, appended to the path at send time | not typed in the URL box |
URL field https://${BaseUrl}
operation path /api/v1/customers/{customerId}?page=${Page}
on the wire https://api.example.com/api/v1/customers/42?page=3
Variable names are matched case-sensitively, and a name that resolves to nothing stays in the message exactly as written — the send then fails with the text it actually tried to use, rather than quietly dropping the value.
Variables can be defined at Project, Environment, Suite, or Case scope.
Authentication Tab
Configure the authentication method for this request.
| Mode | Description |
|---|---|
| None | No authentication header is added |
| Basic | HTTP Basic authentication (Authorization: Basic <base64>) |
| Bearer Token | Authorization: Bearer <token> |
| API Key | Custom header or query parameter for API key |
| OAuth 2.0 | Use an OAuth 2.0 access token stored in a variable |
| Windows (NTLM/Kerberos) | Windows Integrated Authentication |
| Certificate | Mutual TLS with a client certificate |
:::info Screenshot needed — light/dark 📸
send-request-auth-tab-light.png and send-request-auth-tab-dark.png — Authentication tab with Bearer Token mode selected
:::
Options Tab
| Field | Description |
|---|---|
| Timeout (ms) | Maximum wait time for a response. Default: 30000 (30 seconds). |
| Follow Redirects | Whether to automatically follow HTTP 3xx redirects. |
| Ignore SSL Errors | Skip SSL certificate validation (useful for self-signed certificates in test environments). |
| Content Type | Override the request Content-Type header for body serialization. |
| Accept | Override the Accept header for response deserialization. |
Mapping Tab
Extract values from the response and store them in variables for use in later steps.
:::info Screenshot needed — light/dark 📸
send-request-mapping-tab-light.png and send-request-mapping-tab-dark.png — Mapping tab with several mapping rules configured
:::
Adding a Mapping Rule
- Click Add Mapping Rule.
- Configure:
| Field | Description |
|---|---|
| Source | Where to extract the value from: Response Body, Response Header, Status Code |
| Path | JSONPath (e.g., $.data.id), XPath (e.g., //UserId/text()), or header name |
| Target Variable | Name of the variable to set |
| Scope | Project, Environment, Suite, or Case |
Common Mapping Examples
Source: Response Body
Path: $.access_token
Target: AccessToken
Scope: Suite
Source: Response Body
Path: //OrderId/text()
Target: CreatedOrderId
Scope: Case
Assertions Tab
Define pass/fail conditions on the response. A failed assertion marks the test case as Failed.
:::info Screenshot needed — light/dark 📸
send-request-assertions-tab-light.png and send-request-assertions-tab-dark.png — Assertions tab with status code and JSON path assertions configured
:::
Assertion Types
| Type | Description | Example |
|---|---|---|
| Status Code | Assert the HTTP status code | 200 |
| JSON Path | Assert a JSON field value via JSONPath | $.status equals "active" |
| XPath | Assert an XML element value | //Status equals OK |
| Response Header | Assert a specific response header value | Content-Type contains application/json |
| Contains | Assert the body contains a substring | body contains "success" |
| Response Time | Assert the response time is within threshold | < 2000 ms |
Adding an Assertion
- Click Add Assertion.
- Select the assertion type.
- Configure the expected value.
- Optionally enter a descriptive Name for the assertion (shown in the report).
Running the Step
When the test case is executed, the step:
- Takes the host from the active environment (the step's own URL under
Default, the environment's service endpoint otherwise), then substitutes variables in the URL and body. - Sends the HTTP request.
- Waits for the response (up to the configured timeout).
- Evaluates all assertions — marks the step passed or failed.
- Applies mapping rules — writes extracted values to the specified variables.
- Records the request/response trace in Diagnostics.
Diagnostics
After the step runs, click Diagnostics to see:
- Full request URL, method, headers, and body (as sent)
- Response status code, headers, and body (as received)
- Elapsed time
- Deserialization warnings (if any)
- Fields not sent (REST, gRPC, and Kafka JSON bodies): a body key that matches no field of the imported model is named here because it will not be sent — up to five keys, then a count, with a suggestion when one is close to the model's spelling (
photoUrls→photo_urls). The step still runs; the request goes out as the model understands it. Response-side fields are never reported, and a body sent as a raw frame is not scanned. - Transport-level errors (connection refused, timeout, SSL errors)
:::info Screenshot needed — light/dark 📸
send-request-diagnostics-light.png and send-request-diagnostics-dark.png — Diagnostics panel showing request/response trace
:::
Tips
- Always add a Status Code assertion to catch unexpected errors.
- Use Mapping to chain requests: extract an ID from a create-response and use it in subsequent read/update/delete requests.
- For OAuth flows, use the OAuth 2.0 Get Token step before the Send Request step, then reference the token via
${AccessToken}. - Use the Object Editor for complex nested JSON or XML bodies.
- Keep assertion names descriptive — they appear in the test report.