Skip to content
testomatio edited this page Jul 2, 2021 · 48 revisions

Created by Testomat.io

📝 test/graphql/GraphQL_test.js

  • 📎 GraphQL
    • 📎 basic queries
      • ✔️ should send a query: read
    • 📎 basic mutations
      • ✔️ should send a mutation: create
      • ✔️ should send a mutation: delete

📝 test/graphql/GraphQLDataFactory_test.js

  • 📎 GraphQLDataFactory
    • 📎 create and cleanup records
      • ✔️ should create a new user
      • ✔️ should create a new user with predefined field
      • ✔️ should update request with onRequest
      • ✔️ should cleanup created data
      • ✔️ should create multiple users and cleanup after
      • ✔️ should not remove records if cleanup:false

📝 test/helper/Appium_test.js

  • 📎 Appium
    • 📎 app installation : #seeAppIsInstalled, #installApp, #removeApp, #seeAppIsNotInstalled
      • 📎 #grabAllContexts, #grabContext, #grabCurrentActivity, #grabNetworkConnection, #grabOrientation, #grabSettings
        • ✔️ should grab all available contexts for screen
        • ✔️ should grab current context
        • ✔️ should grab current activity of app
        • ✔️ should grab network connection settings
        • ✔️ should grab orientation
        • ✔️ should grab custom settings
        • ✔️ should remove App and install it again
        • ✔️ should assert when app is/is not installed
    • 📎 see seeCurrentActivity: #seeCurrentActivityIs
      • ✔️ should return .HomeScreenActivity for default screen
      • ✔️ should assert for wrong screen
    • 📎 device lock : #seeDeviceIsLocked, #seeDeviceIsUnlocked
      • ✔️ should return correct status about lock @second
    • 📎 device orientation : #seeOrientationIs #setOrientation
      • ✔️ should return correct status about lock
      • ✔️ should set device orientation
    • 📎 app context and activity: #_switchToContext, #switchToWeb, #switchToNative
      • ✔️ should switch context
      • ✔️ should switch to native and web contexts @quick
      • ✔️ should switch activity
    • 📎 #setNetworkConnection, #setSettings
      • ✔️ should set Network Connection (airplane mode on)
      • ✔️ should set custom settings
    • 📎 #hideDeviceKeyboard
      • ✔️ should hide device Keyboard @quick
      • ✔️ should assert if no keyboard
    • 📎 #sendDeviceKeyEvent
      • ✔️ should react on pressing keycode
    • 📎 #openNotifications
      • ✔️ should react on notification opening
    • 📎 #makeTouchAction
      • ✔️ should react on touch actions
      • ✔️ should react on swipe action
      • ✔️ should react on swipeDown action
      • ✔️ run simplified swipeDown @quick
      • ✔️ should react on swipeUp action
      • ✔️ should react on swipeRight action
      • ✔️ should react on swipeLeft action
      • ✔️ should react on touchPerform action
      • ✔️ should assert when you dont scroll the document anymore
      • ✔️ should react on swipeTo action
      • 📎 #performTouchAction
        • ✔️ should react on swipeUp action @second
        • ✔️ should react on swipeDown action @second
        • ✔️ should react on swipeLeft action
        • ✔️ should react on swipeRight action
    • 📎 #pullFile
      • ✔️ should pull file to local machine
    • 📎 see text : #see
      • ✔️ should work inside elements @second
      • ✔️ should work inside web view as normally @quick
    • 📎 #appendField
      • ✔️ should be able to send special keys to element @second
    • 📎 #seeInSource
      • ✔️ should check for text to be in HTML source
    • 📎 #waitForText
      • ✔️ should return error if not present
    • 📎 #seeNumberOfElements @second
      • ✔️ should return 1 as count
    • 📎 see element : #seeElement, #dontSeeElement
      • ✔️ should check visible elements on page @quick
    • 📎 #click @quick
      • ✔️ should click by accessibility id
      • ✔️ should click by xpath
    • 📎 #fillField, #appendField @second
      • ✔️ should fill field by accessibility id
      • ✔️ should fill field by xpath
      • ✔️ should append field value @second
    • 📎 #clearField
      • ✔️ should clear a given element
    • 📎 #grabTextFrom, #grabValueFrom, #grabAttributeFrom
      • ✔️ should grab text from page
      • ✔️ should grab attribute from element
    • 📎 #saveScreenshot
      • ✔️ should create a screenshot file in output dir
    • 📎 #runOnIOS, #runOnAndroid, #runInWeb
      • ✔️ should use Android locators
      • ✔️ should execute only on Android @quick
      • ✔️ should execute only on Android >= 5.0 @quick
      • ✔️ should execute only in Web

📝 test/helper/AppiumWeb_test.js

  • 📎 Appium Web
    • 📎 current url : #seeInCurrentUrl, #seeCurrentUrlEquals, ...
      • ✔️ should check for url fragment
      • ✔️ should check for equality
    • 📎 see text : #see
      • ✔️ should check text on site
      • ✔️ should check text inside element
    • 📎 see element : #seeElement, #dontSeeElement
      • ✔️ should check visible elements on page
    • 📎 #click
      • ✔️ should click by text
      • ✔️ should click by css
      • ✔️ should click by non-optimal css
      • ✔️ should click by xpath
      • ✔️ should click on context
      • ✔️ should click link with inner span
      • ✔️ should click buttons as links
    • 📎 #grabTextFrom, #grabValueFrom, #grabAttributeFrom
      • ✔️ should grab text from page
      • ✔️ should grab value from field
      • ✔️ should grab attribute from element
    • 📎 #within
      • ✔️ should work using within operator

📝 test/helper/Nightmare_test.js

  • 📎 Nightmare
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
      • ✔️ should open same page twice without error
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true
    • 📎 #moveCursorTo
      • ✔️ should trigger hover event
    • 📎 scripts Inject
      • ✔️ should reinject scripts after navigating to new page
    • 📎 see text : #see
      • ✔️ should fail when text is not on site
      • ✔️ should fail when clickable element not found
      • ✔️ should fail when text on site
      • ✔️ should fail when test is not in context
    • 📎 #locate
      • ✔️ should use locate to check element
    • 📎 window size #resizeWindow
      • ✔️ should set initial window size
      • ✔️ should resize window to specific dimensions
    • 📎 refresh page
      • ✔️ should refresh the current page
    • 📎 #seeNumberOfElements
      • ✔️ should return 1 as count

