mirror of
https://github.com/discourse/discourse.git
synced 2025-04-27 04:24:29 +08:00

This particular system test is taking a long time (~20 seconds) on CI because it is doing many full page loads. This commit refactors the test to be more efficient about the number of full page loads triggered by the tests thus reducing the runtime by half. Co-authored-by: Krzysztof Kotlarek <kotlarek.krzysztof@gmail.com>
112 lines
2.7 KiB
Ruby
112 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class AdminFlags < AdminBase
|
|
def visit
|
|
page.visit("/admin/config/flags")
|
|
self
|
|
end
|
|
|
|
def toggle(key)
|
|
PageObjects::Components::DToggleSwitch.new(".admin-flag-item__toggle.#{key}").toggle
|
|
has_saved_flag?(key)
|
|
self
|
|
end
|
|
|
|
def toggle_flag_menu(key)
|
|
find(".#{key} .flag-menu-trigger").click
|
|
self
|
|
end
|
|
|
|
def has_action_for_flag?(flag)
|
|
has_selector?(".#{flag} .flag-menu-trigger")
|
|
end
|
|
|
|
def has_no_action_for_flag?(flag)
|
|
has_no_selector?(".#{flag} .flag-menu-trigger")
|
|
end
|
|
|
|
def has_disabled_edit_for_flag?(flag)
|
|
has_selector?(".#{flag} .admin-flag-item__edit[disabled]")
|
|
end
|
|
|
|
def has_disabled_item_action?(action)
|
|
has_selector?(".admin-flag-item__#{action}[disabled]")
|
|
end
|
|
|
|
def has_item_action?(action)
|
|
has_selector?(".admin-flag-item__#{action}")
|
|
end
|
|
|
|
def has_no_item_action?(action)
|
|
has_no_selector?(".admin-flag-item__#{action}")
|
|
end
|
|
|
|
def has_flags?(*flags)
|
|
expect(all(".admin-flag-item__name").map(&:text)).to eq(flags)
|
|
end
|
|
|
|
def has_add_flag_button_enabled?
|
|
has_css?(".admin-flags__header-add-flag:not([disabled])")
|
|
end
|
|
|
|
def has_add_flag_button_disabled?
|
|
has_css?(".admin-flags__header-add-flag[disabled]")
|
|
end
|
|
|
|
def has_flag?(flag)
|
|
has_css?(".admin-flag-item.#{flag}")
|
|
end
|
|
|
|
def has_no_flag?(flag)
|
|
has_no_css?(".admin-flag-item.#{flag}", wait: Capybara.default_max_wait_time * 3)
|
|
end
|
|
|
|
def has_saved_flag?(key)
|
|
has_css?(".admin-flag-item.#{key}.saved")
|
|
end
|
|
|
|
def has_closed_flag_menu?
|
|
has_no_css?(".flag-menu-content")
|
|
end
|
|
|
|
def move_down(key)
|
|
toggle_flag_menu(key)
|
|
find(".admin-flag-item__move-down").click
|
|
has_closed_flag_menu?
|
|
self
|
|
end
|
|
|
|
def move_up(key)
|
|
toggle_flag_menu(key)
|
|
find(".admin-flag-item__move-up").click
|
|
has_closed_flag_menu?
|
|
self
|
|
end
|
|
|
|
def click_add_flag
|
|
find(".admin-flags__header-add-flag").click
|
|
self
|
|
end
|
|
|
|
def click_edit_flag(key)
|
|
find(".#{key} .admin-flag-item__edit").click
|
|
self
|
|
end
|
|
|
|
def click_delete_flag(key)
|
|
find(".#{key} .flag-menu-trigger").click
|
|
find(".admin-flag-item__delete").click
|
|
self
|
|
end
|
|
|
|
def confirm_delete
|
|
find(".dialog-footer .btn-primary").click
|
|
expect(page).to have_no_css(".dialog-body", wait: Capybara.default_max_wait_time * 3)
|
|
self
|
|
end
|
|
end
|
|
end
|
|
end
|