From 967683c98e717a3a0cb4309440c7060eac94c280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Laxstr=C3=B6m?= Date: Wed, 30 Oct 2013 12:13:51 +0200 Subject: [PATCH] Refactoring Input method menu is not offscreen Change-Id: Iff83160eb6c99d6109098e431341240a21274665 --- tests/browser/features/ime.feature | 36 ++++++------------- .../features/step_definitions/ime_steps.rb | 16 ++------- .../support/modules/language_module.rb | 20 +++++++++++ .../features/support/pages/ime_page.rb | 13 +++++++ .../features/support/pages/panel_page.rb | 18 +--------- 5 files changed, 47 insertions(+), 56 deletions(-) create mode 100644 tests/browser/features/support/modules/language_module.rb diff --git a/tests/browser/features/ime.feature b/tests/browser/features/ime.feature index c44cd60b..ad35c887 100644 --- a/tests/browser/features/ime.feature +++ b/tests/browser/features/ime.feature @@ -52,31 +52,15 @@ input method. Then I should see the input method indicator And in it there must be an element with Malayalam text - @login @reset-preferences-after - Scenario: Input method menu is not offscreen - - Input method indicator is not offscreen for English and RTL languages. - - Given I am logged in - Given I set "English" as the interface language - When I visit page in Vector skin - And I open the input method menu + @commons.wikimedia.beta.wmflabs.org + Scenario Outline: Input method menu is completely visible + Given I visit a random page with skin and as the interface language + When I open the input method menu Then I should see the input method menu is not offscreen - Given I am logged in - Given I set "Hebrew" as the interface language - When I visit page in Monobook skin - And I open the input method menu - Then I should see the input method menu is not offscreen - - Given I am logged in - Given I set "English" as the interface language - When I visit page in Monobook skin - And I open the input method menu - Then I should see the input method menu is not offscreen - - Given I am logged in - Given I set "Hebrew" as the interface language - When I visit page in Vector skin - And I open the input method menu - Then I should see the input method menu is not offscreen + Examples: + | skin | language | + | Vector | English | + | Vector | Hebrew | + | Monobook | English | + #| Monobook | Hebrew | diff --git a/tests/browser/features/step_definitions/ime_steps.rb b/tests/browser/features/step_definitions/ime_steps.rb index 5ea62815..68203db2 100644 --- a/tests/browser/features/step_definitions/ime_steps.rb +++ b/tests/browser/features/step_definitions/ime_steps.rb @@ -63,20 +63,10 @@ Then(/^in it there must be an element with Malayalam text$/) do on(IMEPage).input_method_enabled_element.text.should == 'ഇൻസ്ക്രിപ്റ്റ് 2' end -When(/^I visit page in Vector skin$/) do - visit(PanelPage, :using_params => {:extra => "useskin=vector"}) -end - -When(/^I visit page in Monobook skin$/) do - visit(PanelPage, :using_params => {:extra => "useskin=monobook"}) +Given(/^I visit a random page with (.+) skin and (.+) as the interface language$/) do |skin, language| + visit(IMEPage, :using_params => {:extra => "useskin=#{skin.downcase}&uselang=#{on(IMEPage).language_to_code(language)}"}) end Then(/^I should see the input method menu is not offscreen$/) do - @browser.execute_script( " - var $selectorMenu = $( '.imeselector-menu' ), - menuLeft = $selectorMenu.offset().left, - menuRight = menuLeft + $selectorMenu.width(); - - return ( menuLeft >= 0 && menuRight <= $( window ).width() ); - " ).should == true + on(IMEPage).ime_input_method_menu_onscreen?.should == true end diff --git a/tests/browser/features/support/modules/language_module.rb b/tests/browser/features/support/modules/language_module.rb new file mode 100644 index 00000000..b3852601 --- /dev/null +++ b/tests/browser/features/support/modules/language_module.rb @@ -0,0 +1,20 @@ +module LanguageModule + include PageObject + + 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 diff --git a/tests/browser/features/support/pages/ime_page.rb b/tests/browser/features/support/pages/ime_page.rb index e0619f9c..b126f8b1 100644 --- a/tests/browser/features/support/pages/ime_page.rb +++ b/tests/browser/features/support/pages/ime_page.rb @@ -1,5 +1,9 @@ class IMEPage include PageObject + include LanguageModule + + include URL + page_url URL.url('?<%=params[:extra]%>') div(:input_method, class: 'imeselector imeselector-toggle') a(:input_method_enabled, class: 'ime-name imeselector-toggle') @@ -10,4 +14,13 @@ class IMEPage li(:malayalam_inscript2, data_ime_inputmethod: 'ml-inscript2') a(:more_languages, class: 'ime-selector-more-languages') text_field(:search_input, id: 'searchInput') + + def ime_input_method_menu_onscreen? + @browser.execute_script( " + var $selectorMenu = $( '.imeselector-menu' ), + menuLeft = $selectorMenu.offset().left, + menuRight = menuLeft + $selectorMenu.width(); + + return ( menuLeft >= 0 && menuRight <= $( window ).width() );" ) + end end diff --git a/tests/browser/features/support/pages/panel_page.rb b/tests/browser/features/support/pages/panel_page.rb index bfdf5f45..d0a3cabb 100644 --- a/tests/browser/features/support/pages/panel_page.rb +++ b/tests/browser/features/support/pages/panel_page.rb @@ -1,5 +1,6 @@ class PanelPage include PageObject + include LanguageModule include URL page_url URL.url('?<%=params[:extra]%>') @@ -52,23 +53,6 @@ class PanelPage 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 - private def font(selector) @browser.execute_script( "return $( '#{selector}' ).css( 'font-family' );" )