📝 test/helper/Playwright_test.js

  • 📎 Playwright
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
    • 📎 grabDataFromPerformanceTiming
      • ✔️ should return data from performance timing
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true
    • 📎 #waitToHide
      • ✔️ should wait for hidden element
      • ✔️ should wait for hidden element by XPath
    • 📎 #waitNumberOfVisibleElements
      • ✔️ should wait for a specified number of elements on the page
      • ✔️ should wait for a specified number of elements on the page using a css selector
      • ✔️ should wait for a specified number of elements which are not yet attached to the DOM
    • 📎 #moveCursorTo
      • ✔️ should trigger hover event
      • ✔️ should not trigger hover event because of the offset is beyond the element
    • 📎 #switchToNextTab, #switchToPreviousTab, #openNewTab, #closeCurrentTab, #closeOtherTabs, #grabNumberOfOpenTabs
      • ✔️ should only have 1 tab open when the browser starts and navigates to the first page
      • ✔️ should switch to next tab
      • ✔️ should assert when there is no ability to switch to next tab
      • ✔️ should close current tab
      • ✔️ should close other tabs
      • ✔️ should open new tab
      • ✔️ should switch to previous tab
      • ✔️ should assert when there is no ability to switch to previous tab
    • 📎 popup : #acceptPopup, #seeInPopup, #cancelPopup, #grabPopupText
      • ✔️ should accept popup window
      • ✔️ should accept popup window (using default popup action type)
      • ✔️ should cancel popup
      • ✔️ should check text in popup
      • ✔️ should grab text from popup
      • ✔️ should return null if no popup is visible (do not throw an error)
    • 📎 #seeNumberOfElements
      • ✔️ should return 1 as count
    • 📎 #switchTo
      • ✔️ should switch reference to iframe content
      • ✔️ should return error if iframe selector is invalid
      • ✔️ should return error if iframe selector is not iframe
      • ✔️ should return to parent frame given a null locator
    • 📎 #seeInSource, #grabSource
      • ✔️ should check for text to be in HTML source
      • ✔️ should grab the source
    • 📎 #seeTitleEquals
      • ✔️ should check that title is equal to provided one
    • 📎 #seeTextEquals
      • ✔️ should check text is equal to provided one
    • 📎 #_locateClickable
      • ✔️ should locate a button to click
      • ✔️ should not locate a non-existing checkbox using _locateClickable
    • 📎 #_locateCheckable
      • ✔️ should locate a checkbox
    • 📎 #_locateFields
      • ✔️ should locate a field
      • ✔️ should not locate a non-existing field
    • 📎 check fields: #seeInField, #seeCheckboxIsChecked, ...
      • ✔️ should throw error if field is not empty
      • ✔️ should check values in checkboxes
      • ✔️ should check values with boolean
      • ✔️ should check values in radio
      • ✔️ should check values in select
      • ✔️ should check for empty select field
      • ✔️ should check for select multiple field
    • 📎 #pressKey, #pressKeyDown, #pressKeyUp
      • ✔️ should be able to send special keys to element
      • ✔️ should use modifier key based on operating system
      • ✔️ should show correct numpad or punctuation key when Shift modifier is active
    • 📎 #waitForEnabled
      • ✔️ should wait for input text field to be enabled
      • ✔️ should wait for input text field to be enabled by xpath
      • ✔️ should wait for a button to be enabled
    • 📎 #waitForValue
      • ✔️ should wait for expected value for given locator
      • ✔️ should wait for expected value for given css locator
      • ✔️ should wait for expected value for given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given css locator
    • 📎 #grabHTMLFrom
      • ✔️ should grab inner html from an element using xpath query
      • ✔️ should grab inner html from an element using id query
      • ✔️ should grab inner html from multiple elements
      • ✔️ should grab inner html from within an iframe
    • 📎 #grabBrowserLogs
      • ✔️ should grab browser logs
    • 📎 #dragAndDrop
    • 📎 #switchTo frame
      • ✔️ should switch to frame using name
      • ✔️ should switch to root frame
      • ✔️ should switch to frame using frame number
    • 📎 #dragSlider
      • ✔️ should drag scrubber to given position
    • 📎 #uncheckOption
      • ✔️ should uncheck option that is currently checked
      • ✔️ should NOT uncheck option that is NOT currently checked
    • 📎 #grabElementBoundingRect
      • ✔️ should get the element bounding rectangle
      • ✔️ should get the element width
      • ✔️ should get the element height
    • 📎 #handleDownloads
      • ✔️ should dowload file
  • 📎 #_startBrowser
    • ✔️ should throw an exception when endpoint is unreachable
    • ✔️ should manage pages in remote browser
  • 📎 Playwright - BasicAuth
    • 📎 open page with provided basic auth
      • ✔️ should be authenticated
  • 📎 Playwright - Emulation
    • ✔️ should open page as iPhone

