Skip to content

@shellygo/cypress-test-utils - v4.1.10 / Modules / CypressHelper

Class: CypressHelper

Classdes

CypressHelper exposes the following public properties:

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new CypressHelper(options?)

Parameters

Name Type
options? CypressHelperOptions

Properties

get

get: Object

The get property will hold methods which will give our tests access to the “output” of the component in a “black box” fashion

Type declaration

Name Type
assertableStub (stub: any) => Chainable<JQuery<any>>
bySelector (selector: string, attribute?: string) => Chainable<JQuery<HTMLElement>>
currentLocation () => Chainable<string>
element (selector: string, index?: number) => Chainable<JQuery<HTMLElement>>
elementByAttribute (attribute: string, selector: string) => Chainable<JQuery<HTMLElement>>
elementBySelector (selector: string, attribute?: string) => Chainable<JQuery<HTMLElement>>
elementByTestId (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
elementByText (content: string | RegExp, index?: number) => Chainable<JQuery<HTMLElement>> | Chainable<undefined>
elementComputedStyleProperty (dataTestID: string, styleProperty: keyof CSSStyleDeclaration, __namedParameters?: { index?: number ; pseudoElement?: string }) => Chainable<null | string | number | CSSRule | (property: string) => string | (property: string) => string | (index: number) => string | (property: string) => string | (property: string, value: null | string, priority?: string) => void>
elementsAttribute (dataTestID: string, attributeName: string, index?: number) => Chainable<undefined | string>
elementsComputedStyle (dataTestID: string, index?: number, pseudoElement?: string) => Chainable<CSSStyleDeclaration>
elementsProperty (dataTestID: string, propertyName: keyof JQuery<HTMLElement>, index?: number) => Chainable<any>
elementsStyleAttribute (dataTestID: string, attributeName: string, index?: number) => Chainable<PlainObject<string>>
elementsText (dataTestID: string, index?: number) => Chainable<string>
env (key: string) => any
fixture (alias: string) => Chainable<any>
focusedElement () => Chainable<JQuery<HTMLElement>>
imageSnapshot (name: string, __namedParameters?: SnapshotOptions) => Chainable<DiffSnapshotResult>
inputValue (dataTestID: string, index?: number) => Chainable<string | number | string[]>
nthBySelector (selector: string, index?: number, attribute?: string) => Chainable<JQuery<HTMLElement>>
numberOfElements (dataTestID: string) => Chainable<number>
numberOfRequests (alias: string) => Chainable<number>
requestBody (alias: string) => Chainable<any>
requestHeader (alias: string) => Chainable<{ [key: string]: string | string[]; }>
requestQueryParams (alias: string) => Chainable<{ [k: string]: string; }>
requestUrl (alias: string) => Chainable<string>
responseBody (alias: string) => Chainable<any>
responseHeader (alias: string) => Chainable<{ [key: string]: string | string[]; }>
spy (name: string) => Chainable<JQuery<HTMLElement>>
spyFromFunction (func: Function) => Chainable<JQuery<HTMLElement>>
stub (name: string) => Chainable<JQuery<HTMLElement>>
window () => Chainable<AUTWindow>

assertableStub: (stub: any) => Chainable<JQuery<any>>

Get stub as Cypress.Chainable

Example

const serviceMock : Service = helper.given.stubbedInstance(Service);
helper.get.assertableStub(serviceMock.function).should('have.been.called'));

Deprecated

The method should not be used anymore, use then instead

then(serviceMock.function).shouldHaveBeenCalled();


bySelector: (selector: string, attribute?: string) => Chainable<JQuery<HTMLElement>>

Get one or more DOM elements by selector.

Example

Get an element with shape="filter-grid"

<clr-icon shape="filter-grid"></clr-icon>
helper.get.bySelector("filter-grid", "shape")


currentLocation: () => Chainable<string>

Get the current URL of the page that is currently active.


element: (selector: string, index?: number) => Chainable<JQuery<HTMLElement>>

