UNPKG

artes

Version:

The package provide step definitions and user writes feature files, and the package handles automation, with optional POM files and custom step definitions.

2,102 lines (1,311 loc) • 43.1 kB
## đŸ“‹ Simplified Functions If you don't want to deal with Playwright methods directly, you can simply use the following predefined actions methods by import them: ```javascript const { mouse, keyboard, frame, elementInteractions, page } = require("artes"); ``` - **Mouse Actions:** `mouse.click(element)` - **Keyboard Actions:** `keyboard.press(key)` - **Element Interactions:** `elementInteractions.isChecked()` - **Assertions:** `assert.shouldBeTruthy(element)` - **Frame Actions:** `frame.first()` --- ## Table of Contents - [Mouse Functions](#mouse-functions) - [Keyboard Functions](#keyboard-functions) - [Assertions Functions](#assertions-functions) - [Page Functions](#page-functions) - [Frame Functions](#frame-functions) ### **Mouse Functions** #### `click(selector)` Clicks on the specified element. ```javascript await click("button#submit"); ``` --- #### `forceClick(selector)` Clicks on the specified element, forcing the action even if not visible. ```javascript await forceClick("button#hiddenSubmit"); ``` --- #### `clickPosition(selector, position)` Clicks on a specific position within the element, specified as `x,y`. ```javascript await clickPosition("div#map", "50,100"); ``` --- #### `forceClickPosition(selector, position)` Forces a click at a specific position within the element. ```javascript await forceClickPosition("div#map", "50,100"); ``` --- #### `rightClick(selector)` Performs a right-click on the element. ```javascript await rightClick("div#contextMenu"); ``` --- #### `forceRightClick(selector)` Forces a right-click on the element. ```javascript await forceRightClick("div#hiddenContextMenu"); ``` --- #### `leftClick(selector)` Performs a left-click on the element (default click). ```javascript await leftClick("button#start"); ``` --- #### `forceLeftClick(selector)` Forces a left-click on the element. ```javascript await forceLeftClick("button#hiddenStart"); ``` --- #### `doubleClick(selector)` Performs a double-click on the element. ```javascript await doubleClick("input#textBox"); ``` --- #### `forceDoubleClick(selector)` Forces a double-click on the element. ```javascript await forceDoubleClick("input#hiddenTextBox"); ``` --- #### `forceDoubleClickPosition(selector, position)` Forces a double-click at a specific position within the element. ```javascript await forceDoubleClickPosition("div#image", "100,150"); ``` --- ### **Hover Functions** #### `hover(selector)` Moves the mouse pointer over the element. ```javascript await hover("button#hoverMe"); ``` --- #### `forceHover(selector)` Forces a hover action over the element. ```javascript await forceHover("button#hiddenHoverMe"); ``` --- #### `hoverPosition(selector, position)` Hovers at a specific position within the element. ```javascript await hoverPosition("div#image", "75,50"); ``` --- #### `forceHoverPosition(selector, position)` Forces a hover at a specific position within the element. ```javascript await forceHoverPosition("div#hiddenImage", "75,50"); ``` --- ### **Focus Functions** #### `focus(selector)` Focuses on the specified element. ```javascript await focus("input#username"); ``` --- #### `forceFocus(selector)` Forces focus on the specified element. ```javascript await forceFocus("input#hiddenUsername"); ``` --- #### `focusPosition(selector, position)` Focuses on a specific position within the element. ```javascript await focusPosition("div#editor", "200,300"); ``` --- #### `forceFocusPosition(selector, position)` Forces focus at a specific position within the element. ```javascript await forceFocusPosition("div#hiddenEditor", "200,300"); ``` --- ### **Drag-and-Drop Functions** #### `dragAndDrop(sourceSelector, targetSelector)` Drags an element from the source and drops it at the target. ```javascript await dragAndDrop("div#source", "div#target"); ``` --- #### `dragAndDropPosition(sourceSelector, position)` Drags an element and drops it at a specified position. ```javascript await dragAndDropPosition("div#source", "300,400"); ``` --- ### **Select Functions** #### `selectByValue(selector, value)` Selects an option in a dropdown by value. ```javascript await selectByValue("select#dropdown", "value1,value2"); ``` --- #### `selectByText(selector, value)` Selects an option in a dropdown by visible text. ```javascript await selectByText("select#dropdown", "Option 1"); ``` --- ### **Checkbox Functions** #### `check(selector)` Checks the specified checkbox. ```javascript await check("input#termsCheckbox"); ``` --- #### `uncheck(selector)` Unchecks the specified checkbox. ```javascript await uncheck("input#termsCheckbox"); ``` --- ### **Scroll Functions** #### `scrollIntoViewIfNeeded(selector)` Scrolls the element into view if it is not already visible. ```javascript await scrollIntoViewIfNeeded("div#content"); ``` --- ### **Keyboard Functions** #### `press(selector, key)` Simulates a key press on the specified element. ```javascript await press("input#searchBox", "Enter"); ``` --- #### `pressSequentially(selector, keys)` Presses a sequence of keys on the specified element. ```javascript await pressSequentially("input#textField", ["Shift", "A", "B", "C"]); ``` --- #### `pressSequentiallyDelay(selector, keys, delay)` Presses a sequence of keys on the specified element with a delay between each key press. ```javascript await pressSequentiallyDelay("input#textField", ["H", "E", "L", "L", "O"], 200); ``` --- #### `fill(selector, value)` Fills the specified element (like an input field) with the provided value. ```javascript await fill("input#email", "example@example.com"); ``` --- #### `clear(selector)` Clears the value of the specified input field. ```javascript await clear("input#email"); ``` --- #### `selectText(selector)` Selects the text within the specified element. ```javascript await selectText("input#email"); ``` --- #### `setInputFiles(selector, files)` Sets the specified file(s) to an input field. ```javascript await setInputFiles("input#fileUpload", [ "path/to/file1.png", "path/to/file2.jpg", ]); ``` ### **Page Functions** #### `navigateTo(url)` Navigates to the specified URL in the current page context. ```javascript await navigateTo("https://example.com"); ``` - **Parameters**: - `url` _(string)_: The URL to navigate to. --- #### `navigateBack()` Navigates to the previous page. ```javascript navigateBack(); ``` --- #### `navigateForward()` Navigates to the next page. ```javascript navigateForward(); ``` --- #### `getURL()` Retrieves the current URL of the page. ```javascript await getURL(); ``` - **Returns**: - _(string)_: The current page URL. *** #### `wait()` Waits on the page until specified times. ```javascript await wait(time); ``` - **Parameters**: - `time` _(int)_: millisecond. --- ### **Assertion Functions** #### `shouldBeAttached(selector)` Asserts that the element is attached to the DOM. ```javascript await shouldBeAttached("#element-id"); ``` --- #### `shouldBeChecked(selector)` Asserts that the element is checked (e.g., a checkbox). ```javascript await shouldBeChecked("#checkbox-id"); ``` --- #### `shouldBeDisabled(selector)` Asserts that the element is disabled. ```javascript await shouldBeDisabled("#button-id"); ``` --- #### `shouldBeEditable(selector)` Asserts that the element is editable (e.g., an input field). ```javascript await shouldBeEditable("#input-id"); ``` --- #### `shouldBeEmpty(selector)` Asserts that the element has no content. ```javascript await shouldBeEmpty("#container-id"); ``` --- #### `shouldBeEnabled(selector)` Asserts that the element is enabled. ```javascript await shouldBeEnabled("#button-id"); ``` --- #### `shouldBeFocused(selector)` Asserts that the element is currently focused. ```javascript await shouldBeFocused("#input-id"); ``` --- #### `shouldBeHidden(selector)` Asserts that the element is hidden. ```javascript await shouldBeHidden("#hidden-element-id"); ``` --- #### `shouldBeInViewport(selector)` Asserts that the element is visible within the viewport. ```javascript await shouldBeInViewport("#element-id"); ``` --- #### `shouldBeVisible(selector)` Asserts that the element is visible. ```javascript await shouldBeVisible("#visible-element-id"); ``` --- #### `shouldContainText(selector, text)` Asserts that the element contains the specified text. ```javascript await shouldContainText("#element-id", "Expected Text"); ``` - **Parameters**: - `text` _(string)_: The text to check for. --- #### `shouldHaveAccessibleDescription(selector, description)` Asserts that the element has the specified accessible description. ```javascript await shouldHaveAccessibleDescription("#element-id", "Description"); ``` - **Parameters**: - `description` _(string)_: The expected accessible description. --- #### `shouldHaveAccessibleName(selector, name)` Asserts that the element has the specified accessible name. ```javascript await shouldHaveAccessibleName("#element-id", "Name"); ``` - **Parameters**: - `name` _(string)_: The expected accessible name. --- #### `shouldHaveAttribute(selector, attribute, value)` Asserts that the element has the specified attribute with the given value. ```javascript await shouldHaveAttribute("#element-id", "data-type", "example"); ``` - **Parameters**: - `attribute` _(string)_: The attribute to check. - `value` _(string)_: The expected value of the attribute. --- #### `shouldHaveClass(selector, className)` Asserts that the element has the specified class. ```javascript await shouldHaveClass("#element-id", "active-class"); ``` - **Parameters**: - `className` _(string)_: The expected class name. --- #### `shouldHaveCount(selector, count)` Asserts that the number of matching elements equals the specified count. ```javascript await shouldHaveCount(".list-item", 5); ``` - **Parameters**: - `count` _(number)_: The expected number of elements. --- #### `shouldHaveCSS(selector, property, value)` Asserts that the element has the specified CSS property with the given value. ```javascript await shouldHaveCSS("#element-id", "color", "red"); ``` - **Parameters**: - `property` _(string)_: The CSS property to check. - `value` _(string)_: The expected value of the property. --- #### `shouldHaveId(selector, id)` Asserts that the element has the specified ID. ```javascript await shouldHaveId("#element-id", "unique-id"); ``` - **Parameters**: - `id` _(string)_: The expected ID. Got it! Here’s the refined format for the assertion methods: --- #### `shouldHaveJSProperty(selector, property, value)` Asserts that the element has the specified JavaScript property with the expected value. ```javascript await shouldHaveJSProperty("#element", "disabled", true); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `property` _(string)_: The JavaScript property to check. - `value` _(any)_: The expected value of the property. --- #### `shouldHaveRole(selector, role)` Asserts that the element has the specified role. ```javascript await shouldHaveRole("#element", "button"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `role` _(string)_: The expected role of the element. --- #### `shouldHaveScreenshot(selector)` Asserts that the element has a screenshot. ```javascript await shouldHaveScreenshot("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldHaveText(selector, text)` Asserts that the element contains the specified text. ```javascript await shouldHaveText("#element", "Hello World"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `text` _(string)_: The expected text in the element. --- #### `shouldHaveValue(selector, value)` Asserts that the element has the specified value. ```javascript await shouldHaveValue("#input-field", "test value"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `value` _(string)_: The expected value of the element. --- #### `shouldHaveValues(selector, values)` Asserts that the element has the specified values. ```javascript await shouldHaveValues("#multi-select", ["Option 1", "Option 2"]); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `values` _(array)_: The expected values in the element. --- #### `shouldPageHaveScreenshot()` Asserts that the current page has a screenshot. ```javascript await shouldPageHaveScreenshot(); ``` - **Parameters**: None --- #### `shouldPageHaveTitle(title)` Asserts that the page has the specified title. ```javascript await shouldPageHaveTitle("Page Title"); ``` - **Parameters**: - `title` _(string)_: The expected title of the page. --- #### `shouldPageHaveURL(url)` Asserts that the page has the specified URL. ```javascript await shouldPageHaveURL("https://www.example.com"); ``` - **Parameters**: - `url` _(string)_: The expected URL of the page. --- #### `shouldResponseBeOK(response)` Asserts that the response status is OK (200). ```javascript await shouldResponseBeOK(response); ``` - **Parameters**: - `response` _(object)_: The response object to check. #### `shouldNotBeAttached(selector)` Asserts that the element is not attached to the DOM. ```javascript await shouldNotBeAttached("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeChecked(selector)` Asserts that the element is not checked. ```javascript await shouldNotBeChecked("#checkbox"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeDisabled(selector)` Asserts that the element is not disabled. ```javascript await shouldNotBeDisabled("#button"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeEditable(selector)` Asserts that the element is not editable. ```javascript await shouldNotBeEditable("#input"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeEmpty(selector)` Asserts that the element is not empty. ```javascript await shouldNotBeEmpty("#input-field"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeEnabled(selector)` Asserts that the element is not enabled. ```javascript await shouldNotBeEnabled("#button"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeFocused(selector)` Asserts that the element is not focused. ```javascript await shouldNotBeFocused("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeHidden(selector)` Asserts that the element is not hidden. ```javascript await shouldNotBeHidden("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeInViewport(selector)` Asserts that the element is not in the viewport. ```javascript await shouldNotBeInViewport("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotBeVisible(selector)` Asserts that the element is not visible. ```javascript await shouldNotBeVisible("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotContainText(selector, text)` Asserts that the element does not contain the specified text. ```javascript await shouldNotContainText("#element", "Some text"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `text` _(string)_: The text that should not be present in the element. --- #### `shouldNotHaveAccessibleDescription(selector, description)` Asserts that the element does not have the specified accessible description. ```javascript await shouldNotHaveAccessibleDescription("#element", "Description"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `description` _(string)_: The description that should not be associated with the element. --- #### `shouldNotHaveAccessibleName(selector, name)` Asserts that the element does not have the specified accessible name. ```javascript await shouldNotHaveAccessibleName("#element", "Element Name"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `name` _(string)_: The name that should not be associated with the element. --- #### `shouldNotHaveAttribute(selector, attribute, value)` Asserts that the element does not have the specified attribute with the given value. ```javascript await shouldNotHaveAttribute("#element", "type", "submit"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `attribute` _(string)_: The attribute to check. - `value` _(string)_: The expected value of the attribute. --- #### `shouldNotHaveClass(selector, className)` Asserts that the element does not have the specified class. ```javascript await shouldNotHaveClass("#element", "disabled"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `className` _(string)_: The class that should not be associated with the element. --- #### `shouldNotHaveCount(selector, count)` Asserts that the number of elements matching the selector is not equal to the specified count. ```javascript await shouldNotHaveCount("#element", 5); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `count` _(number)_: The expected count of elements. --- #### `shouldNotHaveCSS(selector, property, value)` Asserts that the element does not have the specified CSS property with the given value. ```javascript await shouldNotHaveCSS("#element", "color", "red"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `property` _(string)_: The CSS property to check. - `value` _(string)_: The expected value of the property. --- #### `shouldNotHaveId(selector, id)` Asserts that the element does not have the specified ID. ```javascript await shouldNotHaveId("#element", "unique-id"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `id` _(string)_: The ID that should not be associated with the element. --- #### `shouldNotHaveJSProperty(selector, property, value)` Asserts that the element does not have the specified JavaScript property with the given value. ```javascript await shouldNotHaveJSProperty("#element", "disabled", true); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `property` _(string)_: The JavaScript property to check. - `value` _(any)_: The value that the property should not have. --- #### `shouldNotHaveRole(selector, role)` Asserts that the element does not have the specified role. ```javascript await shouldNotHaveRole("#element", "button"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `role` _(string)_: The role that should not be associated with the element. --- #### `shouldNotHaveScreenshot(selector)` Asserts that the element does not have a screenshot. ```javascript await shouldNotHaveScreenshot("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotHaveText(selector, text)` Asserts that the element does not contain the specified text. ```javascript await shouldNotHaveText("#element", "Some text"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `text` _(string)_: The text that should not be present in the element. --- #### `shouldNotHaveValue(selector, value)` Asserts that the element does not have the specified value. ```javascript await shouldNotHaveValue("#element", "input value"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `value` _(string)_: The value that should not be present in the element. --- #### `shouldNotHaveValues(selector, values)` Asserts that the element does not have the specified values. ```javascript await shouldNotHaveValues("#element", ["value1", "value2"]); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `values` _(array)_: The values that should not be present in the element. --- #### `shouldNotPageHaveScreenshot()` Asserts that the page does not have a screenshot. ```javascript await shouldNotPageHaveScreenshot(); ``` - **Parameters**: - None. --- #### `shouldNotPageHaveTitle(title)` Asserts that the page does not have the specified title. ```javascript await shouldNotPageHaveTitle("Page Title"); ``` - **Parameters**: - `title` _(string)_: The title that should not be associated with the page. --- #### `shouldNotPageHaveURL(url)` Asserts that the page does not have the specified URL. ```javascript await shouldNotPageHaveURL("https://example.com"); ``` - **Parameters**: - `url` _(string)_: The URL that should not be associated with the page. --- #### `shouldNotResponseBeOK(response)` Asserts that the response is not OK (status code 200). ```javascript await shouldNotResponseBeOK(response); ``` - **Parameters**: - `response` _(object)_: The response object to check. --- #### `shouldBe(selector, expected)` Asserts that the element’s text content is equal to the expected value. ```javascript await shouldBe("#element", "expected text"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(string)_: The expected text content. --- #### `shouldBeCloseTo(selector, expected, precision)` Asserts that the element’s text content is a number close to the expected value, within the specified precision. ```javascript await shouldBeCloseTo("#element", 100, 2); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. - `precision` _(number)_: The allowed precision (number of decimal places). --- #### `shouldBeDefined(selector)` Asserts that the element’s text content is defined. ```javascript await shouldBeDefined("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldBeFalsy(selector)` Asserts that the element’s text content is falsy (e.g., `false`, `0`, `null`, `undefined`, `NaN`, or an empty string). ```javascript await shouldBeFalsy("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldBeGreaterThan(selector, expected)` Asserts that the element’s text content, converted to a number, is greater than the expected value. ```javascript await shouldBeGreaterThan("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldBeGreaterThanOrEqual(selector, expected)` Asserts that the element’s text content, converted to a number, is greater than or equal to the expected value. ```javascript await shouldBeGreaterThanOrEqual("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldBeInstanceOf(selector, constructor)` Asserts that the element’s text content is an instance of the specified constructor. ```javascript await shouldBeInstanceOf("#element", Array); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `constructor` _(function)_: The constructor function (e.g., `Array`, `Date`, etc.). --- #### `shouldBeLessThan(selector, expected)` Asserts that the element’s text content, converted to a number, is less than the expected value. ```javascript await shouldBeLessThan("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldBeLessThanOrEqual(selector, expected)` Asserts that the element’s text content, converted to a number, is less than or equal to the expected value. ```javascript await shouldBeLessThanOrEqual("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldBeNaN(selector)` Asserts that the element’s text content, converted to a number, is `NaN` (Not-a-Number). ```javascript await shouldBeNaN("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldBeNull(selector)` Asserts that the element’s text content is `null`. ```javascript await shouldBeNull("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldBeTruthy(selector)` Asserts that the element’s text content is truthy (i.e., a value that evaluates to `true` in a Boolean context). ```javascript await shouldBeTruthy("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldBeUndefined(selector)` Asserts that the element’s text content is `undefined`. ```javascript await shouldBeUndefined("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldContain(selector, substring)` Asserts that the element’s text content contains the specified substring. ```javascript await shouldContain("#element", "expected substring"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `substring` _(string)_: The substring that should be contained in the text content. --- #### `shouldContainEqual(selector, expected)` Asserts that the element’s text content contains an equal value to the expected value. ```javascript await shouldContainEqual("#element", "expected value"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(any)_: The expected value. --- #### `shouldEqual(selector, expected)` Asserts that the element’s text content, converted to a number, is equal to the expected value. ```javascript await shouldEqual("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldHaveLength(selector, length)` Asserts that the element's text content has the specified length. ```javascript await shouldHaveLength(".element", 5); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `length` _(number)_: The expected length of the text content. --- #### `shouldHaveProperty(selector, property)` Asserts that the element's text content has the specified property. ```javascript await shouldHaveProperty(".element", "propertyName"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `property` _(string)_: The property name to check for. --- #### `shouldMatch(selector, regex)` Asserts that the element's text content matches the provided regular expression. ```javascript await shouldMatch(".element", /pattern/); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `regex` _(RegExp)_: The regular expression to match against. --- #### `shouldMatchObject(selector, object)` Asserts that the element's text content matches the provided object structure. ```javascript await shouldMatchObject(".element", { key: "value" }); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `object` _(object)_: The object to match against. --- #### `shouldStrictEqual(selector, expected)` Asserts that the numeric value of the element's text content strictly equals the expected value. ```javascript await shouldStrictEqual(".element", 42); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The expected numeric value. --- #### `shouldThrow(fn)` Asserts that the provided function throws an error when executed. ```javascript await shouldThrow(() => functionThatShouldThrow()); ``` - **Parameters**: - `fn` _(Function)_: The function expected to throw an error. --- #### `shouldAny(selector, constructor)` Asserts that the element's text content is an instance of the specified constructor. ```javascript await shouldAny(".element", Constructor); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `constructor` _(Function)_: The constructor function to check against. --- #### `shouldAnything(selector)` Asserts that the element's text content matches anything (always passes). ```javascript await shouldAnything(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldArrayContaining(selector, elements)` Asserts that the element's text content contains all the elements in the provided array. ```javascript await shouldArrayContaining(".element", ["item1", "item2"]); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `elements` _(Array)_: The array of elements to check for. --- #### `shouldCloseTo(selector, expected, precision)` Asserts that the numeric value of the element's text content is close to the expected value within the specified precision. ```javascript await shouldCloseTo(".element", 3.14159, 2); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The expected numeric value. - `precision` _(number)_: The number of decimal places to check. --- #### `shouldObjectContaining(selector, properties)` Asserts that the element's text content contains an object with the specified properties. ```javascript await shouldObjectContaining(".element", { key: "value" }); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `properties` _(object)_: The object properties to check for. #### `shouldStringContaining(selector, substring)` Asserts that the element's text content contains the specified substring. ```javascript await shouldStringContaining(".element", "expected text"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `substring` _(string)_: The substring to check for. --- #### `shouldStringMatching(selector, regex)` Asserts that the element's text content matches the specified regular expression. ```javascript await shouldStringMatching(".element", /pattern/); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `regex` _(RegExp)_: The regular expression to match against. --- #### `shouldNotBe(selector, expected)` Asserts that the element's text content is not strictly equal to the expected value. ```javascript await shouldNotBe(".element", "unexpected value"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(any)_: The value that should not match. --- #### `shouldNotBeCloseTo(selector, expected, precision)` Asserts that the numeric value of the element's text content is not close to the expected value within the specified precision. ```javascript await shouldNotBeCloseTo(".element", 3.14159, 2); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The numeric value that should not be close. - `precision` _(number)_: The number of decimal places to check. --- #### `shouldNotBeDefined(selector)` Asserts that the element's text content is not defined. ```javascript await shouldNotBeDefined(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotBeFalsy(selector)` Asserts that the element's text content is not falsy. ```javascript await shouldNotBeFalsy(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotBeGreaterThan(selector, expected)` Asserts that the element's text content is not greater than the expected value. ```javascript await shouldNotBeGreaterThan(".element", 100); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The value to compare against. --- #### `shouldNotBeGreaterThanOrEqual(selector, expected)` Asserts that the numeric value of the element's text content is not greater than or equal to the expected value. ```javascript await shouldNotBeGreaterThanOrEqual(".element", 100); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The value to compare against. --- #### `shouldNotBeInstanceOf(selector, constructor)` Asserts that the element's text content is not an instance of the specified constructor. ```javascript await shouldNotBeInstanceOf(".element", Constructor); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `constructor` _(Function)_: The constructor function to check against. --- #### `shouldNotBeLessThan(selector, expected)` Asserts that the numeric value of the element's text content is not less than the expected value. ```javascript await shouldNotBeLessThan(".element", 100); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The value to compare against. --- #### `shouldNotBeLessThanOrEqual(selector, expected)` Asserts that the numeric value of the element's text content is not less than or equal to the expected value. ```javascript await shouldNotBeLessThanOrEqual(".element", 100); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The value to compare against. --- #### `shouldNotBeNaN(selector)` Asserts that the numeric value of the element's text content is not NaN. ```javascript await shouldNotBeNaN(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotBeNull(selector)` Asserts that the element's text content is not null. ```javascript await shouldNotBeNull(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotBeTruthy(selector)` Asserts that the element's text content is not truthy. ```javascript await shouldNotBeTruthy(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotBeUndefined(selector)` Asserts that the element's text content is not undefined. ```javascript await shouldNotBeUndefined(".element"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. --- #### `shouldNotContain(selector, substring)` Asserts that the element's text content does not contain the specified substring. ```javascript await shouldNotContain(".element", "unexpected text"); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `substring` _(string)_: The substring that should not be present. --- #### `shouldNotContainEqual(selector, expected)` Asserts that the numeric value of the element's text content does not contain an element equal to the expected value. ```javascript await shouldNotContainEqual(".element", 42); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(any)_: The value that should not be present. --- #### `shouldNotEqual(selector, expected)` Asserts that the numeric value of the element's text content does not equal the expected value. ```javascript await shouldNotEqual(".element", 42); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `expected` _(number)_: The value that should not match. --- #### `shouldNotHaveLength(selector, length)` Asserts that the element's text content does not have the specified length. ```javascript await shouldNotHaveLength(".element", 5); ``` - **Parameters**: - `selector` _(string)_: The CSS selector for the element. - `length` _(number)_: The length that should not match. --- #### `shouldNotHaveProperty(selector, property)` Asserts that the element’s text content does not have the specified property. ```javascript await shouldNotHaveProperty("#element", "property-name"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `property` _(string)_: The property name that should not be present. --- #### `shouldNotMatch(selector, regex)` Asserts that the element’s text content does not match the given regular expression. ```javascript await shouldNotMatch("#element", /regex/); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `regex` _(RegExp)_: The regular expression that the text content should not match. --- #### `shouldNotMatchObject(selector, object)` Asserts that the element’s text content does not match the given object. ```javascript await shouldNotMatchObject("#element", { key: "value" }); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `object` _(object)_: The object that the text content should not match. --- #### `shouldNotStrictEqual(selector, expected)` Asserts that the element’s text content, converted to a number, does not strictly equal the expected value. ```javascript await shouldNotStrictEqual("#element", 100); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. --- #### `shouldNotThrow(fn)` Asserts that the provided function does not throw an error. ```javascript await shouldNotThrow(() => { someFunction(); }); ``` - **Parameters**: - `fn` _(function)_: The function that should not throw an error. --- #### `shouldNotAny(selector, constructor)` Asserts that the element’s text content is not an instance of the specified constructor. ```javascript await shouldNotAny("#element", Array); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `constructor` _(function)_: The constructor function (e.g., `Array`, `Date`, etc.). --- #### `shouldNotAnything(selector)` Asserts that the element’s text content is not `anything` (e.g., `null`, `undefined`, `false`). ```javascript await shouldNotAnything("#element"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. --- #### `shouldNotArrayContaining(selector, elements)` Asserts that the element’s text content is not an array containing the specified elements. ```javascript await shouldNotArrayContaining("#element", ["item1", "item2"]); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `elements` _(array)_: The elements that the array should not contain. --- #### `shouldNotCloseTo(selector, expected, precision)` Asserts that the element’s text content, converted to a number, is not close to the expected value within the specified precision. ```javascript await shouldNotCloseTo("#element", 100, 2); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `expected` _(number)_: The expected value. - `precision` _(number)_: The allowed precision (number of decimal places). --- #### `shouldNotObjectContaining(selector, properties)` Asserts that the element’s text content is not an object containing the specified properties. ```javascript await shouldNotObjectContaining("#element", { key: "value" }); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `properties` _(object)_: The properties that the object should not contain. --- #### `shouldNotStringContaining(selector, substring)` Asserts that the element’s text content does not contain the specified substring. ```javascript await shouldNotStringContaining("#element", "substring"); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `substring` _(string)_: The substring that should not be contained in the text content. --- #### `shouldNotStringMatching(selector, regex)` Asserts that the element’s text content does not match the specified regular expression. ```javascript await shouldNotStringMatching("#element", /regex/); ``` - **Parameters**: - `selector` _(string)_: The target element’s selector. - `regex` _(RegExp)_: The regular expression that the text content should not match. --- ### **Frame Functions** #### `screenshot(selector)` Takes a screenshot of the specified element and saves it to the configured project path. ```javascript await screenshot("div#content"); ``` --- #### `contentFrame(selector)` Returns the `contentFrame` of the specified element (used for working with iframe content). ```javascript const frame = await contentFrame("iframe#example"); ``` --- #### `frameLocator(selector)` Returns the frame locator for the specified element. ```javascript const locator = await frameLocator("iframe#example"); ``` --- ### **Element Locator Functions** #### `nth(selector, index)` Returns the nth element matching the selector. ```javascript const nthElement = await nth("div.list-item", 2); ``` --- #### `first(selector)` Returns the first element matching the selector. ```javascript const firstElement = await first("div.list-item"); ``` --- #### `last(selector)` Returns the last element matching the selector. ```javascript const lastElement = await last("div.list-item"); ``` --- #### `filter(selector, filter)` Returns elements matching the selector and an additional filter. ```javascript const filteredElements = await filter("div.list-item", { hasText: "Active" }); ``` --- #### `count(selector)` Returns the number of elements matching the selector. ```javascript const itemCount = await count("div.list-item"); ``` --- ### **Attribute-Based Locators** #### `getByAltText(text)` Returns elements that have the specified `alt` text. ```javascript const image = await getByAltText("Profile Picture"); ``` --- #### `getByLabel(label)` Returns elements with a label matching the specified text. ```javascript const input = await getByLabel("Email Address"); ``` --- #### `getByPlaceholder(placeholder)` Returns elements with a placeholder matching the specified text. ```javascript const input = await getByPlaceholder("Enter your name"); ``` --- #### `getByRole(role)` Returns elements with the specified role attribute. ```javascript const button = await getByRole("button"); ``` --- #### `getByTestId(testId)` Returns elements with the specified `data-testid` attribute. ```javascript const element = await getByTestId("submit-button"); ```