discourse/plugins/chat/spec/system/page_objects/chat_drawer
Régis Hanol b9e762981a
FIX: Chat back button loses starred context after drawer reopen (#40219)
When the chat drawer is closed and reopened on a starred channel, the
back button took the user to the default channels list instead of the
starred-channels list they had originally come from.

Root cause: `chatHistory.visit(route)` always appended to history. When
the drawer reopens to `lastKnownChatURL` (the channel itself), the same
route is appended a second time, shifting `previousRoute` off the
original `chat.starred-channels` entry. The back-button fallback in
`drawer-routes/channel.gjs` then routed to `chat.channels`.

Fix: dedupe consecutive identical route visits in `chatHistory.visit` by
comparing name and params (via `deepEqual`). Reopening to the same URL
no longer clobbers the user's real navigation context.

Adds a unit test for the dedup behavior, a system spec covering the
close/reopen scenario, and a view-agnostic `open_channel_row` helper on
the drawer page object (the existing `open_channel` is scoped to the
channels-list view only and doesn't work from the starred view).

https://meta.discourse.org/t/403431
2026-05-21 17:55:46 +02:00
..
chat_drawer.rb FIX: Chat back button loses starred context after drawer reopen (#40219) 2026-05-21 17:55:46 +02:00