📝 test/helper/Protractor_test.js

  • 📎 Protractor
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open absolute url
    • 📎 current url : #seeInCurrentUrl, #seeCurrentUrlEquals, ...
      • ✔️ should check for url fragment
      • ✔️ should check for equality
    • 📎 see text : #see
      • ✔️ should check text on site
      • ✔️ should check text inside element
    • 📎 see element : #seeElement, #dontSeeElement
      • ✔️ should check visible elements on page
    • 📎 #click
      • ✔️ should click by text
      • ✔️ should click by css
      • ✔️ should click by non-optimal css
      • ✔️ should click by xpath
      • ✔️ should click on context
      • ✔️ should click link with inner span
      • ✔️ should click buttons as links
    • 📎 #checkOption
      • ✔️ should check option by css
      • ✔️ should check option by strict locator
      • ✔️ should check option by name
      • ✔️ should check option by label
    • 📎 #selectOption
      • ✔️ should select option by css
      • ✔️ should select option by label
      • ✔️ should select option by label and value
      • ✔️ should select option in grouped select
    • 📎 #fillField, #appendField
      • ✔️ should fill input by label
      • ✔️ should fill textarea by label
      • ✔️ should fill field by placeholder
      • ✔️ should fill field by css
      • ✔️ should fill field by model
      • ✔️ should fill field by name
      • ✔️ should fill textarea by name
      • ✔️ should fill textarea by css
      • ✔️ should fill textarea by model
      • ✔️ should append value to field
    • 📎 check fields: #seeInField, #seeCheckboxIsChecked, ...
      • ✔️ should check for empty field
      • ✔️ should throw error if field is not empty
      • ✔️ should check field equals
      • ✔️ should check values in select
      • ✔️ should check checkbox is checked :)
    • 📎 #grabTextFrom, #grabValueFrom, #grabAttributeFrom
      • ✔️ should grab text from page
      • ✔️ should grab value from field
      • ✔️ should grab value from select
      • ✔️ should grab attribute from element
    • 📎 page title : #seeTitle, #dontSeeTitle, #grabTitle, #seeTitleEquals
      • ✔️ should check page title
      • ✔️ should grab page title
      • ✔️ should check that title is equal to provided one
    • 📎 #seeTextEquals
      • ✔️ should check text is equal to provided one
    • 📎 #saveScreenshot
      • ✔️ should create a screenshot file in output dir
      • ✔️ should create full page a screenshot file in output dir
    • 📎 #switchToNextTab, #switchToPreviousTab, #openNewTab, #closeCurrentTab, #closeOtherTabs, #grabNumberOfOpenTabs
      • ✔️ should only have 1 tab open when the browser starts and navigates to the first page
      • ✔️ should switch to next tab
      • ✔️ should assert when there is no ability to switch to next tab
      • ✔️ should assert when there is no ability to switch to previous tab
      • ✔️ should close current tab
      • ✔️ should close other tabs
      • ✔️ should open new tab
      • ✔️ should switch to previous tab
    • 📎 cookies : #setCookie, #clearCookies, #seeCookie
      • ✔️ should do all cookie stuff
    • 📎 #seeInSource, #grabSource
      • ✔️ should check for text to be in HTML source
      • ✔️ should grab the source
    • 📎 window size : #resizeWindow
      • ✔️ should change the active window size
    • 📎 #amOutsideAngularApp
      • ✔️ should work outside angular app
      • ✔️ should switch between applications
    • 📎 waitForVisible
      • ✔️ wait for element
    • 📎 #waitForText
      • ✔️ should wait for text
      • ✔️ should wait for text in context
      • ✔️ should return error if not present
      • ✔️ should return error if waiting is too small
      • 📎 #seeNumberOfElements
        • ✔️ should return 1 as count

📝 test/helper/ProtractorWeb_test.js

  • 📎 Protractor-NonAngular
    • 📎 window size #resizeWindow
      • ✔️ should set initial window size
      • ✔️ should resize window to specific dimensions
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
    • 📎 #pressKey
      • ✔️ should be able to send special keys to element
    • 📎 see text : #see
      • ✔️ should fail when text is not on site
      • ✔️ should fail when text on site
      • ✔️ should fail when test is not in context
    • 📎 SmartWait
      • ✔️ should wait for element to appear
      • ✔️ should wait for clickable element appear
      • ✔️ should wait for clickable context to appear
      • ✔️ should wait for text context to appear
    • 📎 #switchTo frame
      • ✔️ should switch to frame using name
      • ✔️ should switch to root frame
      • ✔️ should switch to frame using frame number
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true
    • 📎 #waitNumberOfVisibleElements
      • ✔️ should wait for a specified number of elements on the page
      • ✔️ should wait for a specified number of elements on the page using a css selector
      • ✔️ should wait for a specified number of elements which are not yet attached to the DOM
    • 📎 #waitForEnabled
      • ✔️ should wait for input text field to be enabled
      • ✔️ should wait for input text field to be enabled by xpath
      • ✔️ should wait for a button to be enabled
    • 📎 #waitForValue
      • ✔️ should wait for expected value for given locator
      • ✔️ should wait for expected value for given css locator
      • ✔️ should wait for expected value for given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given css locator
    • 📎 #grabHTMLFrom
      • ✔️ should grab inner html from an element using xpath query
      • ✔️ should grab inner html from an element using id query
      • ✔️ should grab inner html from multiple elements
    • 📎 popup : #acceptPopup, #seeInPopup, #cancelPopup
      • ✔️ should accept popup window
      • ✔️ should cancel popup
      • ✔️ should check text in popup
      • ✔️ should grab text from popup
      • ✔️ should return null if no popup is visible (do not throw an error)
    • 📎 #grabBrowserLogs
      • ✔️ should grab browser logs
      • ✔️ should grab browser logs across pages
    • 📎 #dragAndDrop
      • ✔️ Drag item from source to target (no iframe) @dragNdrop
      • ✔️ Drag and drop from within an iframe
    • 📎 #_locateClickable
      • ✔️ should locate a button to click
      • ✔️ should not locate a non-existing checkbox using _locateClickable
    • 📎 #_locateCheckable
      • ✔️ should locate a checkbox
      • ✔️ should not locate a non-existing checkbox
    • 📎 #_locateFields
      • ✔️ should locate a field
      • ✔️ should not locate a non-existing field

