qutebrowser/tests/end2end/test_insert_mode.py

88 lines
3.4 KiB
Python
Raw Normal View History

# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
2018-02-05 12:19:50 +01:00
# Copyright 2016-2018 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
#
# 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 <http://www.gnu.org/licenses/>.
"""Test insert mode settings on html files."""
import pytest
@pytest.mark.parametrize(['file_name', 'elem_id', 'source', 'input_text'], [
('textarea.html', 'qute-textarea', 'clipboard', 'qutebrowser'),
('textarea.html', 'qute-textarea', 'keypress', 'superqutebrowser'),
('input.html', 'qute-input', 'clipboard', 'amazingqutebrowser'),
('input.html', 'qute-input', 'keypress', 'awesomequtebrowser'),
('autofocus.html', 'qute-input-autofocus', 'keypress', 'cutebrowser'),
])
2017-02-04 23:30:12 +01:00
@pytest.mark.parametrize('zoom', [100, 125, 250])
def test_insert_mode(file_name, elem_id, source, input_text, zoom,
quteproc, request):
url_path = 'data/insert_mode_settings/html/{}'.format(file_name)
quteproc.open_path(url_path)
quteproc.send_cmd(':zoom {}'.format(zoom))
quteproc.send_cmd(':click-element --force-event id {}'.format(elem_id))
quteproc.wait_for(message='Entering mode KeyMode.insert (reason: *)')
quteproc.send_cmd(':debug-set-fake-clipboard')
if source == 'keypress':
quteproc.press_keys(input_text)
elif source == 'clipboard':
quteproc.send_cmd(':debug-set-fake-clipboard "{}"'.format(input_text))
quteproc.send_cmd(':insert-text {clipboard}')
2016-10-06 10:40:28 +02:00
else:
raise ValueError("Invalid source {!r}".format(source))
quteproc.wait_for_js('contents: {}'.format(input_text))
quteproc.send_cmd(':leave-mode')
@pytest.mark.parametrize('auto_load, background, insert_mode', [
(False, False, False), # auto_load disabled
(True, False, True), # enabled and foreground tab
(True, True, False), # background tab
])
def test_auto_load(quteproc, auto_load, background, insert_mode):
quteproc.set_setting('input.insert_mode.auto_load', str(auto_load))
url_path = 'data/insert_mode_settings/html/autofocus.html'
quteproc.open_path(url_path, new_bg_tab=background)
log_message = 'Entering mode KeyMode.insert (reason: *)'
if insert_mode:
quteproc.wait_for(message=log_message)
quteproc.send_cmd(':leave-mode')
else:
quteproc.ensure_not_logged(message=log_message)
def test_auto_leave_insert_mode(quteproc):
url_path = 'data/insert_mode_settings/html/autofocus.html'
quteproc.open_path(url_path)
2017-06-16 16:22:41 +02:00
quteproc.set_setting('input.insert_mode.auto_leave', 'true')
2017-02-04 23:30:12 +01:00
quteproc.send_cmd(':zoom 100')
quteproc.press_keys('abcd')
quteproc.send_cmd(':hint all')
quteproc.wait_for(message='hints: *')
2016-04-20 16:23:18 +02:00
# Select the disabled input box to leave insert mode
quteproc.send_cmd(':follow-hint s')
2016-05-30 14:54:06 +02:00
quteproc.wait_for(message='Clicked non-editable element!')