Get one or more DOM elements by selector. The querying behavior of this command matches exactly how $(…) works in jQuery. *** Note! Using this method may lead to flakey tests! You should use get.elementByTestId ***

Example

get.element('.list>li', 3)    // Yield the <li>'s in <.list>
get.element('ul li:first')
get.element('.dropdown-menu')

elementByAttribute: (attribute: string, selector: string) => Chainable<JQuery<HTMLElement>>

Get one or more DOM elements by attribute.

Example

Get an element with shape="filter-grid"

<clr-icon shape="filter-grid"></clr-icon>
helper.get.byAttribute("shape", "filter-grid")


elementBySelector: (selector: string, attribute?: string) => Chainable<JQuery<HTMLElement>>

Get one or more DOM elements by selector. Same as bySelector

Example

Get an element with shape="filter-grid"

<clr-icon shape="filter-grid"></clr-icon>
helper.get.elementBySelector("filter-grid", "shape")


elementByTestId: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Get A DOM element at a specific index from elements.

Example

helper.when.dragAndDrop(
  helper.get.elementByTestId('selected-item', 2),
  helper.get.elementByTestId('available-items')

elementByText: (content: string | RegExp, index?: number) => Chainable<JQuery<HTMLElement>> | Chainable<undefined>

Get the DOM element containing the text. DOM elements can contain more than the desired text and still match. Additionally, Cypress prefers some DOM elements over the deepest element found. *** Note! Using this method may lead to flakey tests! You should use get.elementByTestId ***

Example

then(helper.get.elementByText("Avamar")).shouldExist();

elementComputedStyleProperty: (dataTestID: string, styleProperty: keyof CSSStyleDeclaration, __namedParameters?: { index?: number ; pseudoElement?: string }) => Chainable<null | string | number | CSSRule | (property: string) => string | (property: string) => string | (index: number) => string | (property: string) => string | (property: string, value: null | string, priority?: string) => void>

Returns a specific style of an element, including pseudo elements if specified.

Example

helper.get.elementSpecificStyle('element-test-id', 'backgroundImage')
* ```ts helper.get.elementSpecificStyle('element-test-id', 'backgroundImage', {index: 3, pseudoElement: ':before'})
-----

**elementsAttribute**: (`dataTestID`: `string`, `attributeName`: `string`, `index?`: `number`) => `Chainable`<`undefined` \| `string`\>

**`Example`**

```ts
then(helper.get.elementsAttribute('avatar-picture', 'style')).shouldInclude('background-image: url("assets/avatar/def-user-male.png")')


elementsComputedStyle: (dataTestID: string, index?: number, pseudoElement?: string) => Chainable<CSSStyleDeclaration>

Returns element's computed style, including pseudo elements

Example

helper.get.elementsComputedStyle('element-test-id', 0, ':before')

elementsProperty: (dataTestID: string, propertyName: keyof JQuery<HTMLElement>, index?: number) => Chainable<any>

Get element's property value

Example

get.elementsProperty("image", "height")

elementsStyleAttribute: (dataTestID: string, attributeName: string, index?: number) => Chainable<PlainObject<string>>

Returns element's style attribute

Example

get.elementsStyleAttribute("button-data-hook", "background-color")

elementsText: (dataTestID: string, index?: number) => Chainable<string>

Example

then(helper.get.elementsText("parent-job-name", 3)).shouldInclude("Job 3 Name")

env: (key: string) => any

Returns specific environment variable or undefined

Example

// Keeping password in cypress.config file

e2e: {
 env: {
   password: "Changeme@1",
 }
}
// using password during test
helper.get.env("password");


fixture: (alias: string) => Chainable<any>

Get fixture

Example

 given.fixture("user.json", "user");
 then(
   get.fixture("user").shouldDeepNestedInclude({
   name: "Jane Doe",
   id: "1234",
   nested: {
    attr1: "something",
    attr2: "the other thing"
   }
 })
);

focusedElement: () => Chainable<JQuery<HTMLElement>>

Get the element currently focused in the document.


imageSnapshot: (name: string, __namedParameters?: SnapshotOptions) => Chainable<DiffSnapshotResult>

Capture a snapshot and compare it to baseline snapshot Run Cypress with --env updateSnapshots=true in order to update the base image files for all of your tests.

Example

// capture entire window
get.imageSnapshot("homepage");

Example

// capture an element by DataTestId, with threshold
get.imageSnapshot("radio-group", {
 dataTestID: "radio-group",
 failureThreshold: 0.2
});

inputValue: (dataTestID: string, index?: number) => Chainable<string | number | string[]>

Get value of input element

Example

then(helper.get.inputValue('credentials-password')).shouldEqual("initial password");

nthBySelector: (selector: string, index?: number, attribute?: string) => Chainable<JQuery<HTMLElement>>

Get A DOM element at a specific index from elements.

Example

// Get the 3rd checkbox

helper.get.nthBySelector("checkbox", 3, "type")


numberOfElements: (dataTestID: string) => Chainable<number>

Get number of elements with a specific dataTestID

Example

 then(helper.get.numberOfElements("migrated-vcenter")).shouldEqual(2);

numberOfRequests: (alias: string) => Chainable<number>

Get number of outgoing request with a specific alias

Example

 then(helper.get.numberOfCalls("fetch-pokemon")).shouldEqual(2);

requestBody: (alias: string) => Chainable<any>

Get intercepted request's body If a JSON Content-Type was used and the body was valid JSON, this will be an object. If the body was binary content, this will be a buffer.


requestHeader: (alias: string) => Chainable<{ [key: string]: string | string[]; }>

Get intercepted request's header


requestQueryParams: (alias: string) => Chainable<{ [k: string]: string; }>

Get intercepted request's query param


requestUrl: (alias: string) => Chainable<string>

Get intercepted request's url


responseBody: (alias: string) => Chainable<any>

Get intercepted response's body If a JSON Content-Type was used and the body was valid JSON, this will be an object. If the body was binary content, this will be a buffer.


responseHeader: (alias: string) => Chainable<{ [key: string]: string | string[]; }>

Get intercepted response's header


spy: (name: string) => Chainable<JQuery<HTMLElement>>

Get spy by alias


spyFromFunction: (func: Function) => Chainable<JQuery<HTMLElement>>

Get spy by function name alias


stub: (name: string) => Chainable<JQuery<HTMLElement>>

Get stub by alias


window: () => Chainable<AUTWindow>

Get the window object of the page that is currently active.

Example

helper.get.window().then((win) => { win.localStorage.getItem("key")}


given

given: Object

The given property will hold methods which will allow us to set pre-conditions before something takes place. This is a classic place to have methods which will set the inputs which are going to be passed down to our component.

Type declaration

Name Type
env (key: string, value: any) => void
fixture (filename: string, alias: string) => Chainable<any>
intercept (url: StringMatcher, alias: string, method?: string) => void
interceptAndMockResponse (options: { alias?: string ; method?: string ; response?: Object ; url: StringMatcher }) => void
spy (name: string) => Omit<SinonSpy<any[], any>, "withArgs"> & SinonSpyAgent<SinonSpy<any[], any>> & SinonSpy<any[], any>
spyOnObject (obj: T, method: keyof T) => Omit<SinonSpy<any[], any>, "withArgs"> & SinonSpyAgent<SinonSpy<any[], any>> & SinonSpy<any[], any>
stub (alias?: string) => Agent<SinonStub<any[], any>>
stubObjectMethod (obj: T, method: keyof T) => Omit<SinonStub<any[], any>, "withArgs"> & SinonSpyAgent<SinonStub<any[], any>> & SinonStub<any[], any>
stubbedInstance (constructor: (...args: any[]) => T, overrides: Partial<T>) => StubbedInstance<T, SinonStub<any[], any>> & T
stubbedInterface <T>(interfaceName: string, overrides: Partial<T>) => StubbedInstance<T, SinonStub<any[], any>> & T

env: (key: string, value: any) => void

Sets specific environment variable's value

Example

// Changing an environment variable * ```ts helper.given.env("password", "changeMe@1");

-----

**fixture**: (`filename`: `string`, `alias`: `string`) => `Chainable`<`any`\>

Load a fixture

**`Example`**

```ts
let { given, when, get } = new CypressHelper();
it("should get fixture", () => {
 given.fixture("user.json", "user");
 then(get.fixture("user")).shouldDeepNestedInclude({
   name: "Jane Doe",
   id: "1234",
   nested: {
     attr1: "something",
     attr2: "the other thing"
   }
 });
});


intercept: (url: StringMatcher, alias: string, method?: string) => void

Use intercept() to intercept HTTP requests and responses

Example

helper.given.intercept("/streets/sprite.png", "streetSprite");

interceptAndMockResponse: (options: { alias?: string ; method?: string ; response?: Object ; url: StringMatcher }) => void

Use interceptAndMockResponse to stub and intercept HTTP requests and responses.

Example

// adds token to response header
helper.given.interceptAndMockResponse({
  url: '** /sysmgmt/2015/bmc/session',
  response: {
    headers:{
       'XSRF-Token': 'token',
    },
  },
  alias: 'login'
})

Example

// mocks response to login request
helper.given.interceptAndMockResponse({
  method: "POST",
  url: "** /login",
  alias: "login",
  response : {
    token: 'token'
  }
})

Example

// mocks network error
helper.given.interceptAndMockResponse({
  method: "POST",
  url: "** /avamars",
  alias: "avamar",
  response : {
    forceNetworkError: true
  }
})

Example

// mocks missing image
helper.given.interceptAndMockResponse({
  method: "POST",
  url: "** /image.png",
  alias: "image",
  response: { statusCode: 404 }
})

Example

// using a fixture
 helper.given.interceptAndMockResponse({
  url: "** /shellygo/whatever**",
  response: { fixture: "user.json" },
  alias: "whatever"
});

spy: (name: string) => Omit<SinonSpy<any[], any>, "withArgs"> & SinonSpyAgent<SinonSpy<any[], any>> & SinonSpy<any[], any>

Returns a new spy function, and creates an alias for the newly created spy


spyOnObject: (obj: T, method: keyof T) => Omit<SinonSpy<any[], any>, "withArgs"> & SinonSpyAgent<SinonSpy<any[], any>> & SinonSpy<any[], any>

Spy on a method and create an alias for the spy

Example

given.spyOnObject(window, "alert");
alert("whatever");
then(helper.get.spyFromFunction(window.alert)).shouldHaveBeenCalledWith("whatever");
// Or
then(helper.get.spy("alert")).shouldHaveBeenCalledTimes(1);

Example

given.spyOnObject(serviceMock, "functionName");
serviceMock.functionName();
then(helper.get.spyFromFunction(serviceMock.functionName)).shouldHaveBeenCalledTimes(1);

stub: (alias?: string) => Agent<SinonStub<any[], any>>

Replace a function, record its usage and control its behavior.

Example

given.stub("alias");
then(get.spy("alias")).shouldHaveBeenCalled();

stubObjectMethod: (obj: T, method: keyof T) => Omit<SinonStub<any[], any>, "withArgs"> & SinonSpyAgent<SinonStub<any[], any>> & SinonStub<any[], any>

Stub an object's method and create an alias for the stub

Example

//stubbing a service method
 helper.given.stubObjectMethod(serviceMock, "functionName").returns(3);

//stubbing setters and getters
 helper.given.stubObjectMethod(serviceMock, "count").get(() => 3).set(() => {});

stubbedInstance: (constructor: (...args: any[]) => T, overrides: Partial<T>) => StubbedInstance<T, SinonStub<any[], any>> & T

Creates a new object with the given functions as the prototype and stubs all implemented functions.

Example

const serviceMock = helper.given.stubbedInstance(Service);

Example

class Service {
 public func1() {...}
 public get prop1() {...}
}
const serviceMock = helper.given.stubbedInstance(Service, {prop1: 3});

Example

helper.given.stubbedInstance(Router, { events: new Observable() })

Example

helper.given.stubbedInstance(
 PokemonService,
 {
   pokemonTypes: new BehaviorSubject<NamedAPIResource[]>([]),
   pokemons: new BehaviorSubject<BetterPokemon[]>([]),
 }
)

stubbedInterface: <T>(interfaceName: string, overrides: Partial<T>) => StubbedInstance<T, SinonStub<any[], any>> & T

Creates a new object with the given functions as the prototype and stubs all functions.

Example

const serviceMock = helper.given.stubbedInterface<IService>("IService");

Example

interface IService {
 propertyFunc: (int: number) => number
 get prop1() : number
}
const serviceMock = helper.given.stubbedInterface<IService>("IService", {prop1: 3});


when

when: Object

The when property will hold methods of “events” which will take place like render, click, hover, etc.

Type declaration

Name Type
acceptConfirm () => EventEmitter2 | Listener
blur (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
cancelConfirm () => Cypress
cancelPrompt () => EventEmitter2 | Listener
check (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
clear (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
click (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
clock () => Chainable<Clock>
closeAlert () => Cypress
dblclick (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
doWithin (fn: () => void, dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
dragAndDrop (element: Chainable<JQuery<HTMLElement>>, targetElement: Chainable<JQuery<HTMLElement>>) => void
focus (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
hover (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
realClick (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
realType (dataTestID: string, keys: string, index?: number) => Chainable<void>
rightclick (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
scrollToBottom () => Chainable<undefined>
scrollToTop () => Chainable<undefined>
selectOption (dataTestID: string, option: string | number, index?: number) => Chainable<JQuery<HTMLElement>>
tick (ms: number) => Chainable<Clock>
toggle (index: number) => Chainable<JQuery<HTMLElement>>
toggleRadioBySelector (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
type (dataTestID: string, keys: string, index?: number) => Chainable<JQuery<HTMLElement>>
typeSpecialCharacter (dataTestID: string, keys: string, index?: number) => Chainable<JQuery<HTMLElement>>
uncheck (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>
visit (url: string) => void
wait (ms: number) => Chainable<undefined>
waitForLastCall (alias: string, timeout: number) => Chainable<undefined | Interception<any, any>>
waitForResponse (alias: string) => Chainable<Interception<any, any>>
waitForResponses (alias: string, responses: number) => Chainable<Interception<any, any>[]>
waitUntil (checkFunction: () => Chainable<any> | ReturnType | PromiseLike<ReturnType>, options?: WaitUntilOptions<any>) => Chainable<any>
within (fn: () => void, dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

acceptConfirm: () => EventEmitter2 | Listener

Fires when your app calls the global window.confirm() method. The confirmation will be accepted.


blur: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Blur a focused element. This element must currently be in focus. If you want to ensure an element is focused before blurring, try using helper.when.focus() before helper.when.blur().


cancelConfirm: () => Cypress

Fires when your app calls the global window.confirm() method. The confirmation will be canceled.


cancelPrompt: () => EventEmitter2 | Listener

Fires when your app calls the global window.prompt() method. The prompt will be cancelled.


check: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Check checkbox(es) or radio(s). This element must be an html input element with type checkbox or radio.


clear: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Clear the value of an input or textarea


click: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Click a DOM element.

Example

<button data-cy="move-right">Move</button>
helper.when.click('move-right')

clock: () => Chainable<Clock>

overrides native global functions related to time allowing them to be controlled synchronously via helper.when.tick() This includes controlling: setTimeout clearTimeout setInterval clearInterval Date Objects The clock starts at the unix epoch (timestamp of 0). This means that when you instantiate new Date in your application, it will have a time of January 1st, 1970.


closeAlert: () => Cypress

Fires when your app calls the global window.alert() method. The alert will be closed.


dblclick: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Double-click a DOM element.


doWithin: (fn: () => void, dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Scopes the execution of a function within an element

Example

helper.when.doWithin(() => when.click('button-test-id'), 'button-row', 2)

dragAndDrop: (element: Chainable<JQuery<HTMLElement>>, targetElement: Chainable<JQuery<HTMLElement>>) => void

Drag an element and drop it in target element

Example

helper.when.dragAndDrop(
  helper.get.elementByTestId('selected-item', 2),
  helper.get.elementByTestId('available-items')
)

focus: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Focus on a DOM element.

Example

helper.when.focus('credentials-password')

hover: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Fires native hover event. Yes, it can test :hover preprocessor.

Example

helper.when.hover('consent-terms-agree')

realClick: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Fires native system click event.

Example

<button data-cy="move-right">Move</button>
helper.when.realClick('move-right')

realType: (dataTestID: string, keys: string, index?: number) => Chainable<void>

Runs a sequence of native press event (via cy.press) Type event is global. Make sure that it is not attached to any field.


rightclick: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Right click a DOM element.


scrollToBottom: () => Chainable<undefined>

Scroll to the bottom.


scrollToTop: () => Chainable<undefined>

Scroll to the top.


selectOption: (dataTestID: string, option: string | number, index?: number) => Chainable<JQuery<HTMLElement>>

Select an option with specific text, value, or index within a select html element.

Example

<select data-hook="fruit-selection">
  <option value="456">apples</option>
  <option value="457">oranges</option>
  <option value="458">bananas</option>
</select>
helper.when.selectOption('fruit-selection', 0).should('have.value', '456')
helper.when.selectOption('fruit-selection', 'oranges').should('have.value', '457')
helper.when.selectOption('fruit-selection', 458).should('have.value', '458')


tick: (ms: number) => Chainable<Clock>

Move time after overriding a native time function with helper.when.clock(). helper.when.clock() must be called before helper.when.tick()

Example

helper.when.clock();
helper.when.click('login-button');
helper.when.tick(2000);

toggle: (index: number) => Chainable<JQuery<HTMLElement>>

Check radio(s). This element must be an html input element with type radio.


toggleRadioBySelector: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Toggle radio(s) by dataTestID This element must be an html input element with type radio.


type: (dataTestID: string, keys: string, index?: number) => Chainable<JQuery<HTMLElement>>

Type into a DOM element, not including special characters

Example

helper.when.type('credentials-password', 'new password')

typeSpecialCharacter: (dataTestID: string, keys: string, index?: number) => Chainable<JQuery<HTMLElement>>

Type into a DOM element, including special characters

Example

helper.when.typeSpecialChar('credentials-password', '{backspace}')

uncheck: (dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Uncheck checkbox(es).


visit: (url: string) => void

Visit a given url


wait: (ms: number) => Chainable<undefined>

Wait for a number of milliseconds.


waitForLastCall: (alias: string, timeout: number) => Chainable<undefined | Interception<any, any>>

Wait for a last request to complete.


waitForResponse: (alias: string) => Chainable<Interception<any, any>>

Wait for a specific request to complete.


waitForResponses: (alias: string, responses: number) => Chainable<Interception<any, any>[]>

Wait for multiples requests to complete.


waitUntil: (checkFunction: () => Chainable<any> | ReturnType | PromiseLike<ReturnType>, options?: WaitUntilOptions<any>) => Chainable<any>

Wait for something to happen in the DOM. Note! you should not have any asserts in the callback function. From cypress-wait-until documentation: you cannot put assertions inside checkFunction. There is no way to avoid a test failure if an assertion throws an error. You must manually check what the assertions would check for you. The most common case is checking that an element exists or not

Example

helper.when.waitUntil(() =>
  helper.get.elementByTestId('element-test-id', index)
);

within: (fn: () => void, dataTestID: string, index?: number) => Chainable<JQuery<HTMLElement>>

Scopes the execution of a function within an element

Example

helper.when.within(() => when.click('button-test-id'), 'button-row', 2)

Deprecated

The method should not be used anymore. Use helper.when.doWithin instead.


Methods

beforeAndAfter

beforeAndAfter(): void

Returns

void