DEV: Change `PageObjects::Components::Chat::Message#exists?` to exact match (#23660)

Why this change?

Before this change, we were doing a partial match when checking for
existence. This is a source of flaky tests because a chat message with
text `this is a message` will match any substring like `message` or `a`.

What does this change do?

This change removes the partial match and instead opts for the
`exact_text` option instead.
This commit is contained in:
Alan Guo Xiang Tan 2023-09-26 10:20:21 +08:00 committed by GitHub
parent d0c7fa8db0
commit e2c7ecfe65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View File

@ -78,7 +78,7 @@ module PageObjects
page.find(context).send(
selector_method,
selector + " " + ".chat-message-text",
text: /#{Regexp.escape(text)}/,
exact_text: text,
)
else
page.find(context).send(selector_method, selector)

View File

@ -19,6 +19,7 @@ describe "Uploading files in chat messages", type: :system do
it "allows uploading a single file" do
chat.visit_channel(channel_1)
file_path = file_from_fixtures("logo.png", "images").path
attach_file(file_path) do
channel_page.open_action_menu
channel_page.click_action_button("chat-upload-btn")
@ -29,7 +30,12 @@ describe "Uploading files in chat messages", type: :system do
channel_page.send_message("upload testing")
expect(page).not_to have_css(".chat-composer-upload")
expect(channel_page.messages).to have_message(text: "upload testing", persisted: true)
expect(channel_page.messages).to have_message(
text: "upload testing\n#{File.basename(file_path)}",
persisted: true,
)
expect(Chat::Message.last.uploads.count).to eq(1)
end
@ -47,14 +53,20 @@ describe "Uploading files in chat messages", type: :system do
channel_page.send_message("upload testing")
expect(page).not_to have_css(".chat-composer-upload")
expect(channel_page.messages).to have_message(text: "upload testing", persisted: true)
expect(channel_page.messages).to have_message(
text: "upload testing\n#{I18n.t("js.chat.uploaded_files", count: 2)}",
persisted: true,
)
expect(Chat::Message.last.uploads.count).to eq(2)
end
xit "allows uploading a huge image file with preprocessing" do
it "allows uploading a huge image file with preprocessing" do
skip("This test is flaky on CI") if ENV["CI"]
SiteSetting.composer_media_optimization_image_bytes_optimization_threshold = 200.kilobytes
chat.visit_channel(channel_1)
file_path = file_from_fixtures("huge.jpg", "images").path
attach_file(file_path) do
channel_page.open_action_menu
channel_page.click_action_button("chat-upload-btn")
@ -69,7 +81,12 @@ describe "Uploading files in chat messages", type: :system do
channel_page.send_message("upload testing")
expect(page).not_to have_css(".chat-composer-upload")
expect(channel_page.messages).to have_message(text: "upload testing", persisted: true)
expect(channel_page.messages).to have_message(
text: "upload testing\n#{File.basename(file_path)}",
persisted: true,
)
expect(Chat::Message.last.uploads.count).to eq(1)
end
end