EBernhardson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/207042
Change subject: Convert browser tests that check for create page link
......................................................................
Convert browser tests that check for create page link
Converts a variety of tests that check for the 'create a new page' link
to exist/not exist to use the api. These no longer check for that link,
but its tested extensively in the remaining browser tests and shouldn't
be anything to be concerned about.
Change-Id: I0be02c8a1b55e51c96d389a3ba1cbb145412eed8
---
M tests/browser/features/bad_syntax_api.feature
M tests/browser/features/bad_syntax_browser.feature
D tests/browser/features/boolean_operators.feature
A tests/browser/features/boolean_operators_api.feature
R tests/browser/features/combined_filters_api.feature
M tests/browser/features/exact_quotes_api.feature
D tests/browser/features/exact_quotes_browser.feature
M tests/browser/features/fuzzy_api.feature
D tests/browser/features/fuzzy_browser.feature
M tests/browser/features/hastemplate_api.feature
D tests/browser/features/hastemplate_browser.feature
M tests/browser/features/incategory_api.feature
M tests/browser/features/incategory_browser.feature
M tests/browser/features/insource_api.feature
D tests/browser/features/insource_browser.feature
M tests/browser/features/intitle_api.feature
D tests/browser/features/intitle_browser.feature
M tests/browser/features/linksto_api.feature
D tests/browser/features/linksto_browser.feature
M tests/browser/features/prefer_recent_api.feature
M tests/browser/features/prefix_api.feature
M tests/browser/features/prefix_browser.feature
D tests/browser/features/update_general.feature
A tests/browser/features/update_general_api.feature
A tests/browser/features/update_general_browser.feature
M tests/browser/features/update_non_existent_api.feature
M tests/browser/features/update_redirect_api.feature
27 files changed, 302 insertions(+), 378 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch
refs/changes/42/207042/1
diff --git a/tests/browser/features/bad_syntax_api.feature
b/tests/browser/features/bad_syntax_api.feature
index e4ecb6e..08d7c42 100644
--- a/tests/browser/features/bad_syntax_api.feature
+++ b/tests/browser/features/bad_syntax_api.feature
@@ -1,5 +1,76 @@
@bad_syntax @clean @api
Feature: Searches with syntax errors
+ @setup_main
+ Scenario: Searching for <text>~<text> treats the tilde like a space except
that the whole "word" (including tilde) makes a phrase search
+ When I api search for ffnonesenseword~catapult
+ Then Two Words is the first api search result
+
+ @setup_main
+ Scenario: Searching for <text>~<text> treats the tilde like a space (not
finding any results if a fuzzy search was needed)
+ When I api search for ffnonesensewor~catapult
+ Then there are no api search results
+
+ @balance_quotes
+ Scenario Outline: Searching for for a phrase with a hanging quote adds the
quote automatically
+ When I api search for <term>
+ Then Two Words is the first api search result
+ Examples:
+ | term |
+ | "two words |
+ | "two words" "ffnonesenseword catapult |
+ | "two words" "ffnonesenseword catapult pickles |
+ | "two words" pickles "ffnonesenseword catapult |
+
+ @balance_quotes
+ Scenario Outline: Searching for a phrase containing /, :, and \" find the
page as expected
+ Given a page named <title> exists
+ When I api search for <term>
+ Then <title> is the first api search result
+ Examples:
+ | term |
title |
+ | "10.1093/acprof:oso/9780195314250.003.0001" |
10.1093/acprof:oso/9780195314250.003.0001 |
+ | "10.5194/os-8-1071-2012" |
10.5194/os-8-1071-2012 |
+ | "10.7227/rie.86.2" | 10.7227/rie.86.2
|
+ | "10.7227\"yay" | 10.7227"yay
|
+ | intitle:"1911 Encyclopædia Britannica/Dionysius"' | 1911 Encyclopædia
Britannica/Dionysius |
+
+ Scenario: searching for NOT something will not crash (technically it should
bring up the most linked document, but this isn't worth checking)
+ When I api search for NOT catapult
+ Then there is an api search result
+
+ Scenario Outline: searching for less than and greater than doesn't find tons
and tons of tokens
+ When I api search for <query>
+ Then there are no api search results
+ Examples:
+ | query |
+ | <} |
+ | <=} |
+ | >. |
+ | >=. |
+ | > |
+ | < |
+ | >> |
+ | <> |
+ | <>= |
+ | >>> |
+ | <<< |
+ | <<<~ |
+
+ @filters
+ Scenario Outline: Empty filters work like terms but aren't in test data so
aren't found
+ When I api search for <term>
+ Then there are no api search results
+ Examples:
+ | term |
+ | intitle:"" catapult |
+ | incategory:"" catapult |
+ | intitle: |
+ | intitle:"" |
+ | incategory: |
+ | incategory:"" |
+ | hastemplate: |
+ | hastemplate:"" |
+
Scenario Outline: Searching with a / doesn't cause a degraded search result
When I api search for main <term>
Then Main Page is the first api search result
diff --git a/tests/browser/features/bad_syntax_browser.feature
b/tests/browser/features/bad_syntax_browser.feature
index ab07900..ab0b246 100644
--- a/tests/browser/features/bad_syntax_browser.feature
+++ b/tests/browser/features/bad_syntax_browser.feature
@@ -3,54 +3,12 @@
Background:
Given I am at a random page
- @setup_main
- Scenario: Searching for <text>~<text> treats the tilde like a space except
that the whole "word" (including tilde) makes a phrase search
- When I search for ffnonesenseword~catapult
- Then there is no warning
- And Two Words is the first search result
- And there is a link to create a new page from the search result
-
- @setup_main
- Scenario: Searching for <text>~<text> treats the tilde like a space (not
finding any results if a fuzzy search was needed)
- When I search for ffnonesensewor~catapult
- Then there is no warning
- And there are no search results
- And there is a link to create a new page from the search result
-
@exact_quotes @setup_main
Scenario: Searching for "<word> <word>"~<not a numer> treats the ~ as a space
When I search for "ffnonesenseword catapult"~anotherword
Then there is no warning
And Two Words is the first search result
And there is no link to create a new page from the search result
-
- @balance_quotes
- Scenario Outline: Searching for for a phrase with a hanging quote adds the
quote automatically
- When I search for <term>
- Then there is no warning
- And Two Words is the first search result
- And there is no link to create a new page from the search result
- Examples:
- | term |
- | "two words |
- | "two words" "ffnonesenseword catapult |
- | "two words" "ffnonesenseword catapult pickles |
- | "two words" pickles "ffnonesenseword catapult |
-
- @balance_quotes
- Scenario Outline: Searching for a phrase containing /, :, and \" find the
page as expected
- Given a page named <title> exists
- When I search for <term>
- Then there is no warning
- And <title> is the first search result
- And there is no link to create a new page from the search result
- Examples:
- | term |
title |
- | "10.1093/acprof:oso/9780195314250.003.0001" |
10.1093/acprof:oso/9780195314250.003.0001 |
- | "10.5194/os-8-1071-2012" |
10.5194/os-8-1071-2012 |
- | "10.7227/rie.86.2" | 10.7227/rie.86.2
|
- | "10.7227\"yay" | 10.7227"yay
|
- | intitle:"1911 Encyclopædia Britannica/Dionysius"' | 1911 Encyclopædia
Britannica/Dionysius |
@boolean_operators
Scenario Outline: boolean operators in bad positions in the query are
ignored so you get the option to create a new page
@@ -124,48 +82,6 @@
| catapult ~~~~~~ |
| catapult \|\|--- |
| \|\| catapult |
-
- Scenario: searching for NOT something will not crash (technically it should
bring up the most linked document, but this isn't worth checking)
- When I search for NOT catapult
- Then there is no warning
- And there is a search result
- And there is no link to create a new page from the search result
-
- Scenario Outline: searching for less than and greater than doesn't find tons
and tons of tokens
- When I search for <query>
- Then there is no warning
- And there are no search results
- And there is no link to create a new page from the search result
- Examples:
- | query |
- | <} |
- | <=} |
- | >. |
- | >=. |
- | > |
- | < |
- | >> |
- | <> |
- | <>= |
- | >>> |
- | <<< |
- | <<<~ |
-
- @filters
- Scenario Outline: Empty filters work like terms but aren't in test data so
aren't found
- When I search for <term>
- Then there is no warning
- And there are no search results
- Examples:
- | term |
- | intitle:"" catapult |
- | incategory:"" catapult |
- | intitle: |
- | intitle:"" |
- | incategory: |
- | incategory:"" |
- | hastemplate: |
- | hastemplate:"" |
@wildcard
Scenario Outline: Wildcards can't start a term but they aren't valid titles
so you still don't get the link to create an article
diff --git a/tests/browser/features/boolean_operators.feature
b/tests/browser/features/boolean_operators.feature
deleted file mode 100644
index cf66ca0..0000000
--- a/tests/browser/features/boolean_operators.feature
+++ /dev/null
@@ -1,44 +0,0 @@
-@boolean_operators @clean @phantomjs @setup_main
-Feature: Searches with boolean operators
- Background:
- Given I am at a random page
-
- Scenario Outline: -, !, and NOT prohibit words in search results
- When I search for <query>
- Then Catapult is the first search result
- But Amazing Catapult is not in the search results
- And there is no link to create a new page from the search result
- Examples:
- | query |
- | catapult -amazing |
- | -amazing catapult |
- | catapult !amazing |
- | !amazing catapult |
- | catapult NOT amazing |
- | NOT amazing catapult |
-
- Scenario Outline: +, &&, and AND require matches but since that is the
default they don't look like they do anything
- When I search for <query>
- Then Amazing Catapult is the first search result
- But Catapult is not in the search results
- And there is no link to create a new page from the search result
- Examples:
- | query |
- | +catapult amazing |
- | amazing +catapult |
- | +amazing +catapult |
- | catapult AND amazing |
-
- Scenario Outline: OR and || matches docs with either set
- When I search for <query>
- Then Catapult is in the search results
- And Two Words is in the search results
- And there is no link to create a new page from the search result
- Examples:
- | query |
- | catapult OR África |
- | África \|\| catapult |
- | catapult OR "África" |
- | catapult \|\| "África" |
- | "África" OR catapult |
- | "África" \|\| catapult |
diff --git a/tests/browser/features/boolean_operators_api.feature
b/tests/browser/features/boolean_operators_api.feature
new file mode 100644
index 0000000..230268e
--- /dev/null
+++ b/tests/browser/features/boolean_operators_api.feature
@@ -0,0 +1,38 @@
+@boolean_operators @clean @api @setup_main
+Feature: Searches with boolean operators
+ Scenario Outline: -, !, and NOT prohibit words in search results
+ When I api search for <query>
+ Then Catapult is the first api search result
+ But Amazing Catapult is not in the api search results
+ Examples:
+ | query |
+ | catapult -amazing |
+ | -amazing catapult |
+ | catapult !amazing |
+ | !amazing catapult |
+ | catapult NOT amazing |
+ | NOT amazing catapult |
+
+ Scenario Outline: +, &&, and AND require matches but since that is the
default they don't look like they do anything
+ When I api search for <query>
+ Then Amazing Catapult is the first api search result
+ But Catapult is not in the api search results
+ Examples:
+ | query |
+ | +catapult amazing |
+ | amazing +catapult |
+ | +amazing +catapult |
+ | catapult AND amazing |
+
+ Scenario Outline: OR and || matches docs with either set
+ When I api search for <query>
+ Then Catapult is in the api search results
+ And Two Words is in the api search results
+ Examples:
+ | query |
+ | catapult OR África |
+ | África \|\| catapult |
+ | catapult OR "África" |
+ | catapult \|\| "África" |
+ | "África" OR catapult |
+ | "África" \|\| catapult |
diff --git a/tests/browser/features/combined_filters.feature
b/tests/browser/features/combined_filters_api.feature
similarity index 60%
rename from tests/browser/features/combined_filters.feature
rename to tests/browser/features/combined_filters_api.feature
index c01e944..665dd58 100644
--- a/tests/browser/features/combined_filters.feature
+++ b/tests/browser/features/combined_filters_api.feature
@@ -1,12 +1,8 @@
-@clean @filters @phantomjs
+@clean @filters @api
Feature: Searches with combined filters
- Background:
- Given I am at a random page
-
Scenario Outline: Filters can be combined
- When I search for <term>
- Then <first_result> is the first search result
- And there is no link to create a new page from the search result
+ When I api search for <term>
+ Then <first_result> is the first api search result
Examples:
| term | first_result |
| incategory:twowords intitle:catapult | none |
diff --git a/tests/browser/features/exact_quotes_api.feature
b/tests/browser/features/exact_quotes_api.feature
index 083fe47..5d071cf 100644
--- a/tests/browser/features/exact_quotes_api.feature
+++ b/tests/browser/features/exact_quotes_api.feature
@@ -87,3 +87,9 @@
When I api search for catapult -"asdf" "two words"
Then Two Words is in the api search results
And Catapult is not in the api search results
+
+ @setup_main
+ Scenario: Searching for a word in quotes disbles stemming (can't find plural
with singular)
+ When I api search for "pickle"
+ Then there are no api search results
+
diff --git a/tests/browser/features/exact_quotes_browser.feature
b/tests/browser/features/exact_quotes_browser.feature
deleted file mode 100644
index 1272ad4..0000000
--- a/tests/browser/features/exact_quotes_browser.feature
+++ /dev/null
@@ -1,10 +0,0 @@
-@clean @exact_quotes @phantomjs
-Feature: Searches that contain quotes
- Background:
- Given I am at a random page
-
- @setup_main
- Scenario: Searching for a word in quotes disbles stemming (can't find plural
with singular)
- When I search for "pickle"
- Then there are no search results
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/fuzzy_api.feature
b/tests/browser/features/fuzzy_api.feature
index ac8358e..e488899 100644
--- a/tests/browser/features/fuzzy_api.feature
+++ b/tests/browser/features/fuzzy_api.feature
@@ -11,3 +11,17 @@
Scenario: Fuzzy search doesn't find terms that don't match the first two
characters for performance reasons
When I api search for fgnonesenseword~
Then there are no api search results
+
+ Scenario: Searching for <text>~ activates fuzzy search
+ When I api search for ffnonesensewor~
+ Then Two Words is the first api search result
+
+ Scenario Outline: Searching for <text>~<number between 0 and 1> activates
fuzzy search
+ When I api search for ffnonesensewor~<number>
+ Then Two Words is the first api search result
+ Examples:
+ | number |
+ | .8 |
+ | 0.8 |
+ | 1 |
+
diff --git a/tests/browser/features/fuzzy_browser.feature
b/tests/browser/features/fuzzy_browser.feature
deleted file mode 100644
index db00d7f..0000000
--- a/tests/browser/features/fuzzy_browser.feature
+++ /dev/null
@@ -1,19 +0,0 @@
-@clean @phantomjs @setup_main
-Feature: Searches that contain fuzzy matches
- Background:
- Given I am at a random page
-
- Scenario: Searching for <text>~ activates fuzzy search
- When I search for ffnonesensewor~
- Then Two Words is the first search result
- And there is no link to create a new page from the search result
-
- Scenario Outline: Searching for <text>~<number between 0 and 1> activates
fuzzy search
- When I search for ffnonesensewor~<number>
- Then Two Words is the first search result
- And there is no link to create a new page from the search result
- Examples:
- | number |
- | .8 |
- | 0.8 |
- | 1 |
diff --git a/tests/browser/features/hastemplate_api.feature
b/tests/browser/features/hastemplate_api.feature
index eb3245d..66c9608 100644
--- a/tests/browser/features/hastemplate_api.feature
+++ b/tests/browser/features/hastemplate_api.feature
@@ -19,3 +19,8 @@
Scenario: -hastemplate removes pages with matching templates
When I api search for -hastemplate:"Template Test" catapult
Then Two Words is not in the api search results
+
+ Scenario: hastemplate: finds pages with matching templates (when you don't
specify a namespace, Template is assumed)
+ When I api search for hastemplate:"Template Test"
+ Then Two Words is the first api search result
+
diff --git a/tests/browser/features/hastemplate_browser.feature
b/tests/browser/features/hastemplate_browser.feature
deleted file mode 100644
index 1cdad7c..0000000
--- a/tests/browser/features/hastemplate_browser.feature
+++ /dev/null
@@ -1,9 +0,0 @@
-@clean @filters @hastemplate @phantomjs
-Feature: Searches with the hastemplate filter
- Background:
- Given I am at a random page
-
- Scenario: hastemplate: finds pages with matching templates (when you don't
specify a namespace, Template is assumed)
- When I search for hastemplate:"Template Test"
- Then Two Words is the first search result
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/incategory_api.feature
b/tests/browser/features/incategory_api.feature
index be86b56..4ff374d 100644
--- a/tests/browser/features/incategory_api.feature
+++ b/tests/browser/features/incategory_api.feature
@@ -31,3 +31,18 @@
Scenario: incategory: finds a multiword category when it is surrounded by
quotes
When I api search for incategory:"CategoryWith ASpace"
Then IHaveATwoWordCategory is the first api search result
+
+ Scenario: incategory: can be combined with other text
+ When I api search for incategory:weaponry amazing
+ Then Amazing Catapult is the first api search result
+
+ Scenario: -incategory: excludes pages with the category
+ When I api search for -incategory:weaponry incategory:twowords
+ Then Two Words is the first api search result
+
+ Scenario: incategory: can handle a space after the :
+ When I api search for incategory: weaponry
+ Then Catapult is in the api search results
+ And Amazing Catapult is in the api search results
+ But Two Words is not in the api search results
+
diff --git a/tests/browser/features/incategory_browser.feature
b/tests/browser/features/incategory_browser.feature
index c2bab22..a956a62 100644
--- a/tests/browser/features/incategory_browser.feature
+++ b/tests/browser/features/incategory_browser.feature
@@ -10,19 +10,3 @@
But Two Words is not in the search results
And there is no link to create a new page from the search result
- Scenario: incategory: can be combined with other text
- When I search for incategory:weaponry amazing
- Then Amazing Catapult is the first search result
- And there is no link to create a new page from the search result
-
- Scenario: -incategory: excludes pages with the category
- When I search for -incategory:weaponry incategory:twowords
- Then Two Words is the first search result
- And there is no link to create a new page from the search result
-
- Scenario: incategory: can handle a space after the :
- When I search for incategory: weaponry
- Then Catapult is in the search results
- And Amazing Catapult is in the search results
- But Two Words is not in the search results
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/insource_api.feature
b/tests/browser/features/insource_api.feature
index f2f4d0a..bf9363e 100644
--- a/tests/browser/features/insource_api.feature
+++ b/tests/browser/features/insource_api.feature
@@ -1,5 +1,20 @@
@clean @filters @insource @api
Feature: Searches with the insource filter
+ Scenario: insource: only includes pages with the source
+ When I api search for all:insource:pickles
+ Then Template:Template Test is in the api search results
+ But Two Words is not in the api search results
+
+ Scenario: insource: can be combined with other text
+ When I api search for all:insource:catapult two words
+ Then Two Words is the first api search result
+ But Template:Template Test is not in the api search results
+
+ Scenario: -insource: excludes pages with that in the source
+ When I api search for all:-insource:pickles pickles
+ Then Two Words is the first api search result
+ But Template:Template Test is not in the api search results
+
@wildcards
Scenario: insource: can take a wildcard
When I api search for all:insource:pickl*
@@ -17,7 +32,7 @@
When I api search for insource:/\[\[Category/ asdf
Then Catapult is the first api search result
- @regex @highlighting
+ @regex
Scenario: insource:// finds text inside of template calls
When I api search for insource:/year_end.*=.*661/
Then Rashidun Caliphate is the first api search result
@@ -43,6 +58,11 @@
Then RegexSpaces is the first api search result
@regex
+ Scenario: insource:// can find a url
+ When I api search for all:insource:/show_bug.cgi\?id=52908/
+ Then File:Savepage-greyed.png is the first api search result
+
+ @regex
Scenario: insource:// is case sensitive by default but can be made case
insensitive
When I api search for insource:/a\.B/
Then there are no api search results
@@ -50,22 +70,21 @@
Then RegexEscapedDot is the first api search result
@regex
- Scenario: insource:// doesn't break other clauses
- When I api search for insource:/b c/ insource:/a b c/
- Then RegexSpaces is the first api search result
-
- @regex
- Scenario: insource:// for other complex regexes finds answers and doesn't
spin forever
- When I api search for all:insource:/[ab]*a[cd]{50,80}/
- Then RegexComplexResult is the first api search result
-
- @regex
Scenario: insource:// reports errors sanely
When I api search for all:insource:/[ /
Then this error is reported by api: Regular expression syntax error at 2:
expected ']'
+
+ @regex
+ Scenario: insource:// doesn't break other clauses
+ When I api search for insource:/b c/ insource:/a b c/
+ Then RegexSpaces is the first api search result
@regex
Scenario: insource:// for some complex regexes fails entirely
When I api search for all:insource:/[ab]*a[ab]{50,80}/
Then this error is reported by api: Regular expression is too complex.
Learn more about simplifying it
[[mw:Special:MyLanguage/Help:CirrusSearch/RegexTooComplex|here]].
+ @regex
+ Scenario: insource:// for other complex regexes finds answers and doesn't
spin forever
+ When I api search for all:insource:/[ab]*a[cd]{50,80}/
+ Then RegexComplexResult is the first api search result
diff --git a/tests/browser/features/insource_browser.feature
b/tests/browser/features/insource_browser.feature
deleted file mode 100644
index 21dfe70..0000000
--- a/tests/browser/features/insource_browser.feature
+++ /dev/null
@@ -1,27 +0,0 @@
-@clean @filters @insource @phantomjs
-Feature: Searches with the insource filter
- Background:
- Given I am at a random page
-
- Scenario: insource: only includes pages with the source
- When I search for all:insource:pickles
- Then Template:Template Test is in the search results
- But Two Words is not in the search results
- And there is no link to create a new page from the search result
-
- Scenario: insource: can be combined with other text
- When I search for all:insource:catapult two words
- Then Two Words is the first search result
- But Template:Template Test is not in the search results
- And there is no link to create a new page from the search result
-
- Scenario: -insource: excludes pages with that in the source
- When I search for all:-insource:pickles pickles
- Then Two Words is the first search result
- But Template:Template Test is not in the search results
- And there is no link to create a new page from the search result
-
- @regex
- Scenario: insource:// can find a url
- When I search for all:insource:/show_bug.cgi\?id=52908/
- Then File:Savepage-greyed.png is the first search imageresult
diff --git a/tests/browser/features/intitle_api.feature
b/tests/browser/features/intitle_api.feature
index d500716..ac13212 100644
--- a/tests/browser/features/intitle_api.feature
+++ b/tests/browser/features/intitle_api.feature
@@ -19,3 +19,26 @@
When I api search for intitle: "amazing catapult"
Then Amazing Catapult is the first api search result
And Two Words is not in the api search results
+
+ Scenario: intitle: only includes pages with the title
+ When I api search for intitle:catapult
+ Then Catapult is in the api search results
+ And Amazing Catapult is in the api search results
+ But Two Words is not in the api search results
+
+ Scenario: -intitle: excludes pages with part of the title
+ When I api search for -intitle:amazing intitle:catapult
+ Then Catapult is the first api search result
+ And Amazing Catapult is not in the api search results
+
+ Scenario: -intitle: doesn't highlight excluded title
+ When I api search for -intitle:catapult two words
+ Then Two Words is the first api search result
+ And ffnonesenseword catapult pickles anotherword is the highlighted text
of the first api search result
+
+ Scenario: intitle: will accept a space after its :
+ When I api search for intitle: catapult
+ Then Catapult is in the api search results
+ And Amazing Catapult is in the api search results
+ But Two Words is not in the api search results
+
diff --git a/tests/browser/features/intitle_browser.feature
b/tests/browser/features/intitle_browser.feature
deleted file mode 100644
index 7b26df7..0000000
--- a/tests/browser/features/intitle_browser.feature
+++ /dev/null
@@ -1,29 +0,0 @@
-@clean @filters @intitle @phantomjs
-Feature: Searches with the intitle filter
- Background:
- Given I am at a random page
-
- Scenario: intitle: only includes pages with the title
- When I search for intitle:catapult
- Then Catapult is in the search results
- And Amazing Catapult is in the search results
- But Two Words is not in the search results
- And there is no link to create a new page from the search result
-
- Scenario: -intitle: excludes pages with part of the title
- When I search for -intitle:amazing intitle:catapult
- Then Catapult is the first search result
- And Amazing Catapult is not in the search results
- And there is no link to create a new page from the search result
-
- Scenario: -intitle: doesn't highlight excluded title
- When I search for -intitle:catapult two words
- Then Two Words is the first search result
- And ffnonesenseword catapult pickles anotherword is the highlighted text
of the first search result
-
- Scenario: intitle: will accept a space after its :
- When I search for intitle: catapult
- Then Catapult is in the search results
- And Amazing Catapult is in the search results
- But Two Words is not in the search results
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/linksto_api.feature
b/tests/browser/features/linksto_api.feature
index 24bdf26..e527e6c 100644
--- a/tests/browser/features/linksto_api.feature
+++ b/tests/browser/features/linksto_api.feature
@@ -1,5 +1,10 @@
@clean @filters @linksto @api
Feature: Searches with the linksto filter
+ Scenario: linksto only includes pages with the links
+ When I api search for linksto:"LinksToTest Target"
+ Then LinksToTest Plain is in the api search results
+ And LinksToTest OtherText is in the api search results
+
Scenario: linksto can be combined with other text
When I api search for linksto:"LinksToTest Target" text
Then LinksToTest OtherText is the first api search result
diff --git a/tests/browser/features/linksto_browser.feature
b/tests/browser/features/linksto_browser.feature
deleted file mode 100644
index 22bf6ce..0000000
--- a/tests/browser/features/linksto_browser.feature
+++ /dev/null
@@ -1,11 +0,0 @@
-@clean @filters @linksto @phantomjs
-Feature: Searches with the linksto filter
- Background:
- Given I am at a random page
-
- Scenario: linksto only includes pages with the links
- When I search for linksto:"LinksToTest Target"
- Then LinksToTest Plain is in the search results
- And LinksToTest OtherText is in the search results
- But LinksToTest No Link is not in the search results
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/prefer_recent_api.feature
b/tests/browser/features/prefer_recent_api.feature
index 90acf17..bc2e85d 100644
--- a/tests/browser/features/prefer_recent_api.feature
+++ b/tests/browser/features/prefer_recent_api.feature
@@ -1,4 +1,4 @@
-@clean @phantomjs @prefer_recent
+@clean @api @prefer_recent
Feature: Searches with prefer-recent
Scenario Outline: Recently updated articles are prefered if prefer-recent:
is specified
When I api search for PreferRecent First OR Second OR Third
diff --git a/tests/browser/features/prefix_api.feature
b/tests/browser/features/prefix_api.feature
index 983f4bb..e7a38f9 100644
--- a/tests/browser/features/prefix_api.feature
+++ b/tests/browser/features/prefix_api.feature
@@ -54,3 +54,9 @@
Scenario: The prefix: filter doesn't find redirects
When I api search for prefix:Prefix Test Redirec
Then there are no api search results
+
+ Scenario: The prefix: filter filters results to those with titles prefixed by
value
+ When I api search for prefix prefix:prefix
+ Then Prefix Test is the first api search result
+ But Foo Prefix Test is not in the api search results
+
diff --git a/tests/browser/features/prefix_browser.feature
b/tests/browser/features/prefix_browser.feature
index a1c2f2d..235a1d8 100644
--- a/tests/browser/features/prefix_browser.feature
+++ b/tests/browser/features/prefix_browser.feature
@@ -8,8 +8,3 @@
Then Prefix Test is the first search result
But Foo Prefix Test is not in the search results
- Scenario: The prefix: filter filters results to those with titles prefixed
by value
- When I search for prefix prefix:prefix
- Then Prefix Test is the first search result
- But Foo Prefix Test is not in the search results
- And there is no link to create a new page from the search result
diff --git a/tests/browser/features/update_general.feature
b/tests/browser/features/update_general.feature
deleted file mode 100644
index 7db33d3..0000000
--- a/tests/browser/features/update_general.feature
+++ /dev/null
@@ -1,83 +0,0 @@
-@clean @phantomjs @update
-Feature: Search backend updates
- Scenario: Deleted pages are removed from the index
- Given a page named DeleteMe exists
- And I am at a random page
- Then within 20 seconds searching for DeleteMe yields DeleteMe as the first
result
- When I delete DeleteMe
- Then within 20 seconds searching for DeleteMe yields none as the first
result
-
- Scenario: Deleted redirects are removed from the index
- Given a page named DeleteMeRedirect exists with contents #REDIRECT
[[DeleteMe]]
- And a page named DeleteMe exists
- And I am at a random page
- Then within 20 seconds searching for DeleteMeRedirect yields DeleteMe as
the first result
- When I delete DeleteMeRedirect
- Then within 20 seconds searching for DeleteMeRedirect yields none as the
first result
-
- Scenario: Altered pages are updated in the index
- Given a page named ChangeMe exists with contents foo
- When I edit ChangeMe to add superduperchangedme
- And I am at a random page
- Then within 20 seconds searching for superduperchangedme yields ChangeMe
as the first result
-
- Scenario: Pages containing altered template are updated in the index
- Given a page named Template:ChangeMe exists with contents foo
- And a page named ChangeMyTemplate exists with contents
{{Template:ChangeMe}}
- When I edit Template:ChangeMe to add superduperultrachangedme
- And I am at a random page
- Then within 20 seconds searching for superduperultrachangedme yields
ChangeMyTemplate as the first result
-
- # This test doesn't rely on our paranoid revision delete handling logic,
rather, it verifies what should work with the
- # logic with a similar degree of paranoia
- Scenario: When a revision is deleted the page is updated regardless of if
the revision is current
- Given I am logged in
- And a page named RevDelTest exists with contents first
- And a page named RevDelTest exists with contents delete this revision
- And within 20 seconds searching for intitle:RevDelTest "delete this
revision" yields RevDelTest as the first result
- And a page named RevDelTest exists with contents current revision
- When I delete the second most recent revision of RevDelTest
- Then within 20 seconds searching for intitle:RevDelTest "delete this
revision" yields none as the first result
- When I search for intitle:RevDelTest current revision
- Then RevDelTest is the first search result
-
- @move
- Scenario: Moved pages that leave a redirect are updated in the index
- Given I am logged in
- And a page named Move%{epoch} From1 exists with contents move me
- And within 20 seconds searching for Move%{epoch} From1 yields
Move%{epoch} From1 as the first result
- When I move Move%{epoch} From1 to Move%{epoch} To1 and leave a redirect
- And within 20 seconds searching for Move%{epoch} From1 yields
Move%{epoch} To1 as the first result
- And within 20 seconds searching for Move%{epoch} To1 yields Move%{epoch}
To1 as the first result
-
- @move
- Scenario: Moved pages that leave a redirect are updated in the index
- Given I am logged in
- And a page named Move%{epoch} From2 exists with contents move me
- And within 20 seconds searching for Move%{epoch} From2 yields
Move%{epoch} From2 as the first result
- When I move Move%{epoch} From2 to Move%{epoch} To2 and do not leave a
redirect
- Then within 20 seconds searching for Move%{epoch} From2 yields none as the
first result
- And within 20 seconds searching for Move%{epoch} To2 yields Move%{epoch}
To2 as the first result
-
- @move
- Scenario: Moved pages that switch indexes are removed from their old index
if they leave a redirect
- Given I am logged in
- And a page named Move%{epoch} From3 exists with contents move me
- And within 20 seconds searching for Move%{epoch} From3 yields
Move%{epoch} From3 as the first result
- When I move Move%{epoch} From3 to User:Move%{epoch} To3 and leave a
redirect
- Then within 20 seconds searching for User:Move%{epoch} To3 yields
User:Move%{epoch} To3 as the first result
- And within 20 seconds searching for Move%{epoch} From3 yields none as
the first result
-
- @move
- Scenario: Moved pages that switch indexes are removed from their old index
if they don't leave a redirect
- Given I am logged in
- And a page named Move%{epoch} From4 exists with contents move me
- And within 20 seconds searching for Move%{epoch} From4 yields
Move%{epoch} From4 as the first result
- When I move Move%{epoch} From4 to User:Move%{epoch} To4 and do not leave a
redirect
- Then within 20 seconds searching for User:Move%{epoch} To4 yields
User:Move%{epoch} To4 as the first result
- And within 20 seconds searching for Move%{epoch} To4 yields none as the
first result
-
- Scenario: Really really long links don't break updates
- When a page named ReallyLongLink%{epoch} exists with contents
@really_long_link.txt
- And I am at a random page
- Then within 20 seconds searching for ReallyLongLink%{epoch} yields
ReallyLongLink%{epoch} as the first result
diff --git a/tests/browser/features/update_general_api.feature
b/tests/browser/features/update_general_api.feature
new file mode 100644
index 0000000..4a89394
--- /dev/null
+++ b/tests/browser/features/update_general_api.feature
@@ -0,0 +1,29 @@
+@clean @api @update
+Feature: Search backend updates
+ Scenario: Deleted pages are removed from the index
+ Given a page named DeleteMe exists
+ Then within 20 seconds api searching for DeleteMe yields DeleteMe as the
first result
+ When I delete DeleteMe
+ Then within 20 seconds api searching for DeleteMe yields none as the first
result
+
+ Scenario: Deleted redirects are removed from the index
+ Given a page named DeleteMeRedirect exists with contents #REDIRECT
[[DeleteMe]]
+ And a page named DeleteMe exists
+ Then within 20 seconds api searching for DeleteMeRedirect yields DeleteMe
as the first result
+ When I delete DeleteMeRedirect
+ Then within 20 seconds api searching for DeleteMeRedirect yields none as
the first result
+
+ Scenario: Altered pages are updated in the index
+ Given a page named ChangeMe exists with contents foo
+ When I edit ChangeMe to add superduperchangedme
+ Then within 20 seconds api searching for superduperchangedme yields
ChangeMe as the first result
+
+ Scenario: Pages containing altered template are updated in the index
+ Given a page named Template:ChangeMe exists with contents foo
+ And a page named ChangeMyTemplate exists with contents
{{Template:ChangeMe}}
+ When I edit Template:ChangeMe to add superduperultrachangedme
+ Then within 20 seconds api searching for superduperultrachangedme yields
ChangeMyTemplate as the first result
+
+ Scenario: Really really long links don't break updates
+ When a page named ReallyLongLink%{epoch} exists with contents
@really_long_link.txt
+ Then within 20 seconds api searching for ReallyLongLink%{epoch} yields
ReallyLongLink%{epoch} as the first result
diff --git a/tests/browser/features/update_general_browser.feature
b/tests/browser/features/update_general_browser.feature
new file mode 100644
index 0000000..9978df9
--- /dev/null
+++ b/tests/browser/features/update_general_browser.feature
@@ -0,0 +1,41 @@
+@clean @phantomjs @update
+Feature: Search backend updates
+ # This test doesn't rely on our paranoid revision delete handling logic,
rather, it verifies what should work with the
+ # logic with a similar degree of paranoia
+ Scenario: When a revision is deleted the page is updated regardless of if
the revision is current
+ Given I am logged in
+ And a page named RevDelTest exists with contents first
+ And a page named RevDelTest exists with contents delete this revision
+ And within 20 seconds searching for intitle:RevDelTest "delete this
revision" yields RevDelTest as the first result
+ And a page named RevDelTest exists with contents current revision
+ When I delete the second most recent revision of RevDelTest
+ Then within 20 seconds searching for intitle:RevDelTest "delete this
revision" yields none as the first result
+ When I search for intitle:RevDelTest current revision
+ Then RevDelTest is the first search result
+
+ @move
+ Scenario: Moved pages that leave a redirect are updated in the index
+ Given I am logged in
+ And a page named Move%{epoch} From2 exists with contents move me
+ And within 20 seconds searching for Move%{epoch} From2 yields
Move%{epoch} From2 as the first result
+ When I move Move%{epoch} From2 to Move%{epoch} To2 and do not leave a
redirect
+ Then within 20 seconds searching for Move%{epoch} From2 yields none as the
first result
+ And within 20 seconds searching for Move%{epoch} To2 yields Move%{epoch}
To2 as the first result
+
+ @move
+ Scenario: Moved pages that switch indexes are removed from their old index
if they leave a redirect
+ Given I am logged in
+ And a page named Move%{epoch} From3 exists with contents move me
+ And within 20 seconds searching for Move%{epoch} From3 yields
Move%{epoch} From3 as the first result
+ When I move Move%{epoch} From3 to User:Move%{epoch} To3 and leave a
redirect
+ Then within 20 seconds searching for User:Move%{epoch} To3 yields
User:Move%{epoch} To3 as the first result
+ And within 20 seconds searching for Move%{epoch} From3 yields none as
the first result
+
+ @move
+ Scenario: Moved pages that switch indexes are removed from their old index
if they don't leave a redirect
+ Given I am logged in
+ And a page named Move%{epoch} From4 exists with contents move me
+ And within 20 seconds searching for Move%{epoch} From4 yields
Move%{epoch} From4 as the first result
+ When I move Move%{epoch} From4 to User:Move%{epoch} To4 and do not leave a
redirect
+ Then within 20 seconds searching for User:Move%{epoch} To4 yields
User:Move%{epoch} To4 as the first result
+ And within 20 seconds searching for Move%{epoch} To4 yields none as the
first result
diff --git a/tests/browser/features/update_non_existent_api.feature
b/tests/browser/features/update_non_existent_api.feature
index 8339ac6..08b3acc 100644
--- a/tests/browser/features/update_non_existent_api.feature
+++ b/tests/browser/features/update_non_existent_api.feature
@@ -1,13 +1,9 @@
-@clean @non_existent @phantomjs @update
+@clean @non_existent @api @update
Feature: Search backend updates that reference nonexistent pages
- Background:
- Given I am at a random page
-
Scenario: Pages that link to nonexistent pages still get their search index
updated
Given a page named IDontExist doesn't exist
And a page named ILinkToNonExistentPages%{epoch} exists with contents
[[IDontExist]]
- When I am at a random page
- Then within 10 seconds searching for ILinkToNonExistentPages%{epoch}
yields ILinkToNonExistentPages%{epoch} as the first result
+ Then within 10 seconds api searching for ILinkToNonExistentPages%{epoch}
yields ILinkToNonExistentPages%{epoch} as the first result
Scenario: Pages that redirect to nonexistent pages don't throw errors
Given a page named IDontExist doesn't exist
@@ -15,30 +11,27 @@
Scenario: Linking to a nonexistent page doesn't add it to the search index
with an [INVALID] word count
Given a page named ILinkToNonExistentPages%{epoch} exists with contents
[[IDontExistLink%{epoch}]]
- When I am at a random page
- Then within 20 seconds searching for IDontExistLink%{epoch} yields
ILinkToNonExistentPages%{epoch} as the first result
- And there are no search results with [INVALID] words in the data
+ Then within 20 seconds api searching for IDontExistLink%{epoch} yields
ILinkToNonExistentPages%{epoch} as the first result
+ And there are no api search results with [INVALID] words in the data
When a page named IDontExistLink%{epoch} exists
- Then within 10 seconds searching for IDontExistLink%{epoch} yields
IDontExistLink%{epoch} as the first result
- And there are no search results with [INVALID] words in the data
+ Then within 10 seconds api searching for IDontExistLink%{epoch} yields
IDontExistLink%{epoch} as the first result
+ And there are no api search results with [INVALID] words in the data
Scenario: Redirecting to a non-existing page doesn't add it to the search
index with an [INVALID] word count
Given a page named IRedirectToNonExistentPages%{epoch} exists with
contents #REDIRECT [[IDontExistRdir%{epoch}]]
- And I am at a random page
When wait 5 seconds for the index to get the page
- And I search for IDontExistRdir%{epoch}
- And there are no search results with [INVALID] words in the data
+ And I api search for IDontExistRdir%{epoch}
+ And there are no api search results with [INVALID] words in the data
And a page named IDontExistRdir%{epoch} exists
- Then within 10 seconds searching for IDontExistRdir%{epoch} yields
IDontExistRdir%{epoch} as the first result
- And there are no search results with [INVALID] words in the data
+ Then within 10 seconds api searching for IDontExistRdir%{epoch} yields
IDontExistRdir%{epoch} as the first result
+ And there are no api search results with [INVALID] words in the data
Scenario: Linking to a page that redirects to a non-existing page doesn't
add it to the search index with an [INVALID] word count
Given a page named IRedirectToNonExistentPagesLinked%{epoch} exists with
contents #REDIRECT [[IDontExistRdirLinked%{epoch}]]
And a page named ILinkIRedirectToNonExistentPages%{epoch} exists with
contents [[IRedirectToNonExistentPagesLinked%{epoch}]]
- And I am at a random page
When wait 5 seconds for the index to get the page
- And I search for IDontExistRdir%{epoch}
- And there are no search results with [INVALID] words in the data
+ And I api search for IDontExistRdir%{epoch}
+ And there are no api search results with [INVALID] words in the data
When a page named IDontExistRdirLinked%{epoch} exists
- Then within 10 seconds searching for IDontExistRdirLinked%{epoch} yields
IDontExistRdirLinked%{epoch} as the first result
- And there are no search results with [INVALID] words in the data
+ Then within 10 seconds api searching for IDontExistRdirLinked%{epoch}
yields IDontExistRdirLinked%{epoch} as the first result
+ And there are no api search results with [INVALID] words in the data
diff --git a/tests/browser/features/update_redirect_api.feature
b/tests/browser/features/update_redirect_api.feature
index 51272e1..7d6714b 100644
--- a/tests/browser/features/update_redirect_api.feature
+++ b/tests/browser/features/update_redirect_api.feature
@@ -6,7 +6,7 @@
Then within 20 seconds api searching for ToBeRedirect%{epoch} yields
ToBeRedirect%{epoch} as the first result
When a page named ToBeRedirect%{epoch} exists with contents #REDIRECT
[[RedirectTaget]]
Then within 20 seconds api searching for ToBeRedirect%{epoch} yields
RedirectTaget as the first result
- And ToBeRedirect%{epoch} is not in the search results
+ And ToBeRedirect%{epoch} is not in the api search results
Scenario: Turning a page from a redirect to a regular page puts it in the
index
Given a page named RedirectTaget exists
--
To view, visit https://gerrit.wikimedia.org/r/207042
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0be02c8a1b55e51c96d389a3ba1cbb145412eed8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CirrusSearch
Gerrit-Branch: master
Gerrit-Owner: EBernhardson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits