Statements

The Statements category contains the following test actions.

Action icon Define Element Selector

Action icon Define Function

Define Element Selector

The Define Element Selector action allows you to create an element selector that identifies a webpage element.

To create an element selector:

  1. Specify the element selector's name in the Name field.

    Important

    Selector names must be unique in a test. You also cannot use the following reserved words: t, fixture, test, Selector, ClientFunction, RequestLogger, RequestMock, RequestHook.

  2. Use the element selector constructor to define the element selector.

Action icon

You can use the created element selectors in on-page actions and assertions. The main benefits are:

  • The element selector's short name makes tests easier to read.

  • You can define an element selector once and use it in several test actions. If the tested webpage changes, you need to edit the element selector in the Define Element Selector action, but do not need to edit other actions. This makes your tests easier to maintain.

    Benefits

Define Function

The Define Function action allows you to create a function that returns data from the tested webpage. You can then verify this data in assertions.

Important

This type of function cannot return non-serializable objects (DOM elements, window, etc.). Use element selectors instead.

To create a function:

  1. Specify the fun—Ātion's name in the Name field.

    Important

    Function names must be unique in a test. You also cannot use the following reserved words: t, fixture, test, Selector, ClientFunction, RequestLogger, RequestMock, and RequestHook.

  2. Write the code. Use the return statement to return the desired data.

Example

The following image demonstrates how to define a function that returns the URL of the currently open page.

Define Function action

Then you can verify if the returned URL matches the expected URL using the Deep Equal assertion.

Use functions in assertions

Limitations for Functions

  • Defined functions cannot return non-serializable objects (DOM elements, window, etc.).
  • Do not modify a tested webpage within functions. To interact with the webpage, use on-page actions.
  • You cannot use generators or async/await syntax within functions. To run asynchronous code, use a Promise within a function. The function is complete only when this Promise resolves.

    Function with promise

  • You cannot use element selectors within functions.

  • Currently, you cannot pass arguments to functions. The feature is in progress.