📝 test/helper/Puppeteer_test.js

  • 📎 Puppeteer - BasicAuth
    • 📎 open page with provided basic auth
      • ✔️ should be authenticated
      • ✔️ should be authenticated on second run
  • 📎 Puppeteer
    • 📎 Session
      • ✔️ should not fail for localStorage.clear() on about:blank
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
      • ✔️ should be unauthenticated
    • 📎 grabDataFromPerformanceTiming
      • ✔️ should return data from performance timing
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true
    • 📎 #waitToHide
      • ✔️ should wait for hidden element
      • ✔️ should wait for hidden element by XPath
    • 📎 #waitNumberOfVisibleElements
      • ✔️ should wait for a specified number of elements on the page
      • ✔️ should wait for a specified number of elements on the page using a css selector
      • ✔️ should wait for a specified number of elements which are not yet attached to the DOM
    • 📎 #moveCursorTo
      • ✔️ should trigger hover event
      • ✔️ should not trigger hover event because of the offset is beyond the element
    • 📎 #switchToNextTab, #switchToPreviousTab, #openNewTab, #closeCurrentTab, #closeOtherTabs, #grabNumberOfOpenTabs
      • ✔️ should only have 1 tab open when the browser starts and navigates to the first page
      • ✔️ should switch to next tab
      • ✔️ should assert when there is no ability to switch to next tab
      • ✔️ should close current tab
      • ✔️ should close other tabs
      • ✔️ should open new tab
      • ✔️ should switch to previous tab
      • ✔️ should assert when there is no ability to switch to previous tab
    • 📎 popup : #acceptPopup, #seeInPopup, #cancelPopup, #grabPopupText
      • ✔️ should accept popup window
      • ✔️ should accept popup window (using default popup action type)
      • ✔️ should cancel popup
      • ✔️ should check text in popup
      • ✔️ should grab text from popup
      • ✔️ should return null if no popup is visible (do not throw an error)
    • 📎 #seeNumberOfElements
      • ✔️ should return 1 as count
    • 📎 #switchTo
      • ✔️ should switch reference to iframe content
      • ✔️ should return error if iframe selector is invalid
      • ✔️ should return error if iframe selector is not iframe
      • ✔️ should return to parent frame given a null locator
    • 📎 #seeInSource, #grabSource
      • ✔️ should check for text to be in HTML source
      • ✔️ should grab the source
    • 📎 #seeTitleEquals
      • ✔️ should check that title is equal to provided one
    • 📎 #seeTextEquals
      • ✔️ should check text is equal to provided one
    • 📎 #_locateClickable
      • ✔️ should locate a button to click
      • ✔️ should not locate a non-existing checkbox using _locateClickable
    • 📎 #_locateCheckable
      • ✔️ should locate a checkbox
    • 📎 #_locateFields
      • ✔️ should locate a field
      • ✔️ should not locate a non-existing field
    • 📎 check fields: #seeInField, #seeCheckboxIsChecked, ...
      • ✔️ should throw error if field is not empty
      • ✔️ should check values in checkboxes
      • ✔️ should check values with boolean
      • ✔️ should check values in radio
      • ✔️ should check values in select
      • ✔️ should check for empty select field
      • ✔️ should check for select multiple field
    • 📎 #pressKey, #pressKeyDown, #pressKeyUp
      • ✔️ should be able to send special keys to element
      • ✔️ should use modifier key based on operating system
      • ✔️ should show correct numpad or punctuation key when Shift modifier is active
      • ✔️ should show correct number key when Shift modifier is active
    • 📎 #waitForEnabled
      • ✔️ should wait for input text field to be enabled
      • ✔️ should wait for input text field to be enabled by xpath
      • ✔️ should wait for a button to be enabled
    • 📎 #waitForText
      • ✔️ should wait for text after load body
    • 📎 #waitForValue
      • ✔️ should wait for expected value for given locator
      • ✔️ should wait for expected value for given css locator
      • ✔️ should wait for expected value for given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given css locator
    • 📎 #grabHTMLFrom
      • ✔️ should grab inner html from an element using xpath query
      • ✔️ should grab inner html from an element using id query
      • ✔️ should grab inner html from multiple elements
      • ✔️ should grab inner html from within an iframe
    • 📎 #grabBrowserLogs
      • ✔️ should grab browser logs
      • ✔️ should grab browser logs across pages
    • 📎 #dragAndDrop
      • ✔️ Drag item from source to target (no iframe) @dragNdrop
      • ✔️ Drag and drop from within an iframe
    • 📎 #switchTo frame
      • ✔️ should switch to frame using name
      • ✔️ should switch to root frame
      • ✔️ should switch to frame using frame number
    • 📎 #dragSlider
      • ✔️ should drag scrubber to given position
    • 📎 #uncheckOption
      • ✔️ should uncheck option that is currently checked
      • ✔️ should NOT uncheck option that is NOT currently checked
    • 📎 #grabElementBoundingRect
      • ✔️ should get the element bounding rectangle
      • ✔️ should get the element width
      • ✔️ should get the element height
    • 📎 #handleDownloads
      • ✔️ should dowload file
    • 📎 #waitForClickable
      • ✔️ should wait for clickable
      • ✔️ should wait for clickable by XPath
      • ✔️ should fail for disabled element
      • ✔️ should fail for disabled element by XPath
      • ✔️ should fail for element not in viewport by top
      • ✔️ should fail for element not in viewport by bottom
      • ✔️ should fail for element not in viewport by left
      • ✔️ should fail for element not in viewport by right
      • ✔️ should fail for overlapping element
      • ✔️ should pass if element change class
      • ✔️ should fail if element change class and not clickable
  • 📎 Puppeteer (remote browser)
    • 📎 #_startBrowser
      • ✔️ should throw an exception when endpoint is unreachable
      • ✔️ should clear any prior existing pages on remote browser

📝 test/helper/TestCafe_test.js

  • 📎 TestCafe
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true

📝 test/helper/WebDriver_test.js

