Button
The Button class provides a simplified interface for handling button interactions in test automation. It supports essential operations such as clicking, asserting button states, and scrolling events.
Usage : button
button🧩 Code
The Button class is designed to interact with common button element
To insert a code block with syntax highlighting:
import { oi } from "@ordino.ai/spartify-engine";
oi.ui.button(this.btn_element).click()import { oi } from "@ordino.ai/spartify-engine";
await oi.ui(this.page).button(this.btn_element).click()Methods
click(): void
Simulates a click action on the button
@returns
void
oi.ui.button(this.btn_element).click()await oi.ui(this.page).button(this.element).click()forceClick(): void
Forces a click action on the button, bypassing any potential blockers.
@returns
void
oi.ui.button(this.btn_element).forceClick()await oi.ui(this.page).button(this.element).forceClick()doubleClick(): void
Simulates a double-click action on the button. @param forceClick - true (optional)
@param
{force}– true (optional)@returns
void
oi.ui.button(this.btn_element).doubleClick(true)await oi.ui(this.page).button(this.element).doubleClick(true)rightClick(): void
Simulates a right-click action on the button.
@returns
void
oi.ui.button(this.btn_element).rightClick(true)await oi.ui(this.page).button(this.element).rightClick(true)clickAt(x: number, y: number): void
Simulates a click action at the specified coordinates relative to the button.
@param
x– The x-coordinate.@param
y– The y-coordinate.@returns
void
oi.ui.button(this.btn_element).clickAt(50,30,true)await oi.ui(this.page).button(this.element).clickAt(50,30,true)clickCenter(): void
Simulates a click action at the center of the button.
@returns
void
oi.ui.button(this.btn_element).clickCenter(true)await oi.ui(this.page).button(this.element).clickCenter(true)clickAll(): void
Simulates a click action on all instances of the button.
@returns
void
oi.ui.button(this.btn_element).clickAll(true)await oi.ui(this.page).button(this.element).clickAll(true)clickFirst(): void
Simulates a click action on the first instance of the button.
@returns
void
oi.ui.button(this.btn_element).clickFirst(true)await oi.ui(this.page).button(this.element).clickFirst(true)clickLast(): void
Simulates a click action on the last instance of the button
@returns
void
oi.ui.button(this.btn_element).clickLast(true)await oi.ui(this.page).button(this.element).clickLast(true)clickAndHold(): void
Simulates a click-and-hold action on the button.
@returns
void
oi.ui.button(this.btn_element).clickAndHold()await oi.ui(this.page).button(this.element).clickAndHold()clickByText(text: string): void
Simulates a click action on the button identified by the specified text.
@param
text– The text to identify the button.@returns
void
oi.ui.button(this.btn_element).clickByText('save',true)await oi.ui(this.page).button(this.element).clickByText('save')clickByIndex(index: number): void
Simulates a click action on the button identified by the specified index.
@param
index– The index to identify the button.@returns
void
oi.ui.button(this.btn_element).clickByIndex(2,true)await oi.ui(this.page).button(this.element).clickByIndex(2,true)clickWithOffset(x: number, y: number): void
Simulates a click action on the button with an offset from its top-left corner.
@param
x– The x-coordinate offset.@param
y– The y-coordinate offset.@returns
void
oi.ui.button(this.btn_element).clickWithOffset(1,2)await oi.ui(this.page).button(this.element).clickWithOffset(1,2)focusAndClick(): void
Focuses on the button and then simulates a click action
@returns
void
oi.ui.button(this.btn_element).focusAndClick()await oi.ui(this.page).button(this.element).focusAndClick()Assertions
assertText(text: string): void
Asserts that the button contains the specified text.
@param
text– The expected text content of the button.@returns
void
oi.ui.button(this.btn_element).assertText('')await oi.ui(this.page).button(this.element).assertText('')assertColor(color: string): void
Asserts that the button has the expected color.
@param
color– The expected color of the button.@returns
void
oi.ui.button(this.btn_element).assertColor('rgb(0, 123, 255)')await oi.ui(this.page).button(this.element).assertColor('rgb(0, 123, 255)')assertCssProperty(property: string, value: string): void
Asserts that the button has the specified CSS property with the given value.
@param
property– The CSS property to check.@param
value– The expected value of the CSS property.@returns
void
oi.ui.button(this.btn_element).assertCssProperty('font-size', '16px')await oi.ui(this.page).button(this.element).assertCssProperty('font-size', '16px')Scrolling Actions
scrollToElement(): void
Scrolls to the button element.
@returns
void
oi.ui.button(this.btn_element).scrollToElement()await oi.ui(this.page).button(this.element).scrollToElement()Custom Events
Ordino allows you to build custom actions or user journeys by directly interacting with the underlying tool’s native methods and actions.
This approach gives you full control, bypassing Ordino’s abstraction layer, and ensures you can leverage tool-specific capabilities as needed.
locator→ The element locator (e.g., XPath, CSS selector, or tool-specific reference).Returns → A tool element object on which you can invoke native actions (e.g.,
.click(),.type()).
// Generic pattern
element(locator): objectOrdino Custom Mode
Using Ordino’s direct tool method reference:
// Ordino direct-to-tool approach
oi.ui.element('@xpath').click()Here, Ordino will call the Cypress (or other tool) element object directly, rather than going through Ordino’s wrapper.
Building User Journeys
By chaining multiple oi.ui.element() calls, you can construct full user journeys while still working with native tool methods.
Example: Login Flow
// Enter username
oi.ui.element('//input[@id="username"]').type('testuser')
// Enter password
oi.ui.element('//input[@id="password"]').type('secret')
// Click login button
oi.ui.element('(//*[contains(text(),"Login")])[1]').click()Key Notes
Use this mode when you need maximum control over the test framework.
This does not abstract or transform the call – it executes directly on the tool object (e.g., Cypress, Playwright, etc.).
Perfect for custom journeys, advanced locators, or tool-specific actions not exposed by Ordino’s higher-level API.
Last updated