Ted Johansson 4682919744
DEV: Add base admin page page object (#30814)
This PR introduces a base page object for admin pages. Since we're standardizing using components, this makes writing tests easier by abstracting away details about selectors.
2025-01-16 12:52:41 +08:00

42 lines
855 B
Ruby

# frozen_string_literal: true
module PageObjects
module Components
class DPageHeader < PageObjects::Pages::Base
def has_tabs?(names)
expect(page.all("#{tabs_container_selector} a").map(&:text)).to eq(names)
end
def has_active_tab?(tab_name)
find("#{tab_selector(tab_name)} .active")
end
def tab(tab_name)
find(tab_selector(tab_name))
end
def visible?
has_css?(".d-page-header")
end
def hidden?
has_no_css?(".d-page-header")
end
private
def tabs_container_selector
"ul.d-nav-submenu__tabs"
end
def tab_item_selector(tab_name)
"li[class$='-tabs__#{tab_name}']"
end
def tab_selector(tab_name)
"#{tabs_container_selector} > #{tab_item_selector(tab_name)}"
end
end
end
end