📝 test/helper/WebDriverIO_test.js

  • 📎 WebDriverIO
    • 📎 open page : #amOnPage
      • ✔️ should open main page of configured site
      • ✔️ should open any page of configured site
      • ✔️ should open absolute url
    • 📎 see text : #see
      • ✔️ should fail when text is not on site
    • 📎 check fields: #seeInField, #seeCheckboxIsChecked, ...
      • ✔️ should throw error if field is not empty
      • ✔️ should check values in checkboxes
      • ✔️ should check values with boolean
      • ✔️ should check values in radio
      • ✔️ should check values in select
      • ✔️ should check for empty select field
      • ✔️ should check for select multiple field
    • 📎 #pressKey
      • ✔️ should be able to send special keys to element
    • 📎 #waitForClickable
      • ✔️ should wait for clickable
      • ✔️ should wait for clickable by XPath
      • ✔️ should fail for disabled element
      • ✔️ should fail for disabled element by XPath
      • ✔️ should fail for element not in viewport by top
      • ✔️ should fail for element not in viewport by bottom
      • ✔️ should fail for element not in viewport by left
      • ✔️ should fail for element not in viewport by right
      • ✔️ should fail for overlapping element
      • ✔️ should pass if element change class
      • ✔️ should fail if element change class and not clickable
    • 📎 #seeInSource, #grabSource
      • ✔️ should check for text to be in HTML source
      • ✔️ should grab the source
    • 📎 #seeTitleEquals
      • ✔️ should check that title is equal to provided one
    • 📎 #seeTextEquals
      • ✔️ should check text is equal to provided one
    • 📎 #waitForFunction
      • ✔️ should wait for function returns true
      • ✔️ should pass arguments and wait for function returns true
    • 📎 #waitForEnabled
      • ✔️ should wait for input text field to be enabled
      • ✔️ should wait for input text field to be enabled by xpath
      • ✔️ should wait for a button to be enabled
    • 📎 #waitForValue
      • ✔️ should wait for expected value for given locator
      • ✔️ should wait for expected value for given css locator
      • ✔️ should wait for expected value for given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given xpath locator
      • ✔️ should only wait for one of the matching elements to contain the value given css locator
    • 📎 #waitNumberOfVisibleElements
      • ✔️ should wait for a specified number of elements on the page
      • ✔️ should be no [object Object] in the error message
      • ✔️ should wait for a specified number of elements on the page using a css selector
      • ✔️ should wait for a specified number of elements which are not yet attached to the DOM
    • 📎 #waitForVisible
      • ✔️ should be no [object Object] in the error message
      • ✔️ should wait for a specified element to be visible
    • 📎 #waitForInvisible
      • ✔️ should be no [object Object] in the error message
      • ✔️ should wait for a specified element to be invisible
    • 📎 #moveCursorTo
      • ✔️ should trigger hover event
      • ✔️ should not trigger hover event because of the offset is beyond the element
    • 📎 #switchToNextTab, #switchToPreviousTab, #openNewTab, #closeCurrentTab, #closeOtherTabs, #grabNumberOfOpenTabs
      • ✔️ should only have 1 tab open when the browser starts and navigates to the first page
      • ✔️ should switch to next tab
      • ✔️ should assert when there is no ability to switch to next tab
      • ✔️ should close current tab
      • ✔️ should close other tabs
      • ✔️ should open new tab
      • ✔️ should switch to previous tab
      • ✔️ should assert when there is no ability to switch to previous tab
    • 📎 popup : #acceptPopup, #seeInPopup, #cancelPopup
      • ✔️ should accept popup window
      • ✔️ should cancel popup
      • ✔️ should check text in popup
      • ✔️ should grab text from popup
      • ✔️ should return null if no popup is visible (do not throw an error)
    • 📎 #waitForText
      • ✔️ should return error if not present
      • ✔️ should return error if waiting is too small
    • 📎 #seeNumberOfElements
      • ✔️ should return 1 as count
    • 📎 #switchTo
      • ✔️ should switch reference to iframe content
      • ✔️ should return error if iframe selector is invalid
      • ✔️ should return error if iframe selector is not iframe
      • ✔️ should return to parent frame given a null locator
    • 📎 click context
      • ✔️ should click on inner text
      • ✔️ should click on input in inner element
      • ✔️ should click by aria-label
      • ✔️ should click by title
      • ✔️ should click by aria-labelledby
      • ✔️ should click by accessibility_id
    • 📎 window size #resizeWindow
      • ✔️ should set initial window size
      • ✔️ should resize window to specific dimensions
      • ✔️ should resize window to maximum screen dimensions
    • 📎 SmartWait
      • ✔️ should wait for element to appear
      • ✔️ should wait for clickable element appear
      • ✔️ should wait for clickable context to appear
      • ✔️ should wait for text context to appear
      • ✔️ should work with grabbers
    • 📎 #_locateClickable
      • ✔️ should locate a button to click
      • ✔️ should not locate a non-existing checkbox
    • 📎 #_locateCheckable
      • ✔️ should locate a checkbox
      • ✔️ should not locate a non-existing checkbox
    • 📎 #_locateFields
      • ✔️ should locate a field
      • ✔️ should not locate a non-existing field
    • 📎 #grabBrowserLogs
      • ✔️ should grab browser logs
      • ✔️ should grab browser logs across pages
    • 📎 #dragAndDrop
      • ✔️ Drag item from source to target (no iframe) @dragNdrop
      • ✔️ Drag and drop from within an iframe
    • 📎 #switchTo frame
      • ✔️ should switch to frame using name
      • ✔️ should switch to root frame
      • ✔️ should switch to frame using frame number

📝 test/rest/ApiDataFactory_test.js

  • 📎 ApiDataFactory
    • 📎 create and cleanup records
      • ✔️ should create a new post
      • ✔️ should create a new post with predefined field
      • ✔️ should obtain id by function
      • ✔️ should update request with onRequest
      • ✔️ can use functions to set factories
      • ✔️ should cleanup created data
      • ✔️ should create multiple posts and cleanup after
      • ✔️ should create with different api
      • ✔️ should not remove records if cleanup:false
      • ✔️ should send default headers

📝 test/rest/REST_test.js

  • 📎 REST
    • 📎 basic requests
      • ✔️ should send GET requests
      • ✔️ should send PATCH requests: payload format = json
      • ✔️ should send PATCH requests: payload format = form urlencoded
      • ✔️ should send POST requests: payload format = json
      • ✔️ should send POST requests: payload format = form urlencoded
      • ✔️ should send PUT requests: payload format = json
      • ✔️ should send PUT requests: payload format = form urlencoded
      • ✔️ should send DELETE requests
      • ✔️ should update request with onRequest
      • ✔️ should set timeout for the request
    • 📎 headers
      • ✔️ should send request headers
      • ✔️ should set request headers
      • ✔️ should set Content-Type header if data is string and Content-Type is omitted
      • ✔️ should respect any passsed in Content-Type header
    • 📎 _url autocompletion
      • ✔️ should not prepend base url, when url is absolute
      • ✔️ should prepend base url, when url is not absolute
      • ✔️ should prepend base url, when url is not absolute, and "http" in request

📝 test/runner/allure_test.js

  • 📎 CodeceptJS Allure Plugin
    • ✔️ should enable allure reports
    • ✔️ should create xml file when assert message has ansi symbols
    • ✔️ should report skipped features
    • ✔️ should report BeforeSuite errors when executing via run command
    • ✔️ should report BeforeSuite errors when executing via run-workers command

