Skip to main content

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​

  1. Open (or create) a test case.
  2. Click Add Step → select Send Request.
  3. 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​

FieldDescription
Service / OperationOptional. Select an imported API operation from the drop-down. When selected, the URL, method, and body are pre-populated from the API definition.
URLThe 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.
MethodHTTP method: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
HeadersKey/value pairs for HTTP request headers (e.g., Content-Type: application/json, Accept: application/xml)
BodyRequest 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 asFilled byWhere it can appear
${CustomerId}a variable: case, suite, project or the active environment's variables, plus OS environment when that setting is onthe 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 parameterinside the operation's path, which is appended to the URL
?limit=…the request object's query fields, appended to the path at send timenot 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.

ModeDescription
NoneNo authentication header is added
BasicHTTP Basic authentication (Authorization: Basic <base64>)
Bearer TokenAuthorization: Bearer <token>
API KeyCustom header or query parameter for API key
OAuth 2.0Use an OAuth 2.0 access token stored in a variable
Windows (NTLM/Kerberos)Windows Integrated Authentication
CertificateMutual 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​

FieldDescription
Timeout (ms)Maximum wait time for a response. Default: 30000 (30 seconds).
Follow RedirectsWhether to automatically follow HTTP 3xx redirects.
Ignore SSL ErrorsSkip SSL certificate validation (useful for self-signed certificates in test environments).
Content TypeOverride the request Content-Type header for body serialization.
AcceptOverride 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​

  1. Click Add Mapping Rule.
  2. Configure:
FieldDescription
SourceWhere to extract the value from: Response Body, Response Header, Status Code
PathJSONPath (e.g., $.data.id), XPath (e.g., //UserId/text()), or header name
Target VariableName of the variable to set
ScopeProject, 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​

TypeDescriptionExample
Status CodeAssert the HTTP status code200
JSON PathAssert a JSON field value via JSONPath$.status equals "active"
XPathAssert an XML element value//Status equals OK
Response HeaderAssert a specific response header valueContent-Type contains application/json
ContainsAssert the body contains a substringbody contains "success"
Response TimeAssert the response time is within threshold< 2000 ms

Adding an Assertion​

  1. Click Add Assertion.
  2. Select the assertion type.
  3. Configure the expected value.
  4. Optionally enter a descriptive Name for the assertion (shown in the report).

Running the Step​

When the test case is executed, the step:

  1. 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.
  2. Sends the HTTP request.
  3. Waits for the response (up to the configured timeout).
  4. Evaluates all assertions — marks the step passed or failed.
  5. Applies mapping rules — writes extracted values to the specified variables.
  6. 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.

Next Steps​