Skip to content

Commit d3bf82c

Browse files
committed
browser tests: use lib to decode urls parts
Use robust lib instead of string processing to extract query parameters from urls. See hapijs/hapi#3280 for explanation on unintuitive query object prototype. Bug: T187306 Change-Id: Idf80128af6859af8b7d568f59f7d825e3cdc5a91
1 parent bdea0ba commit d3bf82c

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

tests/selenium/pageobjects/search.page.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict';
22
const Page = require( '../../../../../tests/selenium/pageobjects/page' );
3+
const url = require( 'url' );
34

45
class SearchPage extends Page {
56

@@ -16,7 +17,9 @@ class SearchPage extends Page {
1617
get searchPreview() { return browser.element( '.mw-advancedSearch-searchPreview' ); }
1718
get searchPreviewItems() { return browser.elements( '.mw-advancedSearch-searchPreview .mw-advancedSearch-searchPreview-previewPill' ); }
1819

19-
formWasSubmitted() { return browser.getUrl().match( /\?advancedSearchOption-original=/ ) !== null; }
20+
formWasSubmitted() {
21+
return Object.prototype.hasOwnProperty.call( this.getQueryFromUrl(), 'advancedSearchOption-original' );
22+
}
2023

2124
advancedSearchIsCollapsed() {
2225
return browser.element( '.mw-advancedSearch-expandablePane > .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator.oo-ui-indicator-down' ).isExisting();
@@ -42,11 +45,12 @@ class SearchPage extends Page {
4245
return browser.element( '.oo-ui-tagMultiselectWidget-group > div:nth-child(7) > span:nth-child(2)' );
4346
}
4447

45-
getSearchURL() {
46-
let search = browser.getUrl().split( '&' ).filter( function ( part ) {
47-
return part.match( /^search=/ );
48-
} );
49-
return decodeURIComponent( search[ 0 ] );
48+
getSearchQueryFromUrl() {
49+
return this.getQueryFromUrl().search;
50+
}
51+
52+
getQueryFromUrl() {
53+
return url.parse( browser.getUrl(), true ).query;
5054
}
5155

5256
getInfoPopupContent( popup ) {

tests/selenium/specs/advancedsearch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ describe( 'Advanced Search', function () {
115115
browser.keys( 'test4 test5' );
116116
SearchPage.searchExactText.setValue( '"test1 test2"\uE007' );
117117

118-
assert( SearchPage.getSearchURL() === 'search=test+"test1+test2"+-test3+test4+OR+test5' );
118+
assert.equal( SearchPage.getSearchQueryFromUrl(), 'test "test1 test2" -test3 test4 OR test5' );
119119

120120
} );
121121

tests/selenium/specs/searchPage.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,10 @@ describe( 'Search in page text block functions properly', function () {
5858
browser.keys( '40' );
5959
SearchPage.searchImageHeight.click();
6060
browser.keys( '40' );
61+
6162
SearchPage.searchButton.click();
62-
assert( SearchPage.getSearchURL() === 'search=old+-new+big+OR+enormous+OR+giant+intitle:house+hastemplate:"Main+Page"+filemime:image/gif+filew:>40+fileh:>40' );
63+
64+
assert.equal( SearchPage.getSearchQueryFromUrl(), 'old -new big OR enormous OR giant intitle:house hastemplate:"Main Page" filemime:image/gif filew:>40 fileh:>40' );
6365
} );
6466

6567
it( 'adds the namespace "File" and dimension fields are visible when searching for files of type image', function () {

0 commit comments

Comments
 (0)