diff --git a/tests/end2end/features/search.feature b/tests/end2end/features/search.feature index 4d8b8e17f..aeea2e4e8 100644 --- a/tests/end2end/features/search.feature +++ b/tests/end2end/features/search.feature @@ -11,20 +11,17 @@ Feature: Searching on a page Scenario: Searching text When I run :search foo - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found Scenario: Searching twice When I run :search foo And I run :search bar - And I run :yank selection - Then the clipboard should contain "Bar" + Then "Bar" should be found Scenario: Searching with --reverse When I set general -> ignore-case to true And I run :search -r foo - And I run :yank selection - Then the clipboard should contain "Foo" + Then "Foo" should be found Scenario: Searching without matches When I run :search doesnotmatch @@ -34,14 +31,12 @@ Feature: Searching on a page Scenario: Searching with / and spaces at the end (issue 874) When I run :set-cmd-text -s /space And I run :command-accept - And I run :yank selection - Then the clipboard should contain "space " + Then "space " should be found Scenario: Searching with / and slash in search term (issue 507) When I run :set-cmd-text -s //slash And I run :command-accept - And I run :yank selection - Then the clipboard should contain "/slash" + Then "/slash" should be found # This doesn't work because this is QtWebKit behavior. @xfail_norun @@ -54,26 +49,22 @@ Feature: Searching on a page Scenario: Searching text with ignore-case = true When I set general -> ignore-case to true And I run :search bar - And I run :yank selection - Then the clipboard should contain "Bar" + Then "Bar" should be found Scenario: Searching text with ignore-case = false When I set general -> ignore-case to false And I run :search bar - And I run :yank selection - Then the clipboard should contain "bar" + Then "bar" should be found Scenario: Searching text with ignore-case = smart (lower-case) When I set general -> ignore-case to smart And I run :search bar - And I run :yank selection - Then the clipboard should contain "Bar" + Then "Bar" should be found Scenario: Searching text with ignore-case = smart (upper-case) When I set general -> ignore-case to smart And I run :search Foo - And I run :yank selection - Then the clipboard should contain "Foo" # even though foo was first + Then "Foo" should be found # even though foo was first ## :search-next @@ -81,22 +72,19 @@ Feature: Searching on a page When I set general -> ignore-case to true And I run :search foo And I run :search-next - And I run :yank selection - Then the clipboard should contain "Foo" + Then "Foo" should be found Scenario: Jumping to next match with count When I set general -> ignore-case to true And I run :search baz And I run :search-next with count 2 - And I run :yank selection - Then the clipboard should contain "BAZ" + Then "BAZ" should be found Scenario: Jumping to next match with --reverse When I set general -> ignore-case to true And I run :search --reverse foo And I run :search-next - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found Scenario: Jumping to next match without search # Make sure there was no search in the same window before @@ -109,8 +97,7 @@ Feature: Searching on a page And I run :search foo And I run :tab-prev And I run :search-next - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found # https://github.com/qutebrowser/qutebrowser/issues/2438 Scenario: Jumping to next match after clearing @@ -118,8 +105,7 @@ Feature: Searching on a page And I run :search foo And I run :search And I run :search-next - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found ## :search-prev @@ -128,8 +114,7 @@ Feature: Searching on a page And I run :search foo And I run :search-next And I run :search-prev - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found Scenario: Jumping to previous match with count When I set general -> ignore-case to true @@ -137,16 +122,14 @@ Feature: Searching on a page And I run :search-next And I run :search-next And I run :search-prev with count 2 - And I run :yank selection - Then the clipboard should contain "baz" + Then "baz" should be found Scenario: Jumping to previous match with --reverse When I set general -> ignore-case to true And I run :search --reverse foo And I run :search-next And I run :search-prev - And I run :yank selection - Then the clipboard should contain "Foo" + Then "Foo" should be found Scenario: Jumping to previous match without search # Make sure there was no search in the same window before @@ -160,15 +143,13 @@ Feature: Searching on a page When I run :search foo And I run :search-next And I run :search-next - And I run :yank selection - Then the clipboard should contain "foo" + Then "foo" should be found Scenario: Wrapping around page with --reverse When I run :search --reverse foo And I run :search-next And I run :search-next - And I run :yank selection - Then the clipboard should contain "Foo" + Then "Foo" should be found # TODO: wrapping message with scrolling # TODO: wrapping message without scrolling diff --git a/tests/end2end/features/test_search_bdd.py b/tests/end2end/features/test_search_bdd.py index 12e5d9480..d9866fe03 100644 --- a/tests/end2end/features/test_search_bdd.py +++ b/tests/end2end/features/test_search_bdd.py @@ -17,6 +17,8 @@ # You should have received a copy of the GNU General Public License # along with qutebrowser. If not, see . +import json + import pytest import pytest_bdd as bdd @@ -24,6 +26,16 @@ import pytest_bdd as bdd from end2end.features.test_yankpaste_bdd import init_fake_clipboard -bdd.scenarios('search.feature') +@bdd.then(bdd.parsers.parse('"{text}" should be found')) +def check_found_text(request, quteproc, text): + quteproc.send_cmd(':yank selection') + quteproc.wait_for(message='Setting fake clipboard: {}'.format( + json.dumps(text))) + +# After cancelling the search, the text (sometimes?) shows up as selected. +# However, we can't get it via ':yank selection' it seems? pytestmark = pytest.mark.qtwebengine_skip("Searched text is not selected...") + + +bdd.scenarios('search.feature')