diff --git a/tests/browser/features/font_selection.feature b/tests/browser/features/font_selection.feature index 19813d01..a735b72b 100644 --- a/tests/browser/features/font_selection.feature +++ b/tests/browser/features/font_selection.feature @@ -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 diff --git a/tests/browser/features/step_definitions/common_steps.rb b/tests/browser/features/step_definitions/common_steps.rb index 1d62f63e..9624288a 100644 --- a/tests/browser/features/step_definitions/common_steps.rb +++ b/tests/browser/features/step_definitions/common_steps.rb @@ -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) diff --git a/tests/browser/features/step_definitions/panel_steps.rb b/tests/browser/features/step_definitions/panel_steps.rb index 7a907234..2fe3d5a6 100644 --- a/tests/browser/features/step_definitions/panel_steps.rb +++ b/tests/browser/features/step_definitions/panel_steps.rb @@ -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"] diff --git a/tests/browser/features/step_definitions/persistent_steps.rb b/tests/browser/features/step_definitions/persistent_steps.rb index ac4e9282..74f01fd8 100644 --- a/tests/browser/features/step_definitions/persistent_steps.rb +++ b/tests/browser/features/step_definitions/persistent_steps.rb @@ -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 diff --git a/tests/browser/features/support/pages/panel_page.rb b/tests/browser/features/support/pages/panel_page.rb index ac8ead4d..786c0b80 100644 --- a/tests/browser/features/support/pages/panel_page.rb +++ b/tests/browser/features/support/pages/panel_page.rb @@ -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