at.environment
The at.environment namespace is how scripts read and write environment variables. Anything you set here is persisted to the active environment and is available in subsequent requests — both as the return value of at.environment.get() and as a {{varName}} placeholder in URLs, headers, bodies, query parameters, and auth fields.
Three Methods
- •at.environment.get(key) — returns the value of the variable as a string, or undefined if it does not exist.
- •at.environment.set(key, value) — writes a variable to the active environment. The value is coerced to a string. The change is visible to subsequent get() calls in the same script immediately, and is persisted to disk after the script finishes.
- •at.environment.has(key) — returns true if the variable exists (either a pending write from this script, or an existing stored value), otherwise false.
Where Environment Variables Are Resolved
Variables stored via at.environment.set()(or defined from the Environment Manager) are referenced with the {{varName}} syntax and are resolved at request-build time in every field that supports variable interpolation:
- •URL: https://{{base_url}}/api/users
- •Headers: Authorization: Bearer {{token}}
- •Request body: {"api_key":"{{api_key}}"}
- •Query parameters: key={{api_key}}
- •Authentication: Bearer token, Basic Auth, API Key fields.
- •Flow assertions: the expected value side of an assertion.
Which Environment at.environment Reads
The environment that a script reads from and writes to depends on where the script is running:
- •Standalone request (Box): the active global environment from the Environment Manager.
- •Project request: the active environment of the project that owns the request.
- •Flow step or Flow Before All / After All: the active environment of the flow group.
- •Load test step or Load Test Before All / After All: the active environment of the load test folder.
Switching the active environment from the top bar changes which variables these scripts see the next time they run.
Pre-Script → Post-Script Bridging
When a pre-script calls at.environment.set("foo", "bar"), the post-script for the same request can immediately read that value back with at.environment.get("foo")— even though the write has not yet been persisted to disk. Atrahasis carries pre-script environment changes forward into the post-script as pending overrides, so the two scripts always agree on the state of the environment.
Example — Login Flow with Token Storage
Post-script on a login request:
// Extract tokens from a login response and save them to the environment.
if (at.response.status === 200) {
const data = at.response.json();
at.environment.set("auth_token", data.access_token);
at.environment.set("refresh_token", data.refresh_token);
at.environment.set("user_id", String(data.user.id));
console.log("Tokens saved to environment");
}
// Subsequent requests can now use:
// URL: https://{{base_url}}/api/users/{{user_id}}
// Header: Authorization: Bearer {{auth_token}}