discourse/spec/system/page_objects/pages/user_preferences.rb
Alan Guo Xiang Tan 31e44cfa82
DEV: Fix flaky "Changing email" system tests (#25805)
Why this change?

`current_url` does not rely on Capybara waiters so opt to use
`have_current_path` matcher instead. Also assert for email against
element displayed on the page instead of querying the database for it
which isn't really what system tests are meant for.
2024-02-22 10:46:37 +08:00

56 lines
1.5 KiB
Ruby

# frozen_string_literal: true
module PageObjects
module Pages
class UserPreferences < PageObjects::Pages::Base
def visit(user)
page.visit("/u/#{user.username}/preferences")
self
end
def click_interface_tab
click_link "Interface"
self
end
def click_secondary_navigation_menu_scroll_right
find(".horizontal-overflow-nav__scroll-right").click
end
def click_secondary_navigation_menu_scroll_left
find(".horizontal-overflow-nav__scroll-left").click
end
INTERFACE_LINK_CSS_SELECTOR = ".user-nav__preferences-tracking"
def has_interface_link_visible?
horizontal_secondary_link_visible?(INTERFACE_LINK_CSS_SELECTOR, visible: true)
end
def has_interface_link_not_visible?
horizontal_secondary_link_visible?(INTERFACE_LINK_CSS_SELECTOR, visible: false)
end
ACCOUNT_LINK_CSS_SELECTOR = ".user-nav__preferences-account"
def has_account_link_visible?
horizontal_secondary_link_visible?(ACCOUNT_LINK_CSS_SELECTOR, visible: true)
end
def has_account_link_not_visible?
horizontal_secondary_link_visible?(ACCOUNT_LINK_CSS_SELECTOR, visible: false)
end
def has_primary_email?(email)
has_css?(".email-first", text: email)
end
private
def horizontal_secondary_link_visible?(selector, visible: true)
within(".user-navigation-secondary") { page.has_selector?(selector, visible: visible) }
end
end
end
end