mirror of
https://github.com/1j01/textual-paint.git
synced 2024-12-22 06:11:37 +03:00
WIP: make test recorder more generic to apps
This commit is contained in:
parent
2fb9e64c4f
commit
82a5b201d4
@ -4,6 +4,7 @@ import os
|
|||||||
from typing import Any, Callable
|
from typing import Any, Callable
|
||||||
|
|
||||||
from rich.text import Text
|
from rich.text import Text
|
||||||
|
from textual.app import App
|
||||||
from textual.css.query import NoMatches, TooManyMatches
|
from textual.css.query import NoMatches, TooManyMatches
|
||||||
from textual.dom import DOMNode
|
from textual.dom import DOMNode
|
||||||
from textual.errors import NoWidget
|
from textual.errors import NoWidget
|
||||||
@ -69,19 +70,19 @@ def get_selector(target: DOMNode) -> tuple[str, int|None]:
|
|||||||
|
|
||||||
return selector, None
|
return selector, None
|
||||||
|
|
||||||
original_on_event = PaintApp.on_event
|
original_on_event = App.on_event # type: ignore
|
||||||
|
|
||||||
class PilotRecorder():
|
class PilotRecorder():
|
||||||
"""Record (and undo and replay) interactions with an app, and save as a test."""
|
"""Record (and undo and replay) interactions with an app, and save as a test."""
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.app: PaintApp | None = None
|
self.app: App[Any] | None = None
|
||||||
self.steps: list[tuple[Event, Offset, str, int|None]] = []
|
self.steps: list[tuple[Event, Offset, str, int|None]] = []
|
||||||
self.replaying: bool = False
|
self.replaying: bool = False
|
||||||
self.output_file = unique_file("tests/test_paint_something.py")
|
self.output_file = unique_file("tests/test_paint_something.py")
|
||||||
self.next_after_exit: Callable[[], None] | None = None
|
self.next_after_exit: Callable[[], None] | None = None
|
||||||
|
|
||||||
recorder = self
|
recorder = self
|
||||||
async def on_event(self: PaintApp, event: Event) -> None:
|
async def on_event(self: App[Any], event: Event) -> None:
|
||||||
# - Record before the event is handled, so a clicked widget that removes itself,
|
# - Record before the event is handled, so a clicked widget that removes itself,
|
||||||
# such as an OK button in a dialog, will still be in the DOM when we record it.
|
# such as an OK button in a dialog, will still be in the DOM when we record it.
|
||||||
# - Every event seems to be received twice, once with _forwarded set and once without.
|
# - Every event seems to be received twice, once with _forwarded set and once without.
|
||||||
|
Loading…
Reference in New Issue
Block a user