mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 02:33:10 +08:00

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.
42 lines
855 B
Ruby
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
|