📝 test/runner/bdd_test.js

  • 📎 BDD Gherkin
    • ✔️ should run feature files
    • ✔️ should print substeps in debug mode
    • ✔️ should print events in verbose mode
    • ✔️ should obfuscate secret substeps in debug mode
    • ✔️ should run feature with examples files
    • ✔️ should run feature with table and examples files
    • ✔️ should run feature with tables
    • ✔️ should run feature with long strings
    • ✔️ should run feature by file name
    • ✔️ should run feature by scenario name
    • ✔️ should run feature by tag name
    • ✔️ should run scenario by tag name
    • ✔️ should run scenario outline by tag
    • ✔️ should run scenario and scenario outline by tags
    • ✔️ should show all available steps
    • ✔️ should generate snippets for missing steps
    • ✔️ should not generate duplicated steps

📝 test/runner/before_failure_test.js

  • 📎 Failure in before
    • ✔️ should skip tests that are skipped because of failure in before hook
    • ✔️ should skip tests correctly with grep options
    • ✔️ should trigger skipped events

📝 test/runner/bootstrap_test.js

  • 📎 CodeceptJS Bootstrap and Teardown
    • ✔️ should run bootstrap
    • ✔️ should run teardown
    • ✔️ should run async bootstrap
    • ✔️ should run bootstrap/teardown as object
    • ✔️ should run async bootstrap function without args
    • ✔️ should run async bootstrap function with args
    • ✔️ should fail with code 1 when test failed and async bootstrap function without args
    • ✔️ should fail with code 1 when test failed and async bootstrap function with args
    • ✔️ should fail with code 1 when async bootstrap function without args failed
    • ✔️ should fail with code 1 when async bootstrap function with args failed
    • ✔️ should fail with code 1 when raise exceptin in the test file and async bootstrap function with args
    • ✔️ should fail with code 1 when raise exceptin in the test file and async bootstrap function without args
    • ✔️ should run async bootstrap/teardown with args
    • ✔️ should run async bootstrap/teardown without args
    • ✔️ should fail with code 1 when test failed and async bootstrap/teardown function with args
    • ✔️ should fail with code 1 when test failed and async bootstrap/teardown function without args
    • ✔️ should fail with code 1 when async bootstrap with args failed and not call teardown
    • ✔️ should fail with code 1 when async bootstrap without args failed and not call teardown

📝 test/runner/codecept_test.js

  • 📎 CodeceptJS Runner
    • ✔️ should be executed in current dir
    • ✔️ should be executed with glob
    • ✔️ should be executed with config path
    • ✔️ should show failures and exit with 1 on fail
    • 📎 grep
      • ✔️ filter by scenario tags
      • ✔️ filter by scenario tags #2
      • ✔️ filter by feature tags
      • 📎 without "invert" option
        • ✔️ should filter by scenario tags
        • ✔️ should filter by scenario tags #2
        • ✔️ should filter by feature tags
      • 📎 with "invert" option
        • ✔️ should filter by scenario tags
        • ✔️ should filter by scenario tags #2
        • ✔️ should filter by feature tags
        • ✔️ should filter by feature tags
        • ✔️ should run hooks
        • ✔️ should run hooks from suites
        • ✔️ should run hooks from suites (in different order)
        • ✔️ should run different types of scenario
        • ✔️ should run dynamic config
        • ✔️ should run dynamic config with profile
        • ✔️ should run dynamic config with profile 2
    • 📎 with require parameter
      • ✔️ should be executed with module when described
      • ✔️ should be executed with several modules when described
      • ✔️ should not be executed without module when not described
  • 📎 Codeceptjs Events
    • ✔️ should fire events with only passing tests
    • ✔️ should fire events with passing and failing tests

📝 test/runner/comment_step_test.js

  • 📎 CodeceptJS commentStep plugin
    • ✔️ should print nested steps when global var comments used
    • ✔️ should print nested steps when local var comments used

📝 test/runner/definitions_test.js

  • 📎 Definitions
    • 📎 Static files
      • ✔️ should have internal object that is available as variable codeceptjs
      • ✔️ def should create definition file
      • ✔️ def should create definition file with correct page def
      • ✔️ def should create definition file given a config file
      • ✔️ def should create definition file with support object
      • ✔️ def should create definition file with inject which contains support objects
      • ✔️ def should create definition file with inject which contains I object
      • ✔️ def should create definition file with inject which contains I object from helpers
      • ✔️ def should create definition file with callback params

📝 test/runner/dry_run_test.js

  • 📎 dry-run command
    • ✔️ should be executed with config path
    • ✔️ should list all tests
    • ✔️ should not run actual steps
    • ✔️ should not run helper hooks
    • ✔️ should display meta steps and substeps
    • ✔️ should run feature files
    • ✔️ should print substeps in debug mode
    • ✔️ should run tests with different data
    • ✔️ should display meta steps and substeps
    • ✔️ should work with inject() keyword
    • ✔️ should inject page objects via proxy

📝 test/runner/interface_test.js

  • 📎 CodeceptJS Interface
    • ✔️ should rerun flaky tests
    • ✔️ should rerun retried steps
    • ✔️ should not propagate retries to non retried steps
    • ✔️ should use retryFailedStep plugin for failed steps
    • ✔️ should not retry wait* steps in retryFailedStep plugin
    • ✔️ should not retry steps if retryFailedStep plugin disabled
    • ✔️ should include grep option tests
    • ✔️ should run tests with different data
    • ✔️ should run all tests with data of array by only
    • ✔️ should run all tests with data of generator by only
    • ✔️ should execute expected promise chain
    • ✔️ should display meta steps and substeps
    • ✔️ should work with inject() keyword
    • ✔️ should inject page objects via proxy

📝 test/runner/list_test.js

  • 📎 list commands
    • ✔️ list should print actions

📝 test/runner/pageobject_test.js

  • 📎 CodeceptJS Interface
    • ✔️ should inject page objects by class
    • ✔️ should inject page objects by class which nested base clas

