mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-22 03:35:31 -05:00
Introduce PyScriptTest, an helper class to write integration tests (#663)
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>
This commit is contained in:
34
pyscriptjs/tests/test_py_button.py
Normal file
34
pyscriptjs/tests/test_py_button.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import pytest
|
||||
|
||||
from .support import PyScriptTest
|
||||
|
||||
|
||||
class TestPyButton(PyScriptTest):
|
||||
@pytest.mark.xfail
|
||||
def test_on_click(self):
|
||||
"""
|
||||
currently this test fails for a bad reason which is unrelated to
|
||||
py-button. During the page loading, the following JS exception occur,
|
||||
in base.ts:BaseEvalElement.evaluate
|
||||
|
||||
[JS exception ] TypeError: Cannot use 'in' operator to search for 'runPythonAsync' in undefined
|
||||
at http://127.0.0.1:8080/build/pyscript.js:305:38
|
||||
at Object.subscribe (http://127.0.0.1:8080/build/pyscript.js:46:13)
|
||||
at PyButton.runAfterRuntimeInitialized (http://127.0.0.1:8080/build/pyscript.js:304:27)
|
||||
at PyButton.connectedCallback (http://127.0.0.1:8080/build/pyscript.js:26856:18)
|
||||
at http://127.0.0.1:8080/build/pyscript.js:27075:20
|
||||
at http://127.0.0.1:8080/build/pyscript.js:27093:3
|
||||
""" # noqa: E501
|
||||
self.pyscript_run(
|
||||
"""
|
||||
<py-button label="my button">
|
||||
import js
|
||||
def on_click(evt):
|
||||
js.console.info('clicked!')
|
||||
</py-button>
|
||||
"""
|
||||
)
|
||||
assert self.console.info.lines == []
|
||||
self.page.locator("text=my button").click()
|
||||
self.page.locator("text=my button").click()
|
||||
assert self.console.info.lines == ["clicked!", "clicked!"]
|
||||
Reference in New Issue
Block a user