We were using list items with the checkbox role. This is probably confusing since list items have a listitem role, and so we were basically using a list with no listitem. We could add a `<span role="checkbox">` tag inside the list item, but using real checkboxes is probably easier. We're also adding a test to verify the checkboxes native behavior is compatible with our code. Note we're using the "enter" key to toggle the "checked" status of the SDG. This is probably not intuitive for screen reader users who might try to submit the form using the "enter" key after selecting a goal. However, the alternative would be even less intuitive for sighted keyboard users, since for them these icons look like links or buttons and they would accidentally submit the form when trying to select a goal. Since we haven't come up with a better interface yet, for now we're following the principle of least damage; we consider submitting the form against a user's will is less annoying than forcing users to move to a different field before being able to submit the form. Also note we can't write `check` in the tests because Capybara will try to click the checkbox, which is hidden by the image in the label.
59 lines
1.7 KiB
Ruby
59 lines
1.7 KiB
Ruby
Dir["./spec/support/common_actions/*.rb"].each { |f| require f }
|
|
|
|
module CommonActions
|
|
include Budgets
|
|
include Comments
|
|
include Debates
|
|
include Emails
|
|
include Notifications
|
|
include Polls
|
|
include Proposals
|
|
include RemoteCensusMock
|
|
include Tags
|
|
include Translations
|
|
include Users
|
|
include Verifications
|
|
include Votes
|
|
|
|
def fill_in_signup_form(email = "manuela@consul.dev", password = "judgementday")
|
|
fill_in "user_username", with: "Manuela Carmena #{rand(99999)}"
|
|
fill_in "user_email", with: email
|
|
fill_in "user_password", with: password
|
|
fill_in "user_password_confirmation", with: password
|
|
check "user_terms_of_service"
|
|
end
|
|
|
|
def validate_officer
|
|
allow_any_instance_of(Officing::BaseController).
|
|
to receive(:verify_officer_assignment).and_return(true)
|
|
end
|
|
|
|
def fill_in_proposal
|
|
fill_in "Proposal title", with: "Help refugees"
|
|
fill_in "Proposal summary", with: "In summary, what we want is..."
|
|
fill_in "Proposal text", with: "This is very important because..."
|
|
fill_in "proposal_video_url", with: "https://www.youtube.com/watch?v=yPQfcG-eimk"
|
|
fill_in "proposal_responsible_name", with: "Isabel Garcia"
|
|
check "proposal_terms_of_service"
|
|
end
|
|
|
|
def set_officing_booth(booth = nil)
|
|
booth = create(:poll_booth) if booth.blank?
|
|
|
|
allow_any_instance_of(Officing::BaseController).
|
|
to receive(:current_booth).and_return(booth)
|
|
end
|
|
|
|
def click_sdg_goal(code)
|
|
within(".sdg-related-list-selector .goals") do
|
|
find("[data-code='#{code}'] + label").click
|
|
end
|
|
end
|
|
|
|
def remove_sdg_goal_or_target_tag(code)
|
|
within "span[data-val='#{code}']" do
|
|
click_button "Remove"
|
|
end
|
|
end
|
|
end
|