test: Improve test suite setup

Этот коммит содержится в:
Mattia Roccoberton
2025-04-13 15:00:22 +02:00
родитель d19fc7ddfc
Коммит 6cbb39daad
18 изменённых файлов: 114 добавлений и 209 удалений

Просмотреть файл

@@ -1,7 +1,5 @@
# frozen_string_literal: true
require_relative '../../base_page'
module Admin
module Authors
class EditPage < BasePage

Просмотреть файл

@@ -1,7 +1,5 @@
# frozen_string_literal: true
require_relative '../../base_page'
module Admin
module Posts
class EditPage < BasePage

Просмотреть файл

@@ -12,4 +12,8 @@ class BasePage
def load
visit(path)
end
def lookup_editor(editor_container:)
@editor = Shared::QuillEditor.new(editor_container)
end
end

Просмотреть файл

@@ -1,35 +1,35 @@
# frozen_string_literal: true
require_relative '../base_object'
module Shared
class HtmlEditor < BaseObject
def content_element
raise NotImplementedError
end
class HtmlEditor < BaseObject
def content_element
raise NotImplementedError
end
def clear
select_all
content_element.send_keys(:delete)
self
end
def clear
select_all
content_element.send_keys(:delete)
self
end
# @return [self]
def open_dropdown
raise NotImplementedError
end
# @return [self]
def open_dropdown
raise NotImplementedError
end
def select_all
content_element.send_keys([:control, "a"])
self
end
def select_all
content_element.send_keys([:control, "a"])
self
end
def toolbar_control(control, ...)
send(:"toggle_#{control}", ...)
self
end
def toolbar_control(control, ...)
send(:"toggle_#{control}", ...)
self
end
def <<(content)
content_element.send_keys(content)
self
def <<(content)
content_element.send_keys(content)
self
end
end
end

Просмотреть файл

@@ -1,44 +1,46 @@
# frozen_string_literal: true
class QuillEditor < HtmlEditor
SELECTOR = '.ql-container'
TOOLBAR_SELECTOR = '.ql-toolbar'
module Shared
class QuillEditor < HtmlEditor
SELECTOR = '.ql-container'
TOOLBAR_SELECTOR = '.ql-toolbar'
attr_reader :toolbar, :toolbar_selector
attr_reader :toolbar, :toolbar_selector
def initialize(selector: SELECTOR, toolbar_selector: TOOLBAR_SELECTOR)
super(selector: selector)
@toolbar = find(toolbar_selector)
@toolbar_selector = toolbar_selector
end
def initialize(selector: SELECTOR, toolbar_selector: TOOLBAR_SELECTOR)
super(selector: selector)
@toolbar = find(toolbar_selector)
@toolbar_selector = toolbar_selector
end
def content_element
@content_element ||= find("#{selector} .ql-editor")
end
def content_element
@content_element ||= find("#{selector} .ql-editor")
end
def control_selector(control)
case control&.to_sym
when :bold then "#{toolbar_selector} button.ql-bold"
when :italic then "#{toolbar_selector} button.ql-italic"
when :underline then "#{toolbar_selector} button.ql-underline"
when :link then "#{toolbar_selector} button.ql-link"
else raise "Invalid control #{control}"
def control_selector(control)
case control&.to_sym
when :bold then "#{toolbar_selector} button.ql-bold"
when :italic then "#{toolbar_selector} button.ql-italic"
when :underline then "#{toolbar_selector} button.ql-underline"
when :link then "#{toolbar_selector} button.ql-link"
else raise "Invalid control #{control}"
end
end
def toggle_bold
find(control_selector(:bold)).click
end
def toggle_italic
find(control_selector(:italic)).click
end
def toggle_underline
find(control_selector(:underline)).click
end
def toggle_link
find(control_selector(:link)).click
end
end
def toggle_bold
find(control_selector(:bold)).click
end
def toggle_italic
find(control_selector(:italic)).click
end
def toggle_underline
find(control_selector(:underline)).click
end
def toggle_link
find(control_selector(:link)).click
end
end