Add missing expectations before calls to visit
There were many cases where we were clicking on a link or (most of the
time) a button and then calling the `visit` method. In the past, it
worked just fine because clicking on buttons usually results in non-AJAX
requests, meaning that the test waited for the request to finish before
continuing.
That's no longer the case, though. In the last few months/years (not
sure since when) we're getting sporadic failures because the test
doesn't wait for the request to finish before making another request
with the `visit` method. This sometimes results in flaky tests.
Some of these tests have recently failed in our CI. Here are a few
examples (note the numbers don't follow an order because these tests
failed in different jobs):
```
1) Admin edit translatable records Current locale translation does not
exist For ActivePoll Shows first available fallback
Failure/Error: expect(page).to have_content "Sondage en Français"
expected to find text "Sondage en Français" in "Language: \n
\nEnglish\nDeutsch\nEspañol\nFrançais\nNederlands\nPortuguês
brasileiro\n中文\n Go back to CONSUL DEMOCRACY\nCONSUL
DEMOCRACY\nADMINISTRATION\nMenu\nNotifications\nMy content\nMy
account\nSign out\nProposals\nDebates\nComments\nPolls\n
Collaborative Legislation\nParticipatory budgets\nVoting booths
\nSignature Sheets\nMessages to users\nSite content\nModerated
content\nProfiles\nStatistics\nSettings\nProposals dashboard\n×
\nPolls description updated successfully.\nList of polls\nPolls
description\nCreate poll\nThere are no polls."
2) Public area translatable records Existing records Update a
translation With valid data Changes the existing translation
Failure/Error: expect(page).to have_field "Debate title",
with: "Title in English"
expected to find field "Debate title" that is not disabled but
there were no matches
2) Admin collaborative legislation Update Edit milestones summary
Failure/Error: expect(page).to have_content "There is still a long
journey ahead of us"
expected to find text "There is still a long journey ahead of us"
in "Language: \n
\nEnglish\nDeutsch\nEspañol\nFrançais\nNederlands\nPortuguês
brasileiro\n中文\n Go back to CONSUL DEMOCRACY\nCONSUL
DEMOCRACY\nADMINISTRATION\nMenu\nNotifications\nMy content\nMy
account\nSign out\nProposals\nDebates\nComments\nPolls\n
Collaborative Legislation\nParticipatory budgets\nVoting booths
\nSignature Sheets\nMessages to users\nSite content\nModerated
content\nProfiles\nStatistics\nSettings\nProposals dashboard\n×
\nProcess updated successfully. Click to visit\nBack\nAn example
legislation process\nInformation\nHomepage\nDebate\nProposals\n
Drafting\nFollowing\n1 language in use\nCurrent language\n
English\nSummary\n Format\n ◢\n Milestone\nManage progress
bars\nDon't have defined milestones\nCreate new milestone".
(However, it was found 1 time including non-visible text.)
3) Admin collaborative legislation SDG related list create Collaborative
Legislation with sdg related list
Failure/Error:
within("tr", text: "Legislation process with SDG related content") do
expect(page).to have_css "td", exact_text: "17"
end
Capybara::ElementNotFound:
Unable to find css "tr"
4) Valuation budget investments Valuate Feasibility can be marked as
pending
Failure/Error: expect(find("#budget_investment_feasibility_undecided"))
.not_to be_checked
Capybara::ElementNotFound:
Unable to find css "#budget_investment_feasibility_undecided"
3) Custom information texts Show custom texts instead of default ones
Failure/Error:
within("#section_help") do
expect(page).to have_content "Custom help with debates"
expect(page).not_to have_content "Help with debates"
end
4) Admin budgets Update Deselect all selected staff
Failure/Error: expect(page).to have_link "Select administrators"
expected to find link "Select administrators" but there were no
matches
3) Admin polls SDG related list edit poll with sdg related list
Failure/Error:
within("tr", text: "Upcoming poll with SDG related content") do
expect(page).to have_css "td", exact_text: "17"
end
Capybara::ElementNotFound:
Unable to find css "tr"
4) Admin polls SDG related list create poll with sdg related list
Failure/Error:
within("tr", text: "Upcoming poll with SDG related content") do
expect(page).to have_css "td", exact_text: "17"
end
Capybara::ElementNotFound:
Unable to find css "tr"
5) Admin custom images Image is replaced on admin newsletters
Failure/Error:
within(".newsletter-body-content") do
expect(page).to have_css("img[src*='logo_email_custom.png']")
end
Capybara::ElementNotFound:
Unable to find css ".newsletter-body-content"
6) Admin custom images Image is replaced on front views
Failure/Error:
within("#map") do
expect(page).to
have_css("img[src*='custom_map.jpg'][alt='Districts list']")
end
Capybara::ElementNotFound:
Unable to find css "#map"
```
This commit is contained in:
@@ -39,8 +39,10 @@ module Users
|
|||||||
|
|
||||||
fill_in "user_login", with: user.email
|
fill_in "user_login", with: user.email
|
||||||
fill_in "user_password", with: user.password
|
fill_in "user_password", with: user.password
|
||||||
|
|
||||||
click_button "Enter"
|
click_button "Enter"
|
||||||
|
|
||||||
|
expect(page).to have_content "You have been signed in successfully"
|
||||||
|
|
||||||
visit new_officing_residence_path
|
visit new_officing_residence_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -435,6 +435,9 @@ describe "Admin budgets", :admin do
|
|||||||
expect(page).to have_link "Select valuators"
|
expect(page).to have_link "Select valuators"
|
||||||
|
|
||||||
click_button "Update Budget"
|
click_button "Update Budget"
|
||||||
|
|
||||||
|
expect(page).to have_content "Participatory budget updated successfully"
|
||||||
|
|
||||||
visit edit_admin_budget_path(budget)
|
visit edit_admin_budget_path(budget)
|
||||||
|
|
||||||
expect(page).to have_link "Select administrators"
|
expect(page).to have_link "Select administrators"
|
||||||
|
|||||||
@@ -314,6 +314,8 @@ describe "Admin collaborative legislation", :admin do
|
|||||||
fill_in "Categories", with: "recycling,bicycles,pollution"
|
fill_in "Categories", with: "recycling,bicycles,pollution"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Process updated successfully"
|
||||||
|
|
||||||
visit admin_legislation_process_proposals_path(process)
|
visit admin_legislation_process_proposals_path(process)
|
||||||
|
|
||||||
expect(page).to have_field("Categories", with: "bicycles, pollution, recycling")
|
expect(page).to have_field("Categories", with: "bicycles, pollution, recycling")
|
||||||
@@ -322,6 +324,8 @@ describe "Admin collaborative legislation", :admin do
|
|||||||
fill_in "Summary", with: "Summarizing the process"
|
fill_in "Summary", with: "Summarizing the process"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Process updated successfully"
|
||||||
|
|
||||||
visit admin_legislation_process_proposals_path(process)
|
visit admin_legislation_process_proposals_path(process)
|
||||||
|
|
||||||
expect(page).to have_field("Categories", with: "bicycles, pollution, recycling")
|
expect(page).to have_field("Categories", with: "bicycles, pollution, recycling")
|
||||||
@@ -337,6 +341,7 @@ describe "Admin collaborative legislation", :admin do
|
|||||||
|
|
||||||
click_button "Update Process"
|
click_button "Update Process"
|
||||||
|
|
||||||
|
expect(page).to have_content "Process updated successfully."
|
||||||
expect(page).to have_current_path admin_legislation_process_milestones_path(process)
|
expect(page).to have_current_path admin_legislation_process_milestones_path(process)
|
||||||
|
|
||||||
visit milestones_legislation_process_path(process)
|
visit milestones_legislation_process_path(process)
|
||||||
@@ -397,6 +402,9 @@ describe "Admin collaborative legislation", :admin do
|
|||||||
|
|
||||||
click_sdg_goal(17)
|
click_sdg_goal(17)
|
||||||
click_button "Create process"
|
click_button "Create process"
|
||||||
|
|
||||||
|
expect(page).to have_content "Process created successfully"
|
||||||
|
|
||||||
visit admin_legislation_processes_path
|
visit admin_legislation_processes_path
|
||||||
|
|
||||||
within("tr", text: "Legislation process with SDG related content") do
|
within("tr", text: "Legislation process with SDG related content") do
|
||||||
@@ -411,6 +419,9 @@ describe "Admin collaborative legislation", :admin do
|
|||||||
|
|
||||||
remove_sdg_goal_or_target_tag(1)
|
remove_sdg_goal_or_target_tag(1)
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Process updated successfully"
|
||||||
|
|
||||||
visit admin_legislation_processes_path
|
visit admin_legislation_processes_path
|
||||||
|
|
||||||
within("tr", text: "Legislation process with SDG related content") do
|
within("tr", text: "Legislation process with SDG related content") do
|
||||||
|
|||||||
@@ -131,6 +131,9 @@ describe "Admin legislation questions", :admin do
|
|||||||
expect(page).to have_field fields_for(:en).last[:id], with: "No"
|
expect(page).to have_field fields_for(:en).last[:id], with: "No"
|
||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Question updated successfully"
|
||||||
|
|
||||||
visit edit_question_url
|
visit edit_question_url
|
||||||
|
|
||||||
expect(page).not_to have_field fields_for(:en).first[:id], with: "Yes"
|
expect(page).not_to have_field fields_for(:en).first[:id], with: "Yes"
|
||||||
@@ -154,6 +157,9 @@ describe "Admin legislation questions", :admin do
|
|||||||
find("#nested_question_options input").set("Opción 1")
|
find("#nested_question_options input").set("Opción 1")
|
||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Question updated successfully"
|
||||||
|
|
||||||
visit edit_question_url
|
visit edit_question_url
|
||||||
|
|
||||||
expect(page).to have_field(field_en[:id], with: "Option 1")
|
expect(page).to have_field(field_en[:id], with: "Option 1")
|
||||||
@@ -178,6 +184,8 @@ describe "Admin legislation questions", :admin do
|
|||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Question updated successfully"
|
||||||
|
|
||||||
visit edit_question_url
|
visit edit_question_url
|
||||||
|
|
||||||
expect(page).to have_field(field_en[:id], with: "Option 1")
|
expect(page).to have_field(field_en[:id], with: "Option 1")
|
||||||
|
|||||||
@@ -545,6 +545,9 @@ describe "Admin polls", :admin do
|
|||||||
|
|
||||||
click_sdg_goal(17)
|
click_sdg_goal(17)
|
||||||
click_button "Create poll"
|
click_button "Create poll"
|
||||||
|
|
||||||
|
expect(page).to have_content "Poll created successfully"
|
||||||
|
|
||||||
visit admin_polls_path
|
visit admin_polls_path
|
||||||
|
|
||||||
within("tr", text: "Upcoming poll with SDG related content") do
|
within("tr", text: "Upcoming poll with SDG related content") do
|
||||||
@@ -559,6 +562,9 @@ describe "Admin polls", :admin do
|
|||||||
|
|
||||||
remove_sdg_goal_or_target_tag(1)
|
remove_sdg_goal_or_target_tag(1)
|
||||||
click_button "Update poll"
|
click_button "Update poll"
|
||||||
|
|
||||||
|
expect(page).to have_content "Poll updated successfully"
|
||||||
|
|
||||||
visit admin_polls_path
|
visit admin_polls_path
|
||||||
|
|
||||||
within("tr", text: "Upcoming poll with SDG related content") do
|
within("tr", text: "Upcoming poll with SDG related content") do
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ describe "Admin custom images", :admin do
|
|||||||
click_button "Update"
|
click_button "Update"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
expect(page).to have_content "Image updated successfully"
|
||||||
|
|
||||||
visit proposals_path
|
visit proposals_path
|
||||||
|
|
||||||
within("#map") do
|
within("#map") do
|
||||||
@@ -82,6 +84,8 @@ describe "Admin custom images", :admin do
|
|||||||
click_button "Update"
|
click_button "Update"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
expect(page).to have_content "Image updated successfully"
|
||||||
|
|
||||||
visit admin_newsletter_path(newsletter)
|
visit admin_newsletter_path(newsletter)
|
||||||
|
|
||||||
within(".newsletter-body-content") do
|
within(".newsletter-body-content") do
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ describe "Admin tags", :admin do
|
|||||||
click_button "Create topic"
|
click_button "Create topic"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
within("table") { expect(page).to have_content "important issues" }
|
||||||
|
|
||||||
visit admin_tags_path
|
visit admin_tags_path
|
||||||
|
|
||||||
expect(page).to have_content "important issues"
|
expect(page).to have_content "important issues"
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
fill_in "Heading name", with: "Nom en Français"
|
fill_in "Heading name", with: "Nom en Français"
|
||||||
click_button "Save heading"
|
click_button "Save heading"
|
||||||
|
|
||||||
|
expect(page).to have_content "Heading updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_field "Heading name", with: "Heading name in English"
|
expect(page).to have_field "Heading name", with: "Heading name in English"
|
||||||
@@ -53,6 +55,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
fill_in_ckeditor "Content", with: "Contenu en Français"
|
fill_in_ckeditor "Content", with: "Contenu en Français"
|
||||||
click_button "Update Custom page"
|
click_button "Update Custom page"
|
||||||
|
|
||||||
|
expect(page).to have_content "Page updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_ckeditor "Content", with: "Content in English"
|
expect(page).to have_ckeditor "Content", with: "Content in English"
|
||||||
@@ -81,6 +85,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
click_link class: "fullscreen-toggle"
|
click_link class: "fullscreen-toggle"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Draft updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
click_link class: "fullscreen-toggle"
|
click_link class: "fullscreen-toggle"
|
||||||
|
|
||||||
@@ -111,6 +117,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
fill_in "Question", with: "Português"
|
fill_in "Question", with: "Português"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Question updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
select "Português brasileiro", from: "Language:"
|
select "Português brasileiro", from: "Language:"
|
||||||
|
|
||||||
@@ -201,6 +209,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
|
|
||||||
click_button "Save card"
|
click_button "Save card"
|
||||||
|
|
||||||
|
expect(page).to have_content "Card updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_field "Title", with: "Title in English"
|
expect(page).to have_field "Title", with: "Title in English"
|
||||||
@@ -230,6 +240,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
|
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content "Changes saved"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_field "Answer", with: "Answer in English"
|
expect(page).to have_field "Answer", with: "Answer in English"
|
||||||
@@ -253,6 +265,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
fill_in "Summary", with: ""
|
fill_in "Summary", with: ""
|
||||||
click_button "Update poll"
|
click_button "Update poll"
|
||||||
|
|
||||||
|
expect(page).to have_content "Poll updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_field "Summary", with: ""
|
expect(page).to have_field "Summary", with: ""
|
||||||
@@ -345,6 +359,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
|
|
||||||
click_button "Save group"
|
click_button "Save group"
|
||||||
|
|
||||||
|
expect(page).to have_content "Group updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).not_to have_select "Current language", with_options: ["Español"]
|
expect(page).not_to have_select "Current language", with_options: ["Español"]
|
||||||
@@ -443,6 +459,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Changes saved"
|
||||||
|
|
||||||
visit budgets_path
|
visit budgets_path
|
||||||
click_link "Name en Français"
|
click_link "Name en Français"
|
||||||
|
|
||||||
@@ -464,6 +482,8 @@ describe "Admin edit translatable records", :admin do
|
|||||||
click_link "Remove language"
|
click_link "Remove language"
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content "Polls description updated successfully"
|
||||||
|
|
||||||
visit polls_path
|
visit polls_path
|
||||||
|
|
||||||
expect(page).to have_content "Sondage en Français"
|
expect(page).to have_content "Sondage en Français"
|
||||||
|
|||||||
@@ -161,6 +161,9 @@ describe "Polls" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
click_button "Update poll"
|
click_button "Update poll"
|
||||||
|
|
||||||
|
expect(page).to have_content "Poll updated successfully"
|
||||||
|
|
||||||
visit edit_proposal_dashboard_poll_path(proposal, poll)
|
visit edit_proposal_dashboard_poll_path(proposal, poll)
|
||||||
|
|
||||||
expect(page).to have_css ".nested-fields", count: 1
|
expect(page).to have_css ".nested-fields", count: 1
|
||||||
|
|||||||
@@ -9,10 +9,14 @@ describe "Custom information texts", :admin do
|
|||||||
fill_in "contents[content_#{debate_key}]values[value_en]", with: "Custom help with debates"
|
fill_in "contents[content_#{debate_key}]values[value_en]", with: "Custom help with debates"
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content "Translation updated successfully"
|
||||||
|
|
||||||
visit admin_site_customization_information_texts_path(tab: "proposals")
|
visit admin_site_customization_information_texts_path(tab: "proposals")
|
||||||
fill_in "contents[content_#{proposal_key}]values[value_en]", with: "Custom help with proposals"
|
fill_in "contents[content_#{proposal_key}]values[value_en]", with: "Custom help with proposals"
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content "Translation updated successfully"
|
||||||
|
|
||||||
visit debates_path
|
visit debates_path
|
||||||
|
|
||||||
within("#section_help") do
|
within("#section_help") do
|
||||||
@@ -42,6 +46,8 @@ describe "Custom information texts", :admin do
|
|||||||
fill_in "contents[content_#{intro_key}]values[value_en]", with: "Custom hi to %{author}"
|
fill_in "contents[content_#{intro_key}]values[value_en]", with: "Custom hi to %{author}"
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content "Translation updated successfully"
|
||||||
|
|
||||||
visit admin_system_email_view_path("budget_investment_created")
|
visit admin_system_email_view_path("budget_investment_created")
|
||||||
|
|
||||||
expect(page).to have_content "Custom hi to Rachel"
|
expect(page).to have_content "Custom hi to Rachel"
|
||||||
|
|||||||
@@ -202,6 +202,8 @@ describe "Public area translatable records" do
|
|||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Debate updated successfully"
|
||||||
|
|
||||||
visit path
|
visit path
|
||||||
|
|
||||||
expect(page).to have_field "Debate title", with: "Title in English"
|
expect(page).to have_field "Debate title", with: "Title in English"
|
||||||
|
|||||||
@@ -232,6 +232,8 @@ describe "Users" do
|
|||||||
expect(page).to have_current_path(finish_signup_path)
|
expect(page).to have_current_path(finish_signup_path)
|
||||||
click_link "Cancel login"
|
click_link "Cancel login"
|
||||||
|
|
||||||
|
expect(page).to have_content "You have been signed out successfully"
|
||||||
|
|
||||||
visit "/"
|
visit "/"
|
||||||
expect_not_to_be_signed_in
|
expect_not_to_be_signed_in
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -174,6 +174,8 @@ describe "Users" do
|
|||||||
uncheck "account_public_activity"
|
uncheck "account_public_activity"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Changes saved"
|
||||||
|
|
||||||
visit user_path(user)
|
visit user_path(user)
|
||||||
expect(page).not_to have_content("activity list private")
|
expect(page).not_to have_content("activity list private")
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -308,6 +308,8 @@ describe "Valuation budget investments" do
|
|||||||
choose "budget_investment_feasibility_feasible"
|
choose "budget_investment_feasibility_feasible"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Dossier updated"
|
||||||
|
|
||||||
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
||||||
|
|
||||||
expect(find("#budget_investment_feasibility_undecided")).not_to be_checked
|
expect(find("#budget_investment_feasibility_undecided")).not_to be_checked
|
||||||
@@ -316,6 +318,8 @@ describe "Valuation budget investments" do
|
|||||||
choose "budget_investment_feasibility_undecided"
|
choose "budget_investment_feasibility_undecided"
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Dossier updated"
|
||||||
|
|
||||||
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
||||||
expect(find("#budget_investment_feasibility_undecided")).to be_checked
|
expect(find("#budget_investment_feasibility_undecided")).to be_checked
|
||||||
end
|
end
|
||||||
@@ -357,6 +361,8 @@ describe "Valuation budget investments" do
|
|||||||
|
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
|
|
||||||
|
expect(page).to have_content "Dossier updated"
|
||||||
|
|
||||||
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
visit edit_valuation_budget_budget_investment_path(budget, investment)
|
||||||
|
|
||||||
expect(find("#budget_investment_feasibility_unfeasible")).to be_checked
|
expect(find("#budget_investment_feasibility_unfeasible")).to be_checked
|
||||||
|
|||||||
Reference in New Issue
Block a user