Skip to main content
Every Decipher test is a sequence of steps. Each step has a type that determines what it does during a test run.
Each step performs one action. To test a multi-part interaction (e.g., click a field, then type into it), use multiple steps.

Action

The most common step type. An action step performs a single user interaction on the page. Supported action types:
ActionDescription
ClickClick on an element
FillType text into an input field
HoverHover over an element
PressPress a keyboard key or shortcut
UploadUpload a file to a file input
Each action step includes a natural-language description of the target element (e.g., “Click the Submit button”) and the selectors Decipher uses to locate it on the page. A navigate step goes to a specific URL. Use this to start a test on a particular page or to jump to a different part of your application mid-test.

Wait

A wait step pauses the test for a specified duration. This is useful when you need to wait for an animation, a background process, or a delayed API response before continuing. The default wait duration is 5 seconds.

Assert

An assert step verifies that something is true on the page — for example, that a success message is visible or that a specific element exists. If the assertion fails, the test fails. Assert steps wait up to 2 seconds by default for the condition to become true before failing.

Upload

An upload step attaches one or more files to a file input on the page. See File Uploads for details on supported file types and size limits.

Conditional

A conditional step checks a condition and then performs an action based on the result. It has two parts:
  • If — The condition to check (e.g., “a cookie banner is visible”)
  • Then — The action to take if the condition is true (e.g., “click the Accept button”)
If the condition is not met, the step is skipped and the test continues. This is useful for handling elements that may or may not appear, like cookie banners, popups, or A/B test variations.

Rules

  • One action per step — Each step performs exactly one interaction. Break multi-part interactions into separate steps.
  • Assertions don’t count as actions — Assert steps validate state but don’t interact with the page.
  • Conditionals are non-blocking — If the condition isn’t met, the test moves on to the next step without failing.