mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-22 11:45:28 -05:00
minor fixes and complete tests for all elements
This commit is contained in:
@@ -32,8 +32,8 @@ class TestElements(PyScriptTest):
|
||||
el_type,
|
||||
el_text=None,
|
||||
properties=None,
|
||||
check_click=True,
|
||||
expected_errors=None,
|
||||
additional_selector_rules=None,
|
||||
):
|
||||
expected_errors = expected_errors or []
|
||||
if not properties:
|
||||
@@ -64,16 +64,20 @@ class TestElements(PyScriptTest):
|
||||
from pyweb import pydom
|
||||
from pyweb.ui.elements import {el_type}
|
||||
el = {el_type}({attributes})
|
||||
when("click", el)(lambda e: pydom.body.append("{el_type} clicked"))
|
||||
pydom.body.append(el)
|
||||
</script>
|
||||
"""
|
||||
self.pyscript_run(code_)
|
||||
|
||||
expected_log = f"{el_type} clicked"
|
||||
el = self.page.locator(el_type)
|
||||
# Let's keep the tag in 2 variables, one for the selector and another to
|
||||
# check the return tag from the selector
|
||||
locator_type = el_tag = el_type[:-1] if el_type.endswith("_") else el_type
|
||||
if additional_selector_rules:
|
||||
locator_type += f"{additional_selector_rules}"
|
||||
|
||||
el = self.page.locator(locator_type)
|
||||
tag = el.evaluate("node => node.tagName")
|
||||
assert tag == el_type.upper()
|
||||
assert tag == el_tag.upper()
|
||||
if el_text:
|
||||
assert el.inner_html() == el_text
|
||||
assert el.text_content() == el_text
|
||||
@@ -86,13 +90,6 @@ class TestElements(PyScriptTest):
|
||||
# if we don't expect errors, check that there are no errors
|
||||
assert self.console.error.lines == []
|
||||
|
||||
assert expected_log not in self.console.log.lines == []
|
||||
|
||||
# Click the link
|
||||
if check_click:
|
||||
el.click()
|
||||
assert expected_log not in self.console.log.lines == []
|
||||
|
||||
if properties:
|
||||
for k, v in properties.items():
|
||||
actual_val = el.evaluate(f"node => node.{k}")
|
||||
@@ -143,9 +140,7 @@ class TestElements(PyScriptTest):
|
||||
"alt": "HTTP",
|
||||
}
|
||||
# TODO: Check why click times out
|
||||
area = self._create_el_and_basic_asserts(
|
||||
"area", properties=properties, check_click=False
|
||||
)
|
||||
self._create_el_and_basic_asserts("area", properties=properties)
|
||||
|
||||
def test_article(self):
|
||||
self._create_el_and_basic_asserts("article", "some text")
|
||||
@@ -157,7 +152,6 @@ class TestElements(PyScriptTest):
|
||||
self._create_el_and_basic_asserts(
|
||||
"audio",
|
||||
properties={"src": "http://localhost:8080/somefile.ogg", "controls": True},
|
||||
check_click=False,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
@@ -170,7 +164,7 @@ class TestElements(PyScriptTest):
|
||||
self._create_el_and_basic_asserts("blockquote", "some text")
|
||||
|
||||
def test_br(self):
|
||||
self._create_el_and_basic_asserts("br", check_click=False)
|
||||
self._create_el_and_basic_asserts("br")
|
||||
|
||||
def test_element_button(self):
|
||||
button = self._create_el_and_basic_asserts("button", "click me")
|
||||
@@ -182,17 +176,416 @@ class TestElements(PyScriptTest):
|
||||
|
||||
def test_canvas(self):
|
||||
properties = {
|
||||
"height": "100px",
|
||||
"width": "100px",
|
||||
"height": 100,
|
||||
"width": 120,
|
||||
}
|
||||
# TODO: Check why click times out
|
||||
self._create_el_and_basic_asserts(
|
||||
"canvas", "alt text for canvas", properties=properties, check_click=False
|
||||
"canvas", "alt text for canvas", properties=properties
|
||||
)
|
||||
|
||||
def test_caption(self):
|
||||
self._create_el_and_basic_asserts("caption", "some text")
|
||||
|
||||
def test_element_div(self):
|
||||
def test_cite(self):
|
||||
self._create_el_and_basic_asserts("cite", "some text")
|
||||
|
||||
def test_code(self):
|
||||
self._create_el_and_basic_asserts("code", "import pyweb")
|
||||
|
||||
def test_data(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"data", "some text", properties={"value": "123"}
|
||||
)
|
||||
|
||||
def test_datalist(self):
|
||||
self._create_el_and_basic_asserts("datalist", "some items")
|
||||
|
||||
def test_dd(self):
|
||||
self._create_el_and_basic_asserts("dd", "some text")
|
||||
|
||||
def test_del_(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"del_", "some text", properties={"cite": "http://example.com/"}
|
||||
)
|
||||
|
||||
def test_details(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"details", "some text", properties={"open": True}
|
||||
)
|
||||
|
||||
def test_dialog(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"dialog", "some text", properties={"open": True}
|
||||
)
|
||||
|
||||
def test_div(self):
|
||||
div = self._create_el_and_basic_asserts("div", "click me")
|
||||
assert div.inner_html() == "click me"
|
||||
|
||||
def test_dl(self):
|
||||
self._create_el_and_basic_asserts("dl", "some text")
|
||||
|
||||
def test_dt(self):
|
||||
self._create_el_and_basic_asserts("dt", "some text")
|
||||
|
||||
def test_em(self):
|
||||
self._create_el_and_basic_asserts("em", "some text")
|
||||
|
||||
def test_embed(self):
|
||||
# NOTE: Types actually matter and embed expects a string for height and width
|
||||
# while other elements expect an int
|
||||
|
||||
# TODO: It's important that we add typing soon to help with the user experience
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.ogg",
|
||||
"type": "video/ogg",
|
||||
"width": "250",
|
||||
"height": "200",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"embed",
|
||||
properties=properties,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
)
|
||||
|
||||
def test_fieldset(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"fieldset", "some text", properties={"name": "some name"}
|
||||
)
|
||||
|
||||
def test_figcaption(self):
|
||||
self._create_el_and_basic_asserts("figcaption", "some text")
|
||||
|
||||
def test_figure(self):
|
||||
self._create_el_and_basic_asserts("figure", "some text")
|
||||
|
||||
def test_footer(self):
|
||||
self._create_el_and_basic_asserts("footer", "some text")
|
||||
|
||||
def test_form(self):
|
||||
properties = {
|
||||
"action": "https://example.com/submit",
|
||||
"method": "post",
|
||||
"name": "some name",
|
||||
"autocomplete": "on",
|
||||
"rel": "external",
|
||||
}
|
||||
self._create_el_and_basic_asserts("form", "some text", properties=properties)
|
||||
|
||||
def test_h1(self):
|
||||
self._create_el_and_basic_asserts("h1", "some text")
|
||||
|
||||
def test_h2(self):
|
||||
self._create_el_and_basic_asserts("h2", "some text")
|
||||
|
||||
def test_h3(self):
|
||||
self._create_el_and_basic_asserts("h3", "some text")
|
||||
|
||||
def test_h4(self):
|
||||
self._create_el_and_basic_asserts("h4", "some text")
|
||||
|
||||
def test_h5(self):
|
||||
self._create_el_and_basic_asserts("h5", "some text")
|
||||
|
||||
def test_h6(self):
|
||||
self._create_el_and_basic_asserts("h6", "some text")
|
||||
|
||||
def test_header(self):
|
||||
self._create_el_and_basic_asserts("header", "some text")
|
||||
|
||||
def test_hgroup(self):
|
||||
self._create_el_and_basic_asserts("hgroup", "some text")
|
||||
|
||||
def test_hr(self):
|
||||
self._create_el_and_basic_asserts("hr")
|
||||
|
||||
def test_i(self):
|
||||
self._create_el_and_basic_asserts("i", "some text")
|
||||
|
||||
def test_iframe(self):
|
||||
# TODO: same comment about defining the right types
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.html",
|
||||
"width": "250",
|
||||
"height": "200",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"iframe",
|
||||
properties=properties,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
)
|
||||
|
||||
def test_img(self):
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.png",
|
||||
"alt": "some image",
|
||||
"width": 250,
|
||||
"height": 200,
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"img",
|
||||
properties=properties,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
)
|
||||
|
||||
def test_input(self):
|
||||
# TODO: we need multiple input tests
|
||||
properties = {
|
||||
"type": "text",
|
||||
"value": "some value",
|
||||
"name": "some name",
|
||||
"autofocus": True,
|
||||
"disabled": False,
|
||||
"maxlength": "10",
|
||||
"minlength": "5",
|
||||
"pattern": "[A-Za-z]{3}",
|
||||
"placeholder": "some placeholder",
|
||||
"readonly": False,
|
||||
"required": True,
|
||||
"size": 20,
|
||||
}
|
||||
self._create_el_and_basic_asserts("input_", properties=properties)
|
||||
|
||||
def test_ins(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"ins", "some text", properties={"cite": "http://example.com/"}
|
||||
)
|
||||
|
||||
def test_kbd(self):
|
||||
self._create_el_and_basic_asserts("kbd", "some text")
|
||||
|
||||
def test_label(self):
|
||||
self._create_el_and_basic_asserts("label", "some text")
|
||||
|
||||
def test_legend(self):
|
||||
self._create_el_and_basic_asserts("legend", "some text")
|
||||
|
||||
def test_li(self):
|
||||
self._create_el_and_basic_asserts("li", "some text")
|
||||
|
||||
def test_link(self):
|
||||
properties = {
|
||||
"href": "http://localhost:8080/somefile.css",
|
||||
"rel": "stylesheet",
|
||||
"type": "text/css",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"link",
|
||||
properties=properties,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
additional_selector_rules="[href='http://localhost:8080/somefile.css']",
|
||||
)
|
||||
|
||||
def test_main(self):
|
||||
self._create_el_and_basic_asserts("main", "some text")
|
||||
|
||||
def test_map(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"map_", "some text", properties={"name": "somemap"}
|
||||
)
|
||||
|
||||
def test_mark(self):
|
||||
self._create_el_and_basic_asserts("mark", "some text")
|
||||
|
||||
def test_menu(self):
|
||||
self._create_el_and_basic_asserts("menu", "some text")
|
||||
|
||||
def test_meter(self):
|
||||
properties = {
|
||||
"value": 50,
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"low": 30,
|
||||
"high": 80,
|
||||
"optimum": 50,
|
||||
}
|
||||
self._create_el_and_basic_asserts("meter", "some text", properties=properties)
|
||||
|
||||
def test_nav(self):
|
||||
self._create_el_and_basic_asserts("nav", "some text")
|
||||
|
||||
def test_object(self):
|
||||
properties = {
|
||||
"data": "http://localhost:8080/somefile.swf",
|
||||
"type": "application/x-shockwave-flash",
|
||||
"width": "250",
|
||||
"height": "200",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"object_",
|
||||
properties=properties,
|
||||
)
|
||||
|
||||
def test_ol(self):
|
||||
self._create_el_and_basic_asserts("ol", "some text")
|
||||
|
||||
def test_optgroup(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"optgroup", "some text", properties={"label": "some label"}
|
||||
)
|
||||
|
||||
def test_option(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"option", "some text", properties={"value": "some value"}
|
||||
)
|
||||
|
||||
def test_output(self):
|
||||
self._create_el_and_basic_asserts("output", "some text")
|
||||
|
||||
def test_p(self):
|
||||
self._create_el_and_basic_asserts("p", "some text")
|
||||
|
||||
def test_picture(self):
|
||||
self._create_el_and_basic_asserts("picture", "some text")
|
||||
|
||||
def test_pre(self):
|
||||
self._create_el_and_basic_asserts("pre", "some text")
|
||||
|
||||
def test_progress(self):
|
||||
properties = {
|
||||
"value": 50,
|
||||
"max": 100,
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"progress", "some text", properties=properties
|
||||
)
|
||||
|
||||
def test_q(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"q", "some text", properties={"cite": "http://example.com/"}
|
||||
)
|
||||
|
||||
def test_s(self):
|
||||
self._create_el_and_basic_asserts("s", "some text")
|
||||
|
||||
# def test_script(self):
|
||||
# self._create_el_and_basic_asserts("script", "some text")
|
||||
|
||||
def test_section(self):
|
||||
self._create_el_and_basic_asserts("section", "some text")
|
||||
|
||||
def test_select(self):
|
||||
self._create_el_and_basic_asserts("select", "some text")
|
||||
|
||||
def test_small(self):
|
||||
self._create_el_and_basic_asserts("small", "some text")
|
||||
|
||||
def test_source(self):
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.ogg",
|
||||
"type": "audio/ogg",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"source",
|
||||
properties=properties,
|
||||
# expected_errors=[
|
||||
# "Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
# ],
|
||||
)
|
||||
|
||||
def test_span(self):
|
||||
self._create_el_and_basic_asserts("span", "some text")
|
||||
|
||||
def test_strong(self):
|
||||
self._create_el_and_basic_asserts("strong", "some text")
|
||||
|
||||
def test_style(self):
|
||||
self._create_el_and_basic_asserts(
|
||||
"style",
|
||||
"body {background-color: red;}",
|
||||
)
|
||||
|
||||
def test_sub(self):
|
||||
self._create_el_and_basic_asserts("sub", "some text")
|
||||
|
||||
def test_summary(self):
|
||||
self._create_el_and_basic_asserts("summary", "some text")
|
||||
|
||||
def test_sup(self):
|
||||
self._create_el_and_basic_asserts("sup", "some text")
|
||||
|
||||
def test_table(self):
|
||||
self._create_el_and_basic_asserts("table", "some text")
|
||||
|
||||
def test_tbody(self):
|
||||
self._create_el_and_basic_asserts("tbody", "some text")
|
||||
|
||||
def test_td(self):
|
||||
self._create_el_and_basic_asserts("td", "some text")
|
||||
|
||||
def test_template(self):
|
||||
# We are not checking the content of template since it's sort of
|
||||
# special element
|
||||
self._create_el_and_basic_asserts("template")
|
||||
|
||||
def test_textarea(self):
|
||||
self._create_el_and_basic_asserts("textarea", "some text")
|
||||
|
||||
def test_tfoot(self):
|
||||
self._create_el_and_basic_asserts("tfoot", "some text")
|
||||
|
||||
def test_th(self):
|
||||
self._create_el_and_basic_asserts("th", "some text")
|
||||
|
||||
def test_thead(self):
|
||||
self._create_el_and_basic_asserts("thead", "some text")
|
||||
|
||||
def test_time(self):
|
||||
properties = {
|
||||
"datetime": "2021-07-01",
|
||||
}
|
||||
self._create_el_and_basic_asserts("time", "some text", properties=properties)
|
||||
|
||||
def test_title(self):
|
||||
self._create_el_and_basic_asserts("title", "some text")
|
||||
|
||||
def test_tr(self):
|
||||
self._create_el_and_basic_asserts("tr", "some text")
|
||||
|
||||
def test_track(self):
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.vtt",
|
||||
"kind": "subtitles",
|
||||
"srclang": "en",
|
||||
"label": "English",
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"track",
|
||||
properties=properties,
|
||||
# expected_errors=[
|
||||
# "Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
# ],
|
||||
)
|
||||
|
||||
def test_u(self):
|
||||
self._create_el_and_basic_asserts("u", "some text")
|
||||
|
||||
def test_ul(self):
|
||||
self._create_el_and_basic_asserts("ul", "some text")
|
||||
|
||||
def test_var(self):
|
||||
self._create_el_and_basic_asserts("var", "some text")
|
||||
|
||||
def test_video(self):
|
||||
properties = {
|
||||
"src": "http://localhost:8080/somefile.ogg",
|
||||
"controls": True,
|
||||
"width": 250,
|
||||
"height": 200,
|
||||
}
|
||||
self._create_el_and_basic_asserts(
|
||||
"video",
|
||||
properties=properties,
|
||||
expected_errors=[
|
||||
"Failed to load resource: the server responded with a status of 404 (File not found)"
|
||||
],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user