Skip to main content

Press

The Press class is an action class in the Screenplay pattern designed for use with the @testla/screenplay library. This class enables actors to simulate pressing specified keys on the keyboard using the BrowseTheWeb ability provided by Testla.

Extends

This class extends the abstract FrameEnabledAction which extends Action class from Core.

Methods

performAs

public async performAs(actor: Actor): Promise<void>;
  • Description: Simulates pressing the specified key(s) on the keyboard.
  • Parameters:
    • actor - The actor performing this action.
  • Returns: Promise<void> - Returns when the key(s) are pressed.

key

public static key(keys: string): Press;
  • Description: Creates a new instance of the Press class specifically for pressing the specified key(s) on the keyboard.
  • Parameters:
    • keys - The key(s) to press. Multiple keys can be pressed by concatenating with "+" (e.g., Shift+A).
  • Returns: Press - Returns a new Press instance.

sequentially

public static sequentially(selector: Selector, input: string, options?: SelectorOptions & Maskable): Press;
  • Description: Creates a new instance of the Press class types the given input into the element specified by the selector.
  • Parameters:
    • selector - The selector of the source element.
    • input - The input to type into the element.
    • options - (optional) Advanced selector lookup and masking options.
  • Returns: Promise<void> - Returns when the key(s) have been pressed.
info

As of 1.7.0 input values can be masked in the logs via the option { maskInLogs: true } which is suggested for handling passwords or other clasified information in tests.

Methods inherited from FrameEnabledAction

inFrame

Introduced in: 1.3.0

A webpage may be associated with multiple Frame objects. Each webpage possesses a primary frame and interactions at the page level such as clicking, are typically performed within this main frame. In addition to the main frame, a webpage can incorporate extra frames using the HTML 'iframe' tag. These supplementary frames can be targeted for interactions occurring within the specific frame. To reach elements in those frames you can use the inFrame() method to find the specified frame selector using the BrowseTheWeb ability. You can also chain frame objects to go down to the inner most iframe using the inFrame() API. Be aware the sequence starts with outer most iframe and goes down to inner most iframe.

public inFrame(frameSelector: FrameSelector): Check;
  • Description: Finds the specified frame selector using the BrowseTheWeb ability.
  • Parameters:
    • frameSelector - The FrameSelector.
  • Returns: Action - Returns the current action.

Usage:

// Find an element in a specific frame
await actor.attemptsTo(
Find.element('#myElement').inFrame('#myFrame'),
);

// Find an element in nested frames
await actor.attemptsTo(
Find.element('#content')
.inFrame('[name="frameTop"]')
.inFrame('[name="frameMiddle"]'),
);

Methods inherited from Core Action

orSkipOnFail

Introduced in core: 0.5.0

public get orSkipOnFail(): Action;
  • Description: Allows to skip an action on fail.
  • Returns: Action - Returns the current action.

Usage:

// Would skip the step on error without breaking the execution
await actor.attemptsTo(
Do.something().orSkipOnFail,
);

withAbilityAlias

Introduced in core: 0.3.0

public withAbilityAlias(alias: string): Action;
  • Description: Defines the ability alias to be used during execution.
  • Parameters:
    • alias - The alias.
  • Returns: Action - Returns the current action.

Usage:

await actor.attemptsTo(
Do.something().withAbilityAlias('myAlias'),
);