Merge "Refactoring tests to make them more robust"
This commit is contained in:
@@ -6,13 +6,12 @@ Feature: Font selection
|
||||
I want to change or disable the fonts for interface and content.
|
||||
|
||||
In addition the user is provided live preview feature: changes are applied
|
||||
immediately when selection is made. Changes can either be applied or discared
|
||||
immediately when selection is made. Changes can either be applied or discarded
|
||||
for easy testing.
|
||||
|
||||
Background:
|
||||
Given I am logged in
|
||||
And I set "German" as the interface language
|
||||
And I inspect current fonts
|
||||
|
||||
Scenario: Font selector appears
|
||||
When I open "Fonts" panel of language settings
|
||||
|
||||
@@ -7,55 +7,25 @@ end
|
||||
|
||||
Given(/^I am logged in$/) do
|
||||
visit(LoginPage).login_with(ENV['MEDIAWIKI_USER'], ENV['MEDIAWIKI_PASSWORD'])
|
||||
# Assert that login worked
|
||||
loggedin = !@browser.execute_script( "return mw.user.isAnon();" )
|
||||
loggedin.should be_true
|
||||
end
|
||||
|
||||
Given(/^I set "(.*?)" as the interface language$/) do |language|
|
||||
code = language_to_code(language)
|
||||
code = on(PanelPage).language_to_code(language)
|
||||
visit(PanelPage, :using_params => {:extra => "setlang=#{code}"})
|
||||
@original_content_font = on(PanelPage).get_content_font
|
||||
@original_interface_font = on(PanelPage).get_interface_font
|
||||
end
|
||||
|
||||
Given(/^I temporarily use "(.*?)" as the interface language$/) do |language|
|
||||
code = language_to_code(language)
|
||||
code = on(PanelPage).language_to_code(language)
|
||||
visit(PanelPage, :using_params => {:extra => "uselang=#{code}"})
|
||||
end
|
||||
|
||||
Then(/^my interface language is "(.*?)"$/) do |language|
|
||||
code = language_to_code(language)
|
||||
code = on(PanelPage).language_to_code(language)
|
||||
on(PanelPage).interface_element.attribute('lang').should == code
|
||||
end
|
||||
|
||||
def language_to_code(language)
|
||||
case language
|
||||
when 'German'
|
||||
'de'
|
||||
when 'English'
|
||||
'en'
|
||||
when 'Finnish'
|
||||
'fi'
|
||||
when 'Hebrew'
|
||||
'he'
|
||||
when 'Hindi'
|
||||
'hi'
|
||||
else
|
||||
pending
|
||||
end
|
||||
end
|
||||
|
||||
def get_font(selector)
|
||||
@browser.execute_script( "return $( '#{selector}' ).css( 'font-family' );" )
|
||||
end
|
||||
|
||||
def get_content_font()
|
||||
get_font('#mw-content-text')
|
||||
end
|
||||
|
||||
def get_interface_font()
|
||||
get_font('body')
|
||||
end
|
||||
|
||||
def uls_position()
|
||||
if !defined?($uls_position)
|
||||
visit(PanelPage)
|
||||
|
||||
@@ -2,11 +2,6 @@ Then(/^I see "(.*?)" as the name of the content language$/) do |text|
|
||||
@browser.span(:text => "#{text}").should be_visible
|
||||
end
|
||||
|
||||
Given(/^I inspect current fonts$/) do
|
||||
@original_content_font = get_content_font()
|
||||
@original_interface_font = get_interface_font()
|
||||
end
|
||||
|
||||
When(/^I open "(.*?)" panel of language settings$/) do |panel|
|
||||
on(PanelPage) do |page|
|
||||
# Open the ULS panel if it's not open already
|
||||
@@ -58,9 +53,9 @@ end
|
||||
Then(/^the active (.*?) font must be the same as font prior to the preview$/) do |type|
|
||||
case type
|
||||
when "content"
|
||||
get_content_font().should === @original_content_font
|
||||
on(PanelPage).get_content_font.should === @original_content_font
|
||||
when "interface"
|
||||
get_interface_font().should === @original_interface_font
|
||||
on(PanelPage).get_interface_font.should === @original_interface_font
|
||||
else
|
||||
pending
|
||||
end
|
||||
@@ -86,9 +81,9 @@ end
|
||||
Then(/^the (.*) font must be changed to the "(.*?)" font$/) do |type, font|
|
||||
case type
|
||||
when "content"
|
||||
get_content_font().should match("^#{font}")
|
||||
on(PanelPage).get_content_font.should match("^#{font}")
|
||||
when "interface"
|
||||
get_interface_font().should match("^#{font}")
|
||||
on(PanelPage).get_interface_font.should match("^#{font}")
|
||||
else
|
||||
pending
|
||||
end
|
||||
@@ -111,7 +106,7 @@ Then(/^a font selector for content language appears$/) do
|
||||
end
|
||||
|
||||
When(/^I use the panel to change my interface language to "(.*?)"$/) do |language|
|
||||
code = language_to_code(language)
|
||||
code = on(PanelPage).language_to_code(language)
|
||||
on(RandomPage).language_filter = code
|
||||
# Because one browser wants :enter and other :return -- sigh
|
||||
on(RandomPage).language_filter_element.send_keys [:enter, "\n"]
|
||||
|
||||
@@ -34,6 +34,6 @@ And(/^I click on the link to select Hindi$/) do
|
||||
end
|
||||
|
||||
Then(/^I should see the text in the language panel in (.+?)$/) do |language|
|
||||
code = language_to_code(language)
|
||||
code = on(PanelPage).language_to_code(language)
|
||||
on(PanelPage).uls_display_settings_element.attribute('lang').should == code
|
||||
end
|
||||
|
||||
@@ -38,4 +38,30 @@ class PanelPage
|
||||
|
||||
# Is there way to access the html element?
|
||||
div(:interface, id: 'footer')
|
||||
|
||||
def get_content_font
|
||||
get_font('#mw-content-text')
|
||||
end
|
||||
def get_font(selector)
|
||||
@browser.execute_script( "return $( '#{selector}' ).css( 'font-family' );" )
|
||||
end
|
||||
def get_interface_font
|
||||
get_font('body')
|
||||
end
|
||||
def language_to_code(language)
|
||||
case language
|
||||
when 'German'
|
||||
'de'
|
||||
when 'English'
|
||||
'en'
|
||||
when 'Finnish'
|
||||
'fi'
|
||||
when 'Hebrew'
|
||||
'he'
|
||||
when 'Hindi'
|
||||
'hi'
|
||||
else
|
||||
pending
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user