mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Merge pull request #23438 from opf/fix/flaky-inbox_column_spec
Fix flaky menu-based reorder specs, also renaming `wait_for_` Cuprite helpers
This commit is contained in:
@@ -173,7 +173,7 @@ RSpec.describe "Edit", :js do
|
||||
it "moves a work package to a different sprint" do
|
||||
planning_page.expect_story_in_sprint(work_package, first_sprint)
|
||||
|
||||
planning_page.click_in_sprint_story_move_menu(work_package, "Move to sprint")
|
||||
planning_page.click_in_sprint_story_move_menu(work_package, "Move to sprint", wait: false)
|
||||
|
||||
within("#move-to-sprint-dialog") do
|
||||
expect(page).to have_no_select("target_id", with_options: [first_sprint.name])
|
||||
|
||||
@@ -270,7 +270,7 @@ RSpec.describe "Inbox column in sprint planning view", :js do
|
||||
before { planning_page.visit! }
|
||||
|
||||
it "moves the item to the bottom of the selected sprint" do
|
||||
planning_page.click_in_inbox_move_menu(inbox_wp1, "Move to sprint")
|
||||
planning_page.click_in_inbox_move_menu(inbox_wp1, "Move to sprint", wait: false)
|
||||
|
||||
within("#move-to-sprint-dialog") do
|
||||
# Expect to have all sprints listed
|
||||
@@ -287,7 +287,7 @@ RSpec.describe "Inbox column in sprint planning view", :js do
|
||||
|
||||
context "when the target sprint is completed (race condition #73750)" do
|
||||
it "shows an error and does not move the item" do
|
||||
planning_page.click_in_inbox_move_menu(inbox_wp1, "Move to sprint")
|
||||
planning_page.click_in_inbox_move_menu(inbox_wp1, "Move to sprint", wait: false)
|
||||
|
||||
within("#move-to-sprint-dialog") do
|
||||
expect(page).to have_select("target_id", with_options: ["Sprint 1", "Sprint 2"])
|
||||
@@ -453,7 +453,7 @@ RSpec.describe "Inbox column in sprint planning view", :js do
|
||||
planning_page.expect_no_inbox_show_more
|
||||
|
||||
# Move an inbox item to the sprint via the dialog
|
||||
planning_page.click_in_inbox_move_menu(inbox_items.last, "Move to sprint")
|
||||
planning_page.click_in_inbox_move_menu(inbox_items.last, "Move to sprint", wait: false)
|
||||
within("#move-to-sprint-dialog") do
|
||||
select sprint.name, from: "target_id"
|
||||
click_button "Move"
|
||||
|
||||
@@ -268,13 +268,15 @@ module Pages
|
||||
end
|
||||
end
|
||||
|
||||
def click_in_inbox_move_menu(work_package, item_name)
|
||||
def click_in_inbox_move_menu(work_package, item_name, wait: true)
|
||||
button = within(work_package_selector(work_package)) do
|
||||
find(:button, accessible_name: "Work package actions")
|
||||
end
|
||||
menu = open_controlled_menu(button)
|
||||
submenu = open_move_submenu(menu)
|
||||
submenu.find(:menuitem, text: item_name).click
|
||||
wait_for_turbo_stream(wait:) do
|
||||
submenu.find(:menuitem, text: item_name).click
|
||||
end
|
||||
end
|
||||
|
||||
def within_sprint_story_menu(story, &)
|
||||
@@ -292,13 +294,15 @@ module Pages
|
||||
end
|
||||
end
|
||||
|
||||
def click_in_sprint_story_move_menu(story, item_name)
|
||||
def click_in_sprint_story_move_menu(story, item_name, wait: true)
|
||||
button = within(work_package_selector(story)) do
|
||||
find(:button, accessible_name: "Work package actions")
|
||||
end
|
||||
menu = open_controlled_menu(button)
|
||||
submenu = open_move_submenu(menu)
|
||||
submenu.find(:menuitem, text: item_name).click
|
||||
wait_for_turbo_stream(wait:) do
|
||||
submenu.find(:menuitem, text: item_name).click
|
||||
end
|
||||
end
|
||||
|
||||
def drag_inbox_item_to_sprint(work_package, sprint)
|
||||
|
||||
@@ -86,12 +86,18 @@ end
|
||||
# wait_for_turbo_stream { click_button "Save" }
|
||||
# expect(page).to have_text("Saved")
|
||||
#
|
||||
def wait_for_turbo_stream(timeout: 10, &block)
|
||||
def wait_for_turbo_stream(wait: 10, &block)
|
||||
unless using_cuprite?
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
unless wait
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
timeout = wait == true ? 10 : wait
|
||||
timeout_ms = timeout * 1000
|
||||
page.execute_script(<<~JS, timeout_ms)
|
||||
window.__opTurboStreamRendered = new Promise((resolve, reject) => {
|
||||
@@ -124,12 +130,18 @@ end
|
||||
# wait_for_turbo { click_link_or_button "Save" }
|
||||
# expect(page).to have_text("Saved")
|
||||
#
|
||||
def wait_for_turbo(timeout: 10, &block)
|
||||
def wait_for_turbo(wait: 10, &block)
|
||||
unless using_cuprite?
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
unless wait
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
timeout = wait == true ? 10 : wait
|
||||
timeout_ms = timeout * 1000
|
||||
page.execute_script(<<~JS, timeout_ms)
|
||||
window.__opTurboLoaded = new Promise((resolve, reject) => {
|
||||
@@ -162,12 +174,18 @@ end
|
||||
# wait_for_turbo_frame { click_link "Remove column" }
|
||||
# expect(page).to have_text("Updated")
|
||||
#
|
||||
def wait_for_turbo_frame(timeout: 10, &block)
|
||||
def wait_for_turbo_frame(wait: 10, &block)
|
||||
unless using_cuprite?
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
unless wait
|
||||
yield if block
|
||||
return
|
||||
end
|
||||
|
||||
timeout = wait == true ? 10 : wait
|
||||
timeout_ms = timeout * 1000
|
||||
page.execute_script(<<~JS, timeout_ms)
|
||||
window.__opTurboFrameLoaded = new Promise((resolve, reject) => {
|
||||
@@ -205,8 +223,8 @@ end
|
||||
# wait_for_ckeditor
|
||||
# wait_for_turbo_stream { description_field.fill_and_submit_value(...) }
|
||||
#
|
||||
def wait_for_ckeditor(timeout: 20)
|
||||
expect(page).to have_css(".ck-content", wait: timeout)
|
||||
def wait_for_ckeditor(wait: 20)
|
||||
expect(page).to have_css(".ck-content", wait:)
|
||||
end
|
||||
|
||||
def using_cuprite?
|
||||
|
||||
Reference in New Issue
Block a user