Gabriel Birke has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/406048 )

Change subject: Check search form state after submission
......................................................................

Check search form state after submission

Automatically wait for advanced search to be rendered after opening the
search page.
Bug: T167316

Change-Id: I057336a52795e61e7e17b1992a5e25b7b192ff2c
---
M tests/selenium/pageobjects/search.page.js
M tests/selenium/specs/advancedsearch.js
A tests/selenium/specs/search_submit.js
3 files changed, 70 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/AdvancedSearch 
refs/changes/48/406048/1

diff --git a/tests/selenium/pageobjects/search.page.js 
b/tests/selenium/pageobjects/search.page.js
index a21af0a..b726cff 100644
--- a/tests/selenium/pageobjects/search.page.js
+++ b/tests/selenium/pageobjects/search.page.js
@@ -11,8 +11,16 @@
        get searchNotTheseWordsTagLabel() { return browser.element( 
'#advancedSearchOption-not .oo-ui-tagItemWidget > .oo-ui-labelElement-label' ); 
}
        get searchOneWord() { return browser.element( 
'#advancedSearchOption-or' ); }
        get searchOneWordTagLabel() { return browser.element( 
'#advancedSearchOption-or .oo-ui-tagItemWidget > .oo-ui-labelElement-label' ); }
-       get searchExpandablePane() { return browser.element( 
'.mw-advancedSearch-expandablePane' ); }
+       get searchExpandablePane() { return browser.element( 
'.mw-advancedSearch-expandablePane-button' ); }
+       get searchPreview() { return browser.element( 
'.mw-advancedSearch-searchPreview' ); }
+       get searchPreviewItems() { return browser.elements( 
'.mw-advancedSearch-searchPreview .mw-advancedSearch-searchPreview-previewPill' 
); }
+
        formWasSubmitted() { return browser.getUrl().match( 
/\?advancedSearchOption-original=/ ) !== null; }
+
+       advancedSearchIsCollapsed() {
+               return browser.element( '.mw-advancedSearch-expandablePane > 
.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator.oo-ui-indicator-down' 
).isExisting();
+       }
+
        getSearchURL() {
                let search = browser.getUrl().split( '&' ).filter( function ( 
part ) {
                        return part.match( /^search=/ );
@@ -22,7 +30,16 @@
 
        open() {
                super.open( 'Special:Search' );
+               this.waitForAdvancedSearchToLoad();
        }
 
+       waitForAdvancedSearchToLoad() {
+               browser.waitForVisible( '.mw-advancedSearch-container', 5000 );
+       }
+
+       submitForm() {
+               browser.element( '#mw-search-top-table button' ).click();
+               this.waitForAdvancedSearchToLoad();
+       }
 }
 module.exports = new SearchPage();
diff --git a/tests/selenium/specs/advancedsearch.js 
b/tests/selenium/specs/advancedsearch.js
index 286ea0b..3382c09 100644
--- a/tests/selenium/specs/advancedsearch.js
+++ b/tests/selenium/specs/advancedsearch.js
@@ -6,13 +6,8 @@
 
 describe( 'Advanced Search', function () {
 
-       function waitForAdvancedSearchToLoad() {
-               browser.waitForVisible( '.mw-advancedSearch-container', 5000 );
-       }
-
        function testPillCreation( pillField, pillFieldLabels, input, 
expectedLabels ) {
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                SearchPage.searchExpandablePane.click();
                pillField.click();
@@ -34,14 +29,12 @@
        it( 'inserts advanced search elements on search page', function () {
 
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
                assert( SearchPage.searchContainer.isVisible() );
        } );
 
        it( 'finds no placeholders for "These words" "None of these words" and 
"One of these words"', function () {
 
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                assert( SearchPage.searchTheseWords.element( 'input' 
).getAttribute( 'placeholder' ) === '' );
                assert( SearchPage.searchNotTheseWords.element( 'input' 
).getAttribute( 'placeholder' ) === '' );
@@ -52,7 +45,6 @@
        it( 'finds placeholder for "Exactly this text".', function () {
 
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
                assert( SearchPage.searchExactText.getAttribute( 'placeholder' 
) !== '' );
 
        } );
@@ -77,7 +69,6 @@
 
        it( 'submits the search on enter when there is no text in "These Words" 
field', function () {
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                SearchPage.searchExpandablePane.click();
                SearchPage.searchTheseWords.click();
@@ -88,7 +79,6 @@
 
        it( 'does not submit the search on enter when there is text in "These 
Words" field', function () {
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                SearchPage.searchExpandablePane.click();
                SearchPage.searchTheseWords.click();
@@ -99,7 +89,6 @@
 
        it( 'submits the search on double enter when there is text in "These 
Words" field', function () {
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                SearchPage.searchExpandablePane.click();
                SearchPage.searchTheseWords.click();
@@ -110,7 +99,6 @@
 
        it( 'submits the search with the correct search terms from all the pill 
fields', function () {
                SearchPage.open();
-               waitForAdvancedSearchToLoad();
 
                SearchPage.searchExpandablePane.click();
                SearchPage.searchTheseWords.click();
diff --git a/tests/selenium/specs/search_submit.js 
b/tests/selenium/specs/search_submit.js
new file mode 100644
index 0000000..c173c05
--- /dev/null
+++ b/tests/selenium/specs/search_submit.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var assert = require( 'assert' );
+var SearchPage = require( '../pageobjects/search.page' );
+
+describe( 'Advanced Search submit', function () {
+
+       it( 'no search preview is shown in expanded state', function () {
+               SearchPage.open();
+               SearchPage.searchExpandablePane.click();
+               SearchPage.searchTheseWords.click();
+               browser.keys( 'test,' );
+               SearchPage.searchNotTheseWords.click();
+               browser.keys( 'test3 ' );
+               SearchPage.searchOneWord.click();
+               browser.keys( 'test4 test5' );
+               SearchPage.searchExactText.setValue( '"test1 test2"' );
+
+               assert( !SearchPage.searchPreviewItems.isExisting(), 'No 
preview pill elements should exist' );
+
+       } );
+
+       it( 'shows search preview in collapsed state', function () {
+               SearchPage.open();
+               SearchPage.searchExpandablePane.click();
+               SearchPage.searchTheseWords.click();
+               browser.keys( 'test,' );
+               SearchPage.searchNotTheseWords.click();
+               browser.keys( 'test3 ' );
+               SearchPage.searchOneWord.click();
+               browser.keys( 'test4 test5' );
+               SearchPage.searchExactText.setValue( '"test1 test2"' );
+               SearchPage.searchExpandablePane.click();
+               browser.waitUntil( SearchPage.advancedSearchIsCollapsed, 5000 );
+
+               assert( SearchPage.searchPreviewItems.isExisting(), 'Preview 
pills should be shown' );
+               assert.strictEqual( SearchPage.searchPreviewItems.value.length, 
4, 'Number of preview pills must match number of filled fields' );
+       } );
+
+       it( 'collapses search preview after submission', function () {
+
+               SearchPage.open();
+               SearchPage.searchExpandablePane.click();
+               SearchPage.searchTheseWords.click();
+               browser.keys( 'test,' );
+               SearchPage.submitForm();
+
+               assert( SearchPage.advancedSearchIsCollapsed() );
+
+       } );
+
+} );

-- 
To view, visit https://gerrit.wikimedia.org/r/406048
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I057336a52795e61e7e17b1992a5e25b7b192ff2c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/AdvancedSearch
Gerrit-Branch: master
Gerrit-Owner: Gabriel Birke <gabriel.bi...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to