add test for more elements up to caption

This commit is contained in:
Fabio Pliger
2024-02-27 14:22:38 -06:00
parent d1038cb83d
commit f5f01f6929
14 changed files with 81 additions and 15 deletions

View File

@@ -2,6 +2,7 @@ import sys
import js as globalThis
from polyscript import js_modules
from pyscript.util import NotSupported
RUNNING_IN_WORKER = not hasattr(globalThis, "document")

View File

@@ -1,4 +1,5 @@
from pyodide.ffi import to_js
from pyscript import window

View File

@@ -1,8 +1,9 @@
from textwrap import dedent
from pyscript import document, when, window
from pyweb import JSProperty, js_property, pydom
from pyscript import document, when, window
# Global attributes that all elements have (this list is a subset of the official one)
# and tries to capture the most used ones
GLOBAL_ATTRIBUTES = [
@@ -193,7 +194,7 @@ _add_js_properties(
)
class article(ElementBase):
class article(TextElementBase):
tag = "article"
@@ -201,7 +202,7 @@ class article(ElementBase):
_add_js_properties(article)
class aside(ElementBase):
class aside(TextElementBase):
tag = "aside"
@@ -228,7 +229,7 @@ _add_js_properties(
)
class b(ElementBase):
class b(TextElementBase):
tag = "b"
@@ -236,7 +237,7 @@ class b(ElementBase):
_add_js_properties(b)
class blockquote(ElementBase):
class blockquote(TextElementBase):
tag = "blockquote"

View File

@@ -1,9 +1,10 @@
"""Markdown module to generate web/HTML components from Markdown code"""
from pyscript import document, window
from pyweb import pydom
from pyweb.ui.elements import TextElementBase, script
from pyscript import document, window
class markdown(TextElementBase):
"""Markdown component to render HTML from Markdown code"""

View File

@@ -1,10 +1,11 @@
import string
from textwrap import dedent
from pyscript import document, when, window
from pyweb import JSProperty, js_property, pydom
from pyweb.ui import elements as el
from pyscript import document, when, window
class ShoeBase(pydom.Element):
tag = "div"

View File

@@ -1,7 +1,8 @@
from pyodide.ffi import create_proxy
from pyscript import display, document, when, window
from pyweb import media, pydom
from pyscript import display, document, when, window
devicesSelect = pydom["#devices"][0]
video = pydom["video"][0]
devices = {}

View File

@@ -2,9 +2,10 @@ import random
import time
from datetime import datetime as dt
from pyscript import display, when
from pyweb import pydom
from pyscript import display, when
@when("click", "#just-a-button")
def on_click():

View File

@@ -1,5 +1,6 @@
print("tests starting")
import pytest
from pyscript import window
args = window.location.search.replace("?", "").split("&")

View File

@@ -1,9 +1,10 @@
from unittest import mock
import pytest
from pyscript import document, when
from pyweb import pydom
from pyscript import document, when
class TestDocument:
def test__element(self):

View File

@@ -2,13 +2,14 @@ from textwrap import dedent
import examples
import styles
from pyscript import when, window
from pyweb import pydom
from pyweb.ui import elements as el
from pyweb.ui import shoelace
from pyweb.ui.elements import a, button, div, grid, h1, h2, h3, input_
from pyweb.ui.markdown import markdown
from pyscript import when, window
MAIN_PAGE_MARKDOWN = dedent(
"""
## What is pyweb.ui?

View File

@@ -1,4 +1,3 @@
from pyscript import when, window
from pyweb import pydom
from pyweb.ui.elements import (
a,
@@ -41,6 +40,8 @@ from pyweb.ui.shoelace import (
Textarea,
)
from pyscript import when, window
LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
details_code = """
LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."

View File

@@ -3,12 +3,13 @@ from textwrap import dedent
import styles
import tictactoe
from pyscript import when, window
from pyweb import pydom
from pyweb.ui import elements as el
from pyweb.ui import shoelace
from pyweb.ui.markdown import markdown
from pyscript import when, window
MAIN_PAGE_MARKDOWN = dedent(
"""
This gallery is a collection of demos using the PyWeb.UI library. There are meant

View File

@@ -3,6 +3,7 @@ import js
js.document.body.append("document patch ")
import a
from pyscript import RUNNING_IN_WORKER, display, sync
display("Hello World", target="test", append=True)

View File

@@ -28,8 +28,14 @@ DEFAULT_ELEMENT_ATTRIBUTES = {
class TestElements(PyScriptTest):
def _create_el_and_basic_asserts(
self, el_type, el_text=None, properties=None, check_click=True
self,
el_type,
el_text=None,
properties=None,
check_click=True,
expected_errors=None,
):
expected_errors = expected_errors or []
if not properties:
properties = {}
@@ -70,7 +76,16 @@ class TestElements(PyScriptTest):
assert tag == el_type.upper()
if el_text:
assert el.inner_html() == el_text
assert self.console.error.lines == []
assert el.text_content() == el_text
# if we expect specific errors, check that they are in the console
if expected_errors:
for error in expected_errors:
assert error in self.console.error.lines
else:
# 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
@@ -132,6 +147,31 @@ class TestElements(PyScriptTest):
"area", properties=properties, check_click=False
)
def test_article(self):
self._create_el_and_basic_asserts("article", "some text")
def test_aside(self):
self._create_el_and_basic_asserts("aside", "some text")
def test_audio(self):
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)"
],
)
def test_b(self):
self._create_el_and_basic_asserts("aside", "some text")
def test_blockquote(self):
self._create_el_and_basic_asserts("blockquote", "some text")
def test_br(self):
self._create_el_and_basic_asserts("br", check_click=False)
def test_element_button(self):
button = self._create_el_and_basic_asserts("button", "click me")
assert button.inner_html() == "click me"
@@ -140,6 +180,19 @@ class TestElements(PyScriptTest):
button = self._create_el_and_basic_asserts("button", "click me", None)
assert button.inner_html() == "click me"
def test_canvas(self):
properties = {
"height": "100px",
"width": "100px",
}
# TODO: Check why click times out
self._create_el_and_basic_asserts(
"canvas", "alt text for canvas", properties=properties, check_click=False
)
def test_caption(self):
self._create_el_and_basic_asserts("caption", "some text")
def test_element_div(self):
div = self._create_el_and_basic_asserts("div", "click me")
assert div.inner_html() == "click me"