DEV: waits for transition in move message spec (#21763)

This flakey has been very visible by the new headless chrome. The problem was that after moving a message we automatically redirect to the channel where the message has been moved to. However, we were not explicitly waiting for this transition and a result it could happen that we attempt to check the presence of the message on the channel page before the redirect actually happened.

The various naming changes are due to an early mistake we made in chat specs to use `chat` as the variable name for the page object which prevents to use the automatic path `chat.channel_path(...)`.

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
Joffrey JAFFEUX
2023-05-26 10:04:37 +02:00
committed by GitHub
parent 0645f3628c
commit 8d2ae1e4a6

View File

@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Move message to channel", type: :system, js: true do RSpec.describe "Move message to channel", type: :system, js: true do
let(:chat) { PageObjects::Pages::Chat.new } let(:chat_page) { PageObjects::Pages::Chat.new }
let(:channel) { PageObjects::Pages::ChatChannel.new } let(:channel_page) { PageObjects::Pages::ChatChannel.new }
before { chat_system_bootstrap } before { chat_system_bootstrap }
@ -17,8 +17,8 @@ RSpec.describe "Move message to channel", type: :system, js: true do
end end
it "is not available" do it "is not available" do
chat.visit_channel(channel_1) chat_page.visit_channel(channel_1)
channel.select_message(message_1) channel_page.select_message(message_1)
expect(page).to have_no_content(I18n.t("js.chat.selection.move_selection_to_channel")) expect(page).to have_no_content(I18n.t("js.chat.selection.move_selection_to_channel"))
end end
@ -36,8 +36,8 @@ RSpec.describe "Move message to channel", type: :system, js: true do
end end
it "is available" do it "is available" do
chat.visit_channel(channel_1) chat_page.visit_channel(channel_1)
channel.select_message(message_1) channel_page.select_message(message_1)
expect(page).to have_content(I18n.t("js.chat.selection.move_selection_to_channel")) expect(page).to have_content(I18n.t("js.chat.selection.move_selection_to_channel"))
end end
@ -56,8 +56,8 @@ RSpec.describe "Move message to channel", type: :system, js: true do
end end
it "is not available" do it "is not available" do
chat.visit_channel(dm_channel_1) chat_page.visit_channel(dm_channel_1)
channel.select_message(message_1) channel_page.select_message(message_1)
expect(page).to have_no_content(I18n.t("js.chat.selection.move_selection_to_channel")) expect(page).to have_no_content(I18n.t("js.chat.selection.move_selection_to_channel"))
end end
@ -76,14 +76,19 @@ RSpec.describe "Move message to channel", type: :system, js: true do
end end
it "moves the message" do it "moves the message" do
chat.visit_channel(channel_1) chat_page.visit_channel(channel_1)
channel.select_message(message_1) channel_page.select_message(message_1)
click_button(I18n.t("js.chat.selection.move_selection_to_channel")) click_button(I18n.t("js.chat.selection.move_selection_to_channel"))
find(".chat-move-message-channel-chooser").click find(".chat-move-message-channel-chooser").click
find("[data-value='#{channel_2.id}']").click find("[data-value='#{channel_2.id}']").click
click_button(I18n.t("js.chat.move_to_channel.confirm_move")) click_button(I18n.t("js.chat.move_to_channel.confirm_move"))
expect(channel).to have_deleted_message(message_1) expect(page).to have_current_path(chat.channel_path(channel_2.slug, channel_2.id))
expect(channel_page).to have_message(text: message_1.message)
chat_page.visit_channel(channel_1)
expect(channel_page).to have_deleted_message(message_1)
end end
end end
end end