blob: 41b00ef37fa24154231a485bbc45da036f40e717 [file] [log] [blame]
import pytest
from tests.support.asserts import (
assert_element_has_focus,
assert_events_equal,
assert_success,
)
from tests.support.inline import inline
from . import map_files_to_multiline_text
@pytest.fixture
def tracked_events():
return [
"blur",
"change",
"focus",
"input",
"keydown",
"keypress",
"keyup",
]
def element_send_keys(session, element, text):
return session.transport.send(
"POST", "/session/{session_id}/element/{element_id}/value".format(
session_id=session.session_id,
element_id=element.id),
{"text": text})
def test_file_upload(session, create_files, add_event_listeners, tracked_events):
expected_events = [
"input",
"change",
]
files = create_files(["foo", "bar"])
session.url = inline("<input type=file multiple>")
element = session.find.css("input", all=False)
add_event_listeners(element, tracked_events)
response = element_send_keys(session, element, map_files_to_multiline_text(files))
assert_success(response)
assert_events_equal(session, expected_events)
@pytest.mark.parametrize("tag", ["input", "textarea"])
def test_form_control_send_text(session, add_event_listeners, tracked_events, tag):
expected_events = [
"focus",
"keydown",
"keypress",
"input",
"keyup",
"keydown",
"keypress",
"input",
"keyup",
"keydown",
"keypress",
"input",
"keyup",
]
session.url = inline("<%s>" % tag)
element = session.find.css(tag, all=False)
add_event_listeners(element, tracked_events)
response = element_send_keys(session, element, "foo")
assert_success(response)
assert_events_equal(session, expected_events)
@pytest.mark.parametrize("tag", ["input", "textarea"])
def test_not_blurred(session, tag):
session.url = inline("<%s>" % tag)
element = session.find.css(tag, all=False)
response = element_send_keys(session, element, "")
assert_success(response)
assert_element_has_focus(element)