Skip to main content
A module is a named sequence of steps you can call from any test. Use modules to share login flows, setup fixtures, or repeated user journeys.
Modules can’t call other modules.
Editing a module updates every test that uses it.

Example

A module is a YAML file that ends in .module.yaml. Call it from any test with a Module step.
log-in.module.yaml
checkout.test.yaml

Parameters

Parameters let a single module handle different inputs. Declare them under parameters on the module, then reference them inside steps via {{ env.PARAM_NAME }} (or env.PARAM_NAME in JavaScript steps).
log-in.module.yaml

Defaults vs instance inputs

Each parameter can have a default value on the module and an instance input on a specific Module step. Instance inputs take precedence. Each input value is one of:
  • A shorthand string: evaluated as a JavaScript expression (e.g. env.PARAM, someFn() + 1).
  • { string: ... }: a literal string. Use this for fixed text values.
  • { javascript: ... }: the script’s return value is bound to the parameter. Equivalent to the shorthand but supports multi-line scripts.
checkout.test.yaml

Control flow

Default retries

Set Default retries under the module’s Control flow tab to retry every invocation of the module a fixed number of times on failure. Invocations that set their own retries value override the module default. Use this for flaky setup modules (e.g. a login module that sometimes fails on slow environments) instead of setting retries on every invocation.

Caching

Modules are uncached by default and always execute. Enable caching to skip a module when its cache key and inputs are unchanged. The module’s return value (the return value of its last step) is also cached. Configure caching with module-level fields:
log-in.module.yaml
Override the key or expiry on a single Module step with cacheConfig:
checkout.test.yaml

Authentication modules

Set autoAuth: true (the editor’s Treat as auth module) to save and restore browser auth state between runs. Momentic persists:
log-in.module.yaml
Set the cache expiry shorter than your session’s expiry. Add a final step that verifies the authenticated state so the cache only saves when login succeeded.
See Authentication strategies and Cache authenticated sessions for the full workflow.