mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer
synced 2024-11-17 21:04:11 +00:00
09374fc9dd
There used to be a CSS trick with the order we added things to the page and removed them from it, but it doesn't seem possible anymore with the new order of execution, with the overlay appearing immediately and being taken care of inside bootstrap. The main cause of the bug, however, was the hash reset happening after the interface was closed. Doing the scroll restore with jQuery.scrollTo is more future-proof and testable in QUnit. Additions were also made to the cucumber E2E test because QUnit alone wouldn't have caught the hash issue. This also cleans up custom events a little and reintroduces pushState on browsers that support the history API. Change-Id: I63187383b632a2e8793f05380c18db2713856865 Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/439 Bug: 63892
157 lines
6.4 KiB
Ruby
157 lines
6.4 KiB
Ruby
Given(/^I am at a wiki article with at least two embedded pictures$/) do
|
|
visit(LightboxDemoPage)
|
|
on(LightboxDemoPage).image1_in_article_element.should be_visible
|
|
end
|
|
|
|
When(/^I click on the first image in the article$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
# Scroll the article on purpose
|
|
page.execute_script "window.scroll(10, 100)"
|
|
@articleScrollTop = page.execute_script("return $(window).scrollTop();")
|
|
@articleScrollLeft = page.execute_script("return $(window).scrollLeft();")
|
|
page.image1_in_article
|
|
end
|
|
end
|
|
|
|
When(/^I click the next arrow$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
page.mmv_next_button_element.when_present.click
|
|
end
|
|
end
|
|
|
|
When(/^I click the previous arrow$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
page.mmv_previous_button_element.when_present.click
|
|
end
|
|
end
|
|
|
|
When(/^I close MMV$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
page.mmv_close_button_element.when_present.click
|
|
end
|
|
end
|
|
|
|
Then(/^I should be navigated back to the original wiki article$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
page.image1_in_article_element.should be_visible
|
|
page.mmv_wrapper_element.should_not be_visible
|
|
end
|
|
end
|
|
|
|
Then(/^the image and metadata of the next image should appear$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
# MMV was launched, article is not visible yet
|
|
page.image1_in_article_element.should_not be_visible
|
|
|
|
check_elements_in_viewer_for_image2(page)
|
|
end
|
|
end
|
|
|
|
Then(/^the image metadata and the image itself should be there$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
# MMV was launched, article is not visible now
|
|
page.image1_in_article_element.should_not be_visible
|
|
|
|
check_elements_in_viewer_for_image1(page)
|
|
end
|
|
end
|
|
|
|
Then(/^the image and metadata of the previous image should appear$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
# MMV was launched, article is not visible yet
|
|
page.image1_in_article_element.should_not be_visible
|
|
|
|
check_elements_in_viewer_for_image1(page)
|
|
end
|
|
end
|
|
|
|
Then(/^the wiki article should be scrolled to the same position as before opening MMV$/) do
|
|
on(LightboxDemoPage) do |page|
|
|
page.execute_script("return $(window).scrollTop();").should eq @articleScrollTop
|
|
page.execute_script("return $(window).scrollLeft();").should eq @articleScrollLeft
|
|
end
|
|
end
|
|
|
|
# Helper function that verifies the presence of various elements in viewer
|
|
# while looking at image1 (Kerala)
|
|
def check_elements_in_viewer_for_image1(page)
|
|
# Check basic MMV elements are present
|
|
page.mmv_wrapper_element.should be_visible
|
|
page.mmv_image_div_element.should be_visible
|
|
|
|
# Check image content
|
|
page.mmv_image_div_element.image_element.attribute('src').should match /Kerala/
|
|
|
|
# Check basic metadata is present
|
|
|
|
# Title
|
|
page.mmv_metadata_title_element.when_present.text.should match /Sunrise over fishing boats in Kerala/
|
|
# License
|
|
page.mmv_metadata_license_element.when_present.attribute('href').should match /boats_in_Kerala.jpg$/
|
|
page.mmv_metadata_license_element.when_present.text.should match /CC BY-SA 3.0/
|
|
# Credit
|
|
page.mmv_metadata_credit_element.when_present.should be_visible
|
|
page.mmv_metadata_source_element.when_present.text.should match /Own work/
|
|
|
|
# Image metadata
|
|
page.mmv_image_metadata_wrapper_element.when_present.should be_visible
|
|
# Caption
|
|
page.mmv_image_metadata_caption_element.when_present.text.should match /Sunrise over fishing boats/
|
|
# Description
|
|
page.mmv_image_metadata_desc_element.when_present.text.should match /Sunrise over fishing boats on the beach south of Kovalam/
|
|
# Image metadata links
|
|
page.mmv_image_metadata_links_wrapper_element.when_present.should be_visible
|
|
# Repo link
|
|
page.mmv_image_metadata_repo_link_element.when_present.text.should match /Learn more on Wikimedia Commons/
|
|
page.mmv_image_metadata_repo_link_element.when_present.attribute('href').should match /boats_in_Kerala.jpg$/
|
|
# Category links
|
|
page.mmv_image_metadata_category_links_wrapper_element.when_present.should be_visible
|
|
# File usage
|
|
page.mmv_image_metadata_fileusage_wrapper_element.when_present.should be_visible
|
|
page.mmv_image_metadata_fileusage_wrapper_element.when_present.h3_element.text.should match /Used in [0-9] page/
|
|
page.mmv_image_metadata_fileusage_local_section_title_element.when_present.text.should match /On this site/
|
|
end
|
|
|
|
# Helper function that verifies the presence of various elements in viewer
|
|
# while looking at image2 (Aquarium)
|
|
def check_elements_in_viewer_for_image2(page)
|
|
# MMV was launched, article is not visible
|
|
page.image1_in_article_element.should_not be_visible
|
|
|
|
# Check basic MMV elements are present
|
|
page.mmv_wrapper_element.should be_visible
|
|
page.mmv_image_div_element.should be_visible
|
|
|
|
# Check image content
|
|
page.mmv_image_div_element.image_element.attribute('src').should match /Offsite/
|
|
|
|
# Check basic metadata is present
|
|
|
|
# Title
|
|
page.mmv_metadata_title_element.when_present.text.should match /All Hands Offsite/
|
|
# License
|
|
page.mmv_metadata_license_element.when_present.attribute('href').should match /All_Hands_Offsite.*\.jpg$/
|
|
page.mmv_metadata_license_element.when_present.text.should match /CC BY-SA 3.0/
|
|
# Credit
|
|
page.mmv_metadata_credit_element.when_present.should be_visible
|
|
page.mmv_metadata_source_element.when_present.text.should match /Wikimedia Foundation/
|
|
|
|
# Image metadata
|
|
page.mmv_image_metadata_wrapper_element.when_present.should be_visible
|
|
# Caption
|
|
page.mmv_image_metadata_caption_element.when_present.text.should match /Tropical Fish Aquarium/
|
|
# Description
|
|
page.mmv_image_metadata_desc_element.when_present.text.should match /Photo from Wikimedia Foundation/
|
|
# Image metadata links
|
|
page.mmv_image_metadata_links_wrapper_element.when_present.should be_visible
|
|
# Repo link
|
|
page.mmv_image_metadata_repo_link_element.when_present.text.should match /Learn more on Wikimedia Commons/
|
|
page.mmv_image_metadata_repo_link_element.when_present.attribute('href').should match /All_Hands_Offsite.*\.jpg$/
|
|
# Category links
|
|
page.mmv_image_metadata_category_links_wrapper_element.when_present.should be_visible
|
|
# File usage
|
|
page.mmv_image_metadata_fileusage_wrapper_element.when_present.should be_visible
|
|
page.mmv_image_metadata_fileusage_wrapper_element.when_present.h3_element.text.should match /Used in [0-9] page/
|
|
page.mmv_image_metadata_fileusage_local_section_title_element.when_present.text.should match /On this site/
|
|
end
|