From cffbe79195292003e3bed08b381ec48da6cb7c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Laxstr=C3=B6m?= Date: Wed, 13 Nov 2013 11:51:04 +0200 Subject: [PATCH] Refactor "Open language selector when logged in" Removed tags @uls-in-sidebar-only and @uls-in-personal-only. We will figure out a better solution. Alterted the test so that it catches if the language selector is not visible in the viewport to catch regressions like bug 56937. Bug: 56937 Change-Id: Ie8a37bf4f38e9c82e0c14736f2bc29e8ec1331ff --- .../features/step_definitions/common_steps.rb | 9 --------- .../features/step_definitions/triggers_steps.rb | 7 +++++-- tests/browser/features/support/hooks.rb | 12 ------------ tests/browser/features/support/pages/panel_page.rb | 12 ++++++++++++ tests/browser/features/support/pages/random_page.rb | 1 - tests/browser/features/triggers.feature | 10 +++++----- tests/browser/tags.txt | 5 ----- 7 files changed, 22 insertions(+), 34 deletions(-) diff --git a/tests/browser/features/step_definitions/common_steps.rb b/tests/browser/features/step_definitions/common_steps.rb index 5c1becff..27685d00 100644 --- a/tests/browser/features/step_definitions/common_steps.rb +++ b/tests/browser/features/step_definitions/common_steps.rb @@ -25,12 +25,3 @@ Then(/^my interface language is "(.*?)"$/) do |language| code = on(PanelPage).language_to_code(language) on(PanelPage).interface_element.attribute('lang').should == code end - -def uls_position() - if !defined?($uls_position) - visit(PanelPage) - $uls_position = @browser.execute_script( "return mw.config.get( 'wgULSPosition' )" ); - else - $uls_position - end -end diff --git a/tests/browser/features/step_definitions/triggers_steps.rb b/tests/browser/features/step_definitions/triggers_steps.rb index 2e8bd24f..75a49ada 100644 --- a/tests/browser/features/step_definitions/triggers_steps.rb +++ b/tests/browser/features/step_definitions/triggers_steps.rb @@ -1,7 +1,10 @@ When(/^I click language selector trigger element$/) do - on(RandomPage).uls_trigger + on(PanelPage).trigger_personal end Then(/^I should see the language selector$/) do - on(PanelPage).uls_element.should be_visible + on(PanelPage) do |page| + page.uls_element.should be_visible + page.uls_onscreen?.should be_true + end end diff --git a/tests/browser/features/support/hooks.rb b/tests/browser/features/support/hooks.rb index 9731900d..e8064516 100644 --- a/tests/browser/features/support/hooks.rb +++ b/tests/browser/features/support/hooks.rb @@ -3,18 +3,6 @@ Before('@language') do |scenario| @scenario = scenario end -Before('@uls-in-personal-only') do |scenario| - if uls_position() != 'personal' - scenario.skip_invoke! - end -end - -Before('@uls-in-sidebar-only') do |scenario| - if uls_position() != 'interlanguage' - scenario.skip_invoke! - end -end - After('@reset-preferences-after') do |scenario| visit(ResetPreferencesPage).submit_element.click if @browser.exist? end diff --git a/tests/browser/features/support/pages/panel_page.rb b/tests/browser/features/support/pages/panel_page.rb index 3e275d83..212f9c80 100644 --- a/tests/browser/features/support/pages/panel_page.rb +++ b/tests/browser/features/support/pages/panel_page.rb @@ -53,6 +53,18 @@ class PanelPage font('body') end + def uls_onscreen? + @browser.execute_script( " + var $menu = $( '.uls-menu' ), + $window = $( window ), + top = $menu.offset().top, + viewportTop = $window.scrollTop(), + viewportBottom = $window.scrollTop() + $window.height(); + + return ( top < viewportBottom && top >= viewportTop )" ) + end + + private def font(selector) @browser.execute_script( "return $( '#{selector}' ).css( 'font-family' );" ) diff --git a/tests/browser/features/support/pages/random_page.rb b/tests/browser/features/support/pages/random_page.rb index c6c1ace5..d0d7ab3e 100644 --- a/tests/browser/features/support/pages/random_page.rb +++ b/tests/browser/features/support/pages/random_page.rb @@ -13,5 +13,4 @@ class RandomPage a(:print_export, text: 'Print/export') a(:printable_version, text: 'Printable version') button(:search_button, id: 'searchButton') - a(:uls_trigger, class: 'uls-trigger') end diff --git a/tests/browser/features/triggers.feature b/tests/browser/features/triggers.feature index 5f259005..1e881a50 100644 --- a/tests/browser/features/triggers.feature +++ b/tests/browser/features/triggers.feature @@ -1,12 +1,12 @@ Feature: Trigger in personal toolbar - @login @uls-in-personal-only + @commons.wikimedia.beta.wmflabs.org @login Scenario: Open language selector when logged in Given I am logged in When I click language selector trigger element Then I should see the language selector - @uls-in-personal-only @no-anon-language-selection + @no-anon-language-selection Scenario: Open language settings when logged out and language change not allowed If the user is logged out, the user will either see the language selector @@ -17,7 +17,7 @@ Feature: Trigger in personal toolbar When I click language selector trigger element Then I see the logged in language settings panel - @uls-in-personal-only @anon-language-selection + @anon-language-selection Scenario: Open language selector when logged out Given I am at random page @@ -25,7 +25,7 @@ Feature: Trigger in personal toolbar Then I should see the language selector - @login @uls-in-sidebar-only + @login Scenario Outline: Opening language settings from sidebar Given I am And I am on @@ -39,7 +39,7 @@ Feature: Trigger in personal toolbar | logged out | a talk page without interlanguage links | | logged out | a talk page with interlanguage links | - @login @uls-in-sidebar-only + @login Scenario Outline: Closing language settings without saving Given I am And I am on a page without interlanguage links diff --git a/tests/browser/tags.txt b/tests/browser/tags.txt index bee6854a..b6964468 100644 --- a/tests/browser/tags.txt +++ b/tests/browser/tags.txt @@ -20,11 +20,6 @@ This file contains the descriptions of the tags we use. could use your normal user account if you skip these tests, but I would not recommend doing that. -@uls-in-personal-only -@uls-in-sidebar-only - These tests will automatically be marked as skipped if ULS configuration is - not the one expected for the test. - @anon-language-selection @no-anon-language-selection Depending on the wiki configuration, you should filter out either one of