mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-25 07:06:48 +09:00
Replace Trix with Lexxy
This commit is contained in:
1 parent
91d294f4a0
commit
47bc5f5425
46 files changed
+678
-495
No files matched your search
@@ -0,0 +1,56 @@
|
||||
# Drives the rich text editor in the composer. Encapsulates all editor-specific
|
||||
# selectors and interactions so tests describe behavior, not the editor's DOM.
|
||||
module RichTextEditorHelper
|
||||
# Rails' built-in helper drives Trix; this drives Lexxy
|
||||
def fill_in_rich_text_area(id, with:)
|
||||
find("lexxy-editor##{id}").execute_script("this.value = arguments[0]", with)
|
||||
end
|
||||
|
||||
def composer_editor
|
||||
find("#composer lexxy-editor .lexxy-editor__content")
|
||||
end
|
||||
|
||||
def type_in_composer(text)
|
||||
composer_editor.click
|
||||
composer_editor.send_keys(text)
|
||||
end
|
||||
|
||||
def press_in_composer(*keys)
|
||||
composer_editor.send_keys(*keys)
|
||||
end
|
||||
|
||||
# The rich text button is only displayed for fine-pointer devices, a media
|
||||
# query headless Chrome doesn't satisfy, so click it directly.
|
||||
def toggle_rich_text_toolbar
|
||||
page.execute_script("document.querySelector('#composer .composer__rich-text-btn').click()")
|
||||
end
|
||||
|
||||
# Waits for the suggestion to appear, then commits the selected one with Tab.
|
||||
def pick_mention(name)
|
||||
assert_selector ".lexxy-prompt-menu__item", text: name
|
||||
composer_editor.send_keys :tab
|
||||
end
|
||||
|
||||
def paste_in_composer(text)
|
||||
composer_editor.click
|
||||
|
||||
page.execute_script(<<~JS, text)
|
||||
const content = document.querySelector("#composer lexxy-editor .lexxy-editor__content")
|
||||
const event = new ClipboardEvent("paste", { bubbles: true, cancelable: true, clipboardData: new DataTransfer() })
|
||||
event.clipboardData.setData("text/plain", arguments[0])
|
||||
content.dispatchEvent(event)
|
||||
JS
|
||||
end
|
||||
|
||||
def assert_composer_text(text)
|
||||
assert_selector "#composer lexxy-editor .lexxy-editor__content", text: text
|
||||
end
|
||||
|
||||
def assert_composer_empty
|
||||
assert_no_selector "#composer lexxy-editor .lexxy-editor__content", text: /./
|
||||
end
|
||||
|
||||
def assert_edit_editor_text(text)
|
||||
assert_selector ".message__body-content--editing lexxy-editor", text: text
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user