Skip to content

Locator builder produces incorrect value for "locate().withText().inside()" #4167

@mirao

Description

@mirao

What are you trying to achieve?

locate(".ps-menu-button").withText("Authoring").inside(".ps-submenu-root:nth-child(3)") is translated to XPath that matches an element on page

  • 3.5.8: //*[contains(concat(' ', normalize-space(./@class), ' '), ' ps-menu-button ')][contains(., 'Authoring')][ancestor::*[(contains(concat(' ', normalize-space(./@class), ' '), ' ps-submenu-root ') and count(preceding-sibling::*) = 2)]] works ✔️

image
image

What do you get instead?

  • 3.5.10/3.5.11: //*[contains(@class, "ps-menu-button")][contains(., 'Authoring')][ancestor::*[3][contains(@class, "ps-submenu-root")]] doesn't work (neither in test nor in web browser inspector) 🐞
  • 3.5.12: //*[@class and contains(concat(' ', normalize-space(@class), ' '), ' ps-menu-button ')][contains(., 'Authoring')][ancestor::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' ps-submenu-root ') and (position() = 3)]] doesn't work (neither in test nor in web browser inspector) 🐞

Details

  • CodeceptJS version: 3.5.12
  • NodeJS Version: v18.15.0
  • Operating System: Ubuntu 22.04

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions