Skip to content

Commit

Permalink
Merge pull request #9277 from w3c/sync_d848423ebc60882f98b6712d03ffe2…
Browse files Browse the repository at this point in the history
…3af1ff7741

Add basic form control tests for Element Send Keys.
  • Loading branch information
jgraham committed Jan 30, 2018
2 parents 0d203b5 + d848423 commit 2c2514b
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions webdriver/tests/element_send_keys/form_controls.py
@@ -1,3 +1,5 @@
import pytest

from tests.support.asserts import assert_error, assert_same_element, assert_success
from tests.support.inline import inline

Expand All @@ -11,6 +13,37 @@ def element_send_keys(session, element, text):
{"text": text})


def add_event_listeners(element):
element.session.execute_script("""
let [target] = arguments;
window.events = [];
for (let expected of ["focus", "blur", "change", "keypress", "keydown", "keyup", "input"]) {
target.addEventListener(expected, ({type}) => window.events.push(type));
}
""", args=(element,))


def get_events(session):
return session.execute_script("return window.events")


def test_input(session):
session.url = inline("<input>")
element = session.find.css("input", all=False)
assert element.property("value") == ""

element_send_keys(session, element, "foo")
assert element.property("value") == "foo"


def test_textarea(session):
session.url = inline("<textarea>")
element = session.find.css("textarea", all=False)
assert element.property("value") == ""

element_send_keys(session, element, "foo")
assert element.property("value") == "foo"


def test_input_append(session):
session.url = inline("<input value=a>")
Expand All @@ -34,3 +67,28 @@ def test_textarea_append(session):

element_send_keys(session, element, "c")
assert element.property("value") == "abc"


@pytest.mark.parametrize("tag", ["input", "textarea"])
def test_events(session, tag):
session.url = inline("<%s>" % tag)
element = session.find.css(tag, all=False)
add_event_listeners(element)

element_send_keys(session, element, "foo")
assert element.property("value") == "foo"
assert get_events(session) == ["focus",
"keydown",
"keypress",
"input",
"keyup",
"keydown",
"keypress",
"input",
"keyup",
"keydown",
"keypress",
"input",
"keyup",
"change",
"blur"]

0 comments on commit 2c2514b

Please sign in to comment.