mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-22 03:35:31 -05:00
This PR is about integration tests: they use playwright to load HTML pages in the browser and check that PyScript works as intended, as opposed to unit tests like the ones being introduced by #665 and #661. The main goal of this PR is to introduce some machinery to make such tests easier to write, read and maintain, with some attention to capture enough information to produce useful error messages in case they fail in the CI. In order to use the machinery, you need to subclass tests.support.PyScriptTest, which provides several useful API calls in the form self.xxx(). See the full description here: https://github.com/pyscript/pyscript/pull/663 Co-authored-by: Mariana Meireles <marian.meireles@gmail.com> Co-authored-by: mariana <marianameireles@protonmail.com>
39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
import re
|
|
|
|
from .support import PyScriptTest
|
|
|
|
|
|
class TestBasic(PyScriptTest):
|
|
def test_pyscript_hello(self):
|
|
self.pyscript_run(
|
|
"""
|
|
<py-script>
|
|
print('hello pyscript')
|
|
</py-script>
|
|
"""
|
|
)
|
|
# this is a very ugly way of checking the content of the DOM. If we
|
|
# find ourselves to write a lot of code in this style, we will
|
|
# probably want to write a nicer API for it.
|
|
inner_html = self.page.locator("py-script").inner_html()
|
|
pattern = r'<div id="py-.*">hello pyscript</div>'
|
|
assert re.search(pattern, inner_html)
|
|
|
|
def test_execution_in_order(self):
|
|
"""
|
|
Check that they py-script tags are executed in the same order they are
|
|
defined
|
|
"""
|
|
# NOTE: this test relies on the fact that pyscript does not write
|
|
# anything to console.info. If we start writing to info in the future,
|
|
# we will probably need to tweak this test.
|
|
self.pyscript_run(
|
|
"""
|
|
<py-script>import js; js.console.info('one')</py-script>
|
|
<py-script>js.console.info('two')</py-script>
|
|
<py-script>js.console.info('three')</py-script>
|
|
<py-script>js.console.info('four')</py-script>
|
|
"""
|
|
)
|
|
assert self.console.info.lines == ["one", "two", "three", "four"]
|