DEV: Add helpers for system testing in plugins (#19421)

Add helpers for system testing in plugins
This commit is contained in:
Natalie Tay 2022-12-16 18:25:31 +08:00 committed by GitHub
parent 3c6ef38309
commit 0ee050e208
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 75 additions and 2 deletions

View File

@ -75,8 +75,7 @@ end
# in spec/support/ and its subdirectories. # in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
require Rails.root.join("spec/system/page_objects/pages/base.rb") Dir[Rails.root.join("spec/system/page_objects/**/base.rb")].each { |f| require f }
require Rails.root.join("spec/system/page_objects/modals/base.rb")
Dir[Rails.root.join("spec/system/page_objects/**/*.rb")].each { |f| require f } Dir[Rails.root.join("spec/system/page_objects/**/*.rb")].each { |f| require f }
Dir[Rails.root.join("spec/fabricators/*.rb")].each { |f| require f } Dir[Rails.root.join("spec/fabricators/*.rb")].each { |f| require f }

View File

@ -15,6 +15,10 @@ module SystemHelpers
visit "/session/#{user.encoded_username}/become" visit "/session/#{user.encoded_username}/become"
end end
def sign_out
delete "/session"
end
def setup_system_test def setup_system_test
SiteSetting.login_required = false SiteSetting.login_required = false
SiteSetting.content_security_policy = false SiteSetting.content_security_policy = false

View File

@ -0,0 +1,10 @@
# frozen_string_literal: true
module PageObjects
module Components
class Base
include Capybara::DSL
include RSpec::Matchers
end
end
end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
module PageObjects
module Components
class Composer < PageObjects::Components::Base
def open_new_topic
visit("/latest")
find("button#create-topic").click
self
end
def open_composer_actions
find(".composer-action-title .btn").click
self
end
def fill_title(title)
find("#reply-control #reply-title").fill_in(with: title)
self
end
def fill_content(content)
find("#reply-control .d-editor-input").fill_in(with: content)
self
end
def select_action(action)
find(action(action)).click
self
end
def create
find("#reply-control .btn-primary").click
end
def action(action_title)
".composer-action-title .select-kit-collection li[title='#{action_title}']"
end
def button_label
find("#reply-control .btn-primary .d-button-label")
end
end
end
end

View File

@ -0,0 +1,15 @@
# frozen_string_literal: true
module PageObjects
module Components
class TopicList < PageObjects::Components::Base
def topic_list
".topic-list-body"
end
def visit_topic_with_title(title)
find(".topic-list-body a", text: title).click
end
end
end
end