📝 test/runner/run_multiple_test.js

  • 📎 CodeceptJS Multiple Runner
    • ✔️ should execute one suite with browser
    • ✔️ should execute all suites
    • ✔️ should replace parameters
    • ✔️ should execute multiple suites
    • ✔️ should execute multiple suites with selected browsers
    • ✔️ should print steps
    • ✔️ should pass grep to configuration
    • ✔️ should pass grep invert to configuration
    • ✔️ should pass tests to configuration
    • ✔️ should run chunks
    • ✔️ should run features in parallel
    • ✔️ should run features & tests in parallel
    • ✔️ should run only tests in parallel
    • 📎 bootstrapAll and teardownAll
      • ✔️ should be executed from async function in config
      • ✔️ should be executed from function in config
      • ✔️ should be executed from function in file
      • ✔️ should be executed from object in file
    • 📎 with require parameter
      • ✔️ should be executed with module when described
      • ✔️ should be executed with several module when described
      • ✔️ should not be executed without module when not described

📝 test/runner/run_rerun_test.js

  • 📎 run-rerun command
    • ✔️ should display count of attemps
    • ✔️ should display 2 success count of attemps
    • ✔️ should display error if minSuccess more than maxReruns
    • ✔️ should display errors if test is fail always
    • ✔️ should display success run if test was fail one time of two attepmts and 3 reruns

📝 test/runner/run_workers_test.js

  • 📎 CodeceptJS Workers Runner
    • ✔️ should run tests in 3 workers
    • ✔️ should print positive or zero failures with same name tests
    • ✔️ should use grep
    • ✔️ should show failures when suite is failing
    • ✔️ should print stdout in debug mode and load bootstrap
    • ✔️ should run tests with glob pattern
    • ✔️ should print empty results with incorrect glob pattern
    • ✔️ should retry test
    • ✔️ should create output folder with custom name

📝 test/runner/session_test.js

  • 📎 CodeceptJS session
    • ✔️ should run with 3 sessions
    • ✔️ should run session defined before executing
    • ✔️ should run all session tests

📝 test/runner/todo_test.js

  • 📎 Todo
    • ✔️ should skip test with todo
    • ✔️ should skip inject skipinfo to todo test
    • ✔️ should correctly pass custom opts for todo test

📝 test/runner/translation_test.js

  • 📎 Translation
    • ✔️ Should run translated test file

📝 test/runner/within_test.js

  • 📎 CodeceptJS within
    • ✔️ should execute if no generators
    • ✔️ should execute with async/await. Await is first in order
    • ✔️ should execute with async/await. Await is second in order

📝 test/unit/actor_test.js

  • 📎 Actor
    • ✔️ should take all methods from helpers and built in
    • ✔️ should return promise
    • ✔️ should produce step events
    • ✔️ should retry failed step with #retry
    • ✔️ should retry once step with #retry
    • ✔️ should print handle failed steps

📝 test/unit/assert_test.js

  • 📎 Assertion
    • ✔️ should handle asserts
    • ✔️ should handle negative asserts

📝 test/unit/assert/empty_test.js

  • 📎 empty assertion
    • ✔️ should check for something to be empty
    • ✔️ should check for something not to be empty
    • ✔️ should provide nice assert error message
    • ✔️ should provide nice negate error message

📝 test/unit/assert/equal_test.js

  • 📎 equal assertion
    • ✔️ should check for equality
    • ✔️ should check for something not to be equal
    • ✔️ should provide nice assert error message
    • ✔️ should provide nice negate error message

📝 test/unit/assert/include_test.js

  • 📎 equal assertion
    • ✔️ should check for inclusion
    • ✔️ should check !include
    • ✔️ should provide nice assert error message
    • ✔️ should provide nice negate error message

📝 test/unit/bdd_test.js

  • 📎 BDD
    • ✔️ should parse gherkin input
    • ✔️ should load step definitions
    • ✔️ should contain tags
    • ✔️ should load step definitions
    • ✔️ should allow failed steps
    • ✔️ should work with async functions
    • ✔️ should execute scenarios step-by-step
    • ✔️ should match step with params
    • ✔️ should use shortened form for step definitions
    • ✔️ should attach before hook for Background
    • ✔️ should execute scenario outlines
    • ✔️ should provide a parsed DataTable

📝 test/unit/config_test.js

  • 📎 Config
    • ✔️ should be created
    • ✔️ should be completely reset
    • ✔️ can be updated
    • ✔️ should use config hooks to enhance configs

📝 test/unit/container_test.js

  • 📎 Container
    • 📎 #translation
      • ✔️ should create empty translation
      • ✔️ should create Russian translation
      • ✔️ should create Italian translation
      • ✔️ should create French translation
    • 📎 #helpers
      • ✔️ should return all helper with no args
      • ✔️ should return helper by name
    • 📎 #support
      • ✔️ should return all support objects
      • ✔️ should support object by name
    • 📎 #plugins
      • ✔️ should return all plugins
      • ✔️ should get plugin by name
    • 📎 #create
      • ✔️ should create container with helpers
      • ✔️ should always create I
      • ✔️ should load DI and return a reference to the module
      • ✔️ should load I from path and execute _init
      • ✔️ should load DI includes provided as require paths
      • ✔️ should load DI and inject I into PO
      • ✔️ should load DI and inject custom I into PO
      • ✔️ should load DI includes provided as objects
      • ✔️ should load DI includes provided as objects
    • 📎 #append
      • ✔️ should be able to add new helper
      • ✔️ should be able to add new support object

📝 test/unit/data/dataTableArgument_test.js

  • 📎 DataTableArgument
    • ✔️ should return a 2D array containing each row
    • ✔️ should return a 2D array containing each row without the header (first one)
    • ✔️ should return an of object where properties is the header

📝 test/unit/data/table_test.js

  • 📎 DataTable
    • ✔️ should take an array for creation
    • ✔️ should allow arrays to be added
    • ✔️ should not allow an empty array to be added
    • ✔️ should not allow an array with more slots than the original to be added
    • ✔️ should not allow an array with less slots than the original to be added
    • ✔️ should filter an array
    • ✔️ should filter an array with skips

📝 test/unit/data/ui_test.js

  • 📎 ui
    • 📎 Data
      • ✔️ can add a tag to all scenarios
      • ✔️ can add a timout to all scenarios
      • ✔️ can add retries to all scenarios
      • ✔️ can expect failure for all scenarios
      • ✔️ can expect a specific error for all scenarios
      • ✔️ can configure a helper for all scenarios
      • ✔️ should shows object's toString() method in each scenario's name if the toString() method is overrided
      • ✔️ should shows JSON.stringify() in each scenario's name if the toString() method isn't overrided

