Files
fizzy/test/system/markdown_paste_test.rb
T
Mike Dalessio 248fc5d3e7 Fix back navigation from filter views to cards (#2725)
* test: update sign_in_as system test helper to be more generic

and support fixture users with more than one board

* test: backfill a test for the card "back link"

when coming from a board filter page

* Fix back navigation to filter views from cards

When navigating from a filter view to a card, the back link now shows
the filter's label and navigates back to the filter URL instead of the
card's board.

The turbo-navigation Stimulus controller stores the page title alongside
the referrer URL in sessionStorage. On the card show page, a
referrerBackLink target rewrites the back link's href and label from the
stored values. This is scoped only to the card show page to avoid
navigation loops in multi-level deep pages.

* Add referrer allowlist to prevent stale referrer rewrites

The back link is only rewritten when the stored referrer's path matches
an allowlist of paths passed via prefer_referrer. This prevents stale
referrers from unrelated pages (e.g., settings) from overriding the
card's back link.

* Move back link navigation tests to dedicated system test file

Extract back link tests from smoke_test.rb into their own file since
they test specific JavaScript behavior that needs regression coverage.
Move sign_in_as helper to ApplicationSystemTestCase for reuse.

* Move markdown paste tests to dedicated system test file
2026-03-18 17:03:13 -04:00

45 lines
1.2 KiB
Ruby

require "application_system_test_case"
class MarkdownPasteTest < ApplicationSystemTestCase
test "markdown paste adds block spacing" do
sign_in_as(users(:david))
visit card_url(cards(:layout))
find("lexxy-editor").click
paste_markdown("Hello\n\nWorld")
within("lexxy-editor") do
assert_selector "p", text: "Hello"
assert_selector "p br", visible: :all
assert_selector "p", text: "World"
end
end
test "markdown paste preserves line breaks" do
sign_in_as(users(:david))
visit card_url(cards(:layout))
find("lexxy-editor").click
paste_markdown("Hello\nWorld")
inner_html = find("lexxy-editor p", text: "Hello").native.property("innerHTML")
children = Nokogiri::HTML5.fragment(inner_html).children
assert_pattern do
children => [
{ name: "span", inner_html: "Hello" },
{ name: "br" },
{ name: "span", inner_html: "World" }
]
end
end
private
def paste_markdown(markdown)
page.execute_script(<<~JS, markdown)
const dt = new DataTransfer();
dt.setData("text/plain", arguments[0]);
document.activeElement.dispatchEvent(new ClipboardEvent("paste", { clipboardData: dt, bubbles: true }));
JS
end
end