Refactoring tests to make them more robust
Fixed typo in feature description. Merged two background steps since the last one did not have any actions that could be done manually. Removed assertions from a "given" (login) step. We already extensively test logging in. If this extension needs login tests, they should go to a separate feature file. Moved methods from steps file to page file, following page object pattern. Change-Id: Ic5250970362718f5ed887c9ac8fd56948724b210
This commit is contained in:
committed by
Niklas Laxström
parent
afc5774ee2
commit
f45d5bfcd5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user