📝 test/unit/helper/element_not_found_test.js

  • 📎 ElementNotFound error
    • ✔️ should throw error
    • ✔️ should provide default message
    • ✔️ should use prefix for message
    • ✔️ should use postfix for message
    • ✔️ should stringify locator object

📝 test/unit/helper/FileSystem_test.js

  • 📎 FileSystem
    • ✔️ should be initialized before tests
    • ✔️ should open dirs
    • ✔️ should see file
    • ✔️ should check file contents

📝 test/unit/locator_test.js

  • 📎 Locator
    • 📎 constructor
      • 📎 with string argument
        • ✔️ should create css locator
        • ✔️ should create xpath locator
        • ✔️ should create fuzzy locator
        • ✔️ should create described custom default type locator
      • 📎 with object argument
        • ✔️ should create id locator
        • ✔️ should create described custom locator
      • 📎 with Locator object argument
        • ✔️ should create id locator
        • ✔️ should transform CSS to xpath
        • ✔️ should build locator to match element by attr
        • ✔️ should build locator to match element by text
        • ✔️ should build locator to match element by position
        • ✔️ should build complex locator
        • ✔️ should select a by label
        • ✔️ should select child element by name
        • ✔️ should select element by siblings
        • ✔️ should throw an error when xpath with round brackets is nested
        • ✔️ should throw an error when locator with specific position is nested
        • ✔️ should not select element by deep nested siblings
        • ✔️ should select element by siblings
        • ✔️ should translate locator to string
        • ✔️ should be able to add custom locator strategy
        • ✔️ should be able to add custom locator strategy

📝 test/unit/output_test.js

  • 📎 Output
    • ✔️ should allow the output level to be set
    • ✔️ should allow the process to be set
    • ✔️ should allow debug messages when output level >= 2

📝 test/unit/parser_test.js

  • 📎 parser
    • 📎 #getParamsToString
      • ✔️ should get params for normal function
      • ✔️ should get params for async function

📝 test/unit/plugin/customLocator_test.js

  • 📎 customLocator
    • ✔️ add a custom locator by $ -> data-qa
    • ✔️ add a custom locator by = -> data-test-id
    • ✔️ add a custom locator with multple char prefix = -> data-test-id
    • ✔️ add a custom locator with CSS

📝 test/unit/plugin/retryFailedStep_test.js

  • 📎 retryFailedStep
    • ✔️ should retry failed step
    • ✔️ should not retry within
    • ✔️ should not retry steps with wait*
    • ✔️ should not retry steps with amOnPage
    • ✔️ should add custom steps to ignore
    • ✔️ should not retry session

📝 test/unit/plugin/screenshotOnFail_test.js

  • 📎 screenshotOnFail
    • ✔️ should exclude the data driven in failed screenshot file name
    • ✔️ should create screenshot on fail
    • ✔️ should create screenshot with unique name
    • ✔️ should create screenshot with unique name when uuid is null

📝 test/unit/recorder_test.js

  • 📎 Recorder
    • ✔️ should create a promise
    • ✔️ should execute error handler on error
    • 📎 #session
      • ✔️ can be started saving previous promise chain
    • 📎 #add
      • ✔️ should add steps to promise
      • ✔️ should not add steps when stopped
    • 📎 #retry
      • ✔️ should retry failed steps when asked
      • ✔️ should create a chain of retries

📝 test/unit/scenario_test.js

  • 📎 Scenario
    • ✔️ should wrap test function
    • ✔️ should work with async func
    • 📎 events
      • ✔️ should fire events
      • ✔️ should fire failed event on error
      • ✔️ should fire failed event on async error

📝 test/unit/steps_test.js

  • 📎 Step
    • ✔️ has name
    • ✔️ should convert method names for output
    • ✔️ should convert arguments for output
    • ✔️ should provide nice output
    • ✔️ should provide code output
    • 📎 #run
      • ✔️ should run step

📝 test/unit/ui_test.js

  • 📎 ui
    • 📎 basic constants
      • ✔️ context should contain
    • 📎 Feature
      • ✔️ Feature should return featureConfig
      • ✔️ should contain title
      • ✔️ should contain tags
      • ✔️ retries can be set
      • ✔️ timeout can be set
      • ✔️ helpers can be configured
      • ✔️ Feature can be skipped
      • ✔️ Feature can be skipped via xFeature
      • ✔️ Feature are not skipped by default
      • ✔️ Feature should correctly pass options to suite context
    • 📎 Scenario
      • ✔️ Scenario should return scenarioConfig
      • ✔️ should contain title
      • ✔️ should contain tags
      • ✔️ should dynamically inject dependencies
      • 📎 todo
        • ✔️ should inject skipInfo to opts
        • ✔️ should contain empty description in skipInfo and empty body
        • ✔️ should inject custom opts to opts and without callback
        • ✔️ should inject custom opts to opts and with callback

📝 test/unit/utils_test.js

  • 📎 utils
    • 📎 #fileExists
      • ✔️ exists
      • ✔️ not exists
    • 📎 #getParamNames
      • ✔️ fn#1
      • ✔️ fn#2
      • ✔️ should handle single-param arrow functions with omitted parens
      • ✔️ should handle trailing comma
    • 📎 #methodsOfObject
      • ✔️ should get methods
    • 📎 #ucfirst
      • ✔️ should capitalize first letter
    • 📎 #beautify
      • ✔️ should beautify JS code
    • 📎 #xpathLocator
      • ✔️ combines xpaths
      • ✔️ converts string to xpath literal
    • 📎 #replaceValueDeep
      • ✔️ returns updated object
      • ✔️ do not replace unexisting value
      • ✔️ replace simple value
      • ✔️ replace simple falsy value
      • ✔️ replace value in array of objects
      • ✔️ replace simple value deep in object
      • ✔️ replace object value
    • 📎 #getNormalizedKeyAttributeValue
      • ✔️ should normalize key (alias) to key attribute value
      • ✔️ should normalize modifier key based on operating system
    • 📎 #screenshotOutputFolder
      • ✔️ returns the joined filename for filename only
      • ✔️ returns the given filename for absolute one