mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 23:13:48 +08:00
DEV: Fix flaky system test in system/category_topics_spec.rb
(#22652)
Why was the test flaky? The test relied on the fact that visiting a topic would marked its post as unread. However, we did not actually stay on the topic long enough in some cases for it to be considered read based on the logic in our client side code. This commit fixes the flakiness by ensuring that the post has actually been read before navigating away.
This commit is contained in:
parent
d3a7d335b9
commit
1052ed9c3b
|
@ -3,8 +3,10 @@
|
||||||
describe "Viewing top topics on categories page", type: :system, js: true do
|
describe "Viewing top topics on categories page", type: :system, js: true do
|
||||||
fab!(:user) { Fabricate(:user) }
|
fab!(:user) { Fabricate(:user) }
|
||||||
let(:category_list) { PageObjects::Components::CategoryList.new }
|
let(:category_list) { PageObjects::Components::CategoryList.new }
|
||||||
|
let(:topic_view) { PageObjects::Components::TopicView.new }
|
||||||
fab!(:category) { Fabricate(:category) }
|
fab!(:category) { Fabricate(:category) }
|
||||||
fab!(:topic) { Fabricate(:topic, category: category) }
|
fab!(:topic) { Fabricate(:topic, category: category) }
|
||||||
|
fab!(:post) { Fabricate(:post, topic: topic) }
|
||||||
|
|
||||||
it "displays and updates new counter" do
|
it "displays and updates new counter" do
|
||||||
skip(<<~TEXT)
|
skip(<<~TEXT)
|
||||||
|
@ -20,6 +22,9 @@ describe "Viewing top topics on categories page", type: :system, js: true do
|
||||||
|
|
||||||
category_list.click_new_posts_badge(count: 1)
|
category_list.click_new_posts_badge(count: 1)
|
||||||
category_list.click_topic(topic)
|
category_list.click_topic(topic)
|
||||||
|
|
||||||
|
expect(topic_view).to have_read_post(post)
|
||||||
|
|
||||||
category_list.click_logo
|
category_list.click_logo
|
||||||
category_list.click_category_navigation
|
category_list.click_category_navigation
|
||||||
|
|
||||||
|
|
15
spec/system/page_objects/components/topic_view.rb
Normal file
15
spec/system/page_objects/components/topic_view.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module PageObjects
|
||||||
|
module Components
|
||||||
|
class TopicView < PageObjects::Components::Base
|
||||||
|
def has_read_post?(post)
|
||||||
|
page.has_css?(
|
||||||
|
"#post_#{post.post_number} .read-state.read",
|
||||||
|
visible: false,
|
||||||
|
wait: Capybara.default_max_wait_time * 2,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user