248fc5d3e7
* 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
24 lines
946 B
Ruby
24 lines
946 B
Ruby
module ApplicationHelper
|
|
def page_title_tag
|
|
account_name = if Current.account && Current.session&.identity&.users&.many?
|
|
Current.account&.name
|
|
end
|
|
tag.title [ @page_title, account_name, "Fizzy" ].compact.join(" | ")
|
|
end
|
|
|
|
def icon_tag(name, **options)
|
|
tag.span class: class_names("icon icon--#{name}", options.delete(:class)), "aria-hidden": true, **options
|
|
end
|
|
|
|
def back_link_to(label, url, action, prefer_referrer: [], **options)
|
|
data = { controller: "hotkey", action: action }
|
|
if prefer_referrer.any?
|
|
data[:turbo_navigation_target] = "referrerBackLink"
|
|
data[:turbo_navigation_allowed_referrer_paths] = prefer_referrer.join(",")
|
|
end
|
|
link_to url, class: "btn btn--back btn--circle-mobile", data: data, **options do
|
|
icon_tag("arrow-left") + tag.strong("Back to #{label}", class: "overflow-ellipsis") + tag.kbd("ESC", class: "txt-x-small hide-on-touch").html_safe
|
|
end
|
|
end
|
|
end
|