diff --git a/tests/end2end/data/äöü.html b/tests/end2end/data/äöü.html new file mode 100644 index 000000000..c0fda40df --- /dev/null +++ b/tests/end2end/data/äöü.html @@ -0,0 +1,10 @@ + + + + + Chäschüechli + + + foo + + diff --git a/tests/end2end/features/history.feature b/tests/end2end/features/history.feature new file mode 100644 index 000000000..ad57ab1f1 --- /dev/null +++ b/tests/end2end/features/history.feature @@ -0,0 +1,47 @@ +Feature: Page history + + Make sure the global page history is saved correctly. + + Background: + Given I run :history-clear + + Scenario: Simple history saving + When I open data/numbers/1.txt + And I open data/numbers/2.txt + Then the history file should contain: + http://localhost:(port)/data/numbers/1.txt + http://localhost:(port)/data/numbers/2.txt + + Scenario: History item with title + When I open data/title.html + Then the history file should contain: + http://localhost:(port)/data/title.html Test title + + Scenario: History item with redirect + When I open redirect-to?url=data/title.html without waiting + And I wait until data/title.html is loaded + Then the history file should contain: + http://localhost:(port)/redirect-to?url=data/title.html Test title + http://localhost:(port)/data/title.html Test title + + Scenario: History item with spaces in URL + When I open data/title with spaces.html + Then the history file should contain: + http://localhost:(port)/data/title%20with%20spaces.html Test title + + Scenario: History item with umlauts + When I open data/äöü.html + Then the history file should contain: + http://localhost:(port)/data/%C3%A4%C3%B6%C3%BC.html Chäschüechli + + Scenario: History with an error + When I run :open file:///does/not/exist + And I wait for "Error while loading file:///does/not/exist: Error opening /does/not/exist: *" in the log + Then the history file should contain: + file:///does/not/exist Error loading page: file:///does/not/exist + + Scenario: History with a 404 + When I open status/404 without waiting + And I wait for "Error while loading http://localhost:*/status/404: NOT FOUND" in the log + Then the history file should contain: + http://localhost:(port)/status/404 Error loading page: http://localhost:(port)/status/404 diff --git a/tests/end2end/features/test_history_bdd.py b/tests/end2end/features/test_history_bdd.py new file mode 100644 index 000000000..3190a0a31 --- /dev/null +++ b/tests/end2end/features/test_history_bdd.py @@ -0,0 +1,44 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2016 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +import os.path + +import pytest_bdd as bdd +bdd.scenarios('history.feature') + + +@bdd.then(bdd.parsers.parse("the history file should contain:\n{expected}")) +def check_history(quteproc, httpbin, expected): + history_file = os.path.join(quteproc.basedir, 'data', 'history') + quteproc.send_cmd(':save history') + quteproc.wait_for(message='Saved to *history') + + expected = expected.replace('(port)', str(httpbin.port)).splitlines() + + with open(history_file, 'r', encoding='utf-8') as f: + lines = [] + for line in f: + if not line.strip(): + continue + print('history line: ' + line) + line = line.split(' ', maxsplit=1)[1] # Strip off timestamp + line = line.rstrip() + lines.append(line) + + assert lines == expected