Merge "Refactoring tests to make them more robust"

This commit is contained in:
jenkins-bot
2013-10-23 09:02:17 +00:00
committed by Gerrit Code Review
5 changed files with 38 additions and 48 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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"]

View File

@@ -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

View File

@@ -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