# {py:mod}`simvx.core.ui.testing` ```{py:module} simvx.core.ui.testing ``` ```{autodoc2-docstring} simvx.core.ui.testing :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`DrawCall ` - ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall :summary: ``` * - {py:obj}`DrawLog ` - ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog :summary: ``` * - {py:obj}`UITestHarness ` - ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.ui.testing.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.core.ui.testing.__all__ :value: > ['UITestHarness', 'DrawLog', 'DrawCall'] ```{autodoc2-docstring} simvx.core.ui.testing.__all__ ``` ```` `````{py:class} DrawCall :canonical: simvx.core.ui.testing.DrawCall ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall ``` ````{py:attribute} type :canonical: simvx.core.ui.testing.DrawCall.type :type: str :value: > None ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.type ``` ```` ````{py:attribute} x :canonical: simvx.core.ui.testing.DrawCall.x :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.x ``` ```` ````{py:attribute} y :canonical: simvx.core.ui.testing.DrawCall.y :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.y ``` ```` ````{py:attribute} w :canonical: simvx.core.ui.testing.DrawCall.w :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.w ``` ```` ````{py:attribute} h :canonical: simvx.core.ui.testing.DrawCall.h :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.h ``` ```` ````{py:attribute} color :canonical: simvx.core.ui.testing.DrawCall.color :type: tuple[float, ...] :value: > () ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.color ``` ```` ````{py:attribute} text :canonical: simvx.core.ui.testing.DrawCall.text :type: str :value: ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.text ``` ```` ````{py:attribute} scale :canonical: simvx.core.ui.testing.DrawCall.scale :type: float :value: > 1.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.scale ``` ```` ````{py:attribute} x2 :canonical: simvx.core.ui.testing.DrawCall.x2 :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.x2 ``` ```` ````{py:attribute} y2 :canonical: simvx.core.ui.testing.DrawCall.y2 :type: float :value: > 0.0 ```{autodoc2-docstring} simvx.core.ui.testing.DrawCall.y2 ``` ```` ````` `````{py:class} DrawLog() :canonical: simvx.core.ui.testing.DrawLog ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.__init__ ``` ````{py:method} clear() :canonical: simvx.core.ui.testing.DrawLog.clear ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.clear ``` ```` ````{py:method} draw_filled_rect(x: float, y: float, w: float, h: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_filled_rect ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_filled_rect ``` ```` ````{py:method} draw_rect_colored(x: float, y: float, w: float, h: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_rect_colored ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_rect_colored ``` ```` ````{py:method} draw_line_colored(x1: float, y1: float, x2: float, y2: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_line_colored ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_line_colored ``` ```` ````{py:method} draw_text_colored(text: str, x: float, y: float, scale: float = 1.0, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_text_colored ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_text_colored ``` ```` ````{py:method} text_width(text: str, scale: float = 1.0) -> float :canonical: simvx.core.ui.testing.DrawLog.text_width ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.text_width ``` ```` ````{py:method} push_clip(x: float, y: float, w: float, h: float) :canonical: simvx.core.ui.testing.DrawLog.push_clip ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.push_clip ``` ```` ````{py:method} pop_clip() :canonical: simvx.core.ui.testing.DrawLog.pop_clip ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.pop_clip ``` ```` ````{py:method} new_layer() :canonical: simvx.core.ui.testing.DrawLog.new_layer ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.new_layer ``` ```` ````{py:method} set_color(r=255, g=255, b=255, a=255) :canonical: simvx.core.ui.testing.DrawLog.set_color ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.set_color ``` ```` ````{py:method} fill_rect(x: float, y: float, w: float, h: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.fill_rect ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.fill_rect ``` ```` ````{py:method} draw_rect(x: float, y: float, w: float, h: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_rect ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_rect ``` ```` ````{py:method} draw_line(x1: float, y1: float, x2: float, y2: float, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_line ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_line ``` ```` ````{py:method} draw_text(text: str, pos: tuple, scale: float = 1.0, color: tuple = (1, 1, 1, 1)) :canonical: simvx.core.ui.testing.DrawLog.draw_text ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_text ``` ```` ````{py:method} fill_circle(cx: float, cy: float, radius: float, segments: int = 24) :canonical: simvx.core.ui.testing.DrawLog.fill_circle ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.fill_circle ``` ```` ````{py:method} draw_thick_line(x1: float, y1: float, x2: float, y2: float, width: float = 2.0) :canonical: simvx.core.ui.testing.DrawLog.draw_thick_line ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_thick_line ``` ```` ````{py:method} draw_circle(center, radius_or_y=None, radius=None, segments=24) :canonical: simvx.core.ui.testing.DrawLog.draw_circle ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_circle ``` ```` ````{py:method} draw_lines(points, closed=True, color=None) :canonical: simvx.core.ui.testing.DrawLog.draw_lines ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.draw_lines ``` ```` ````{py:method} fill_triangle(x1, y1, x2, y2, x3, y3) :canonical: simvx.core.ui.testing.DrawLog.fill_triangle ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.fill_triangle ``` ```` ````{py:method} texts() -> list[str] :canonical: simvx.core.ui.testing.DrawLog.texts ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.texts ``` ```` ````{py:method} texts_containing(substring: str) -> list[str] :canonical: simvx.core.ui.testing.DrawLog.texts_containing ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.texts_containing ``` ```` ````{py:method} rects_at(x: float, y: float) -> list[simvx.core.ui.testing.DrawCall] :canonical: simvx.core.ui.testing.DrawLog.rects_at ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.rects_at ``` ```` ````{py:method} calls_of_type(call_type: str) -> list[simvx.core.ui.testing.DrawCall] :canonical: simvx.core.ui.testing.DrawLog.calls_of_type ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.calls_of_type ``` ```` ````{py:method} has_text(text: str) -> bool :canonical: simvx.core.ui.testing.DrawLog.has_text ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.has_text ``` ```` ````{py:method} has_text_containing(substring: str) -> bool :canonical: simvx.core.ui.testing.DrawLog.has_text_containing ```{autodoc2-docstring} simvx.core.ui.testing.DrawLog.has_text_containing ``` ```` ````` `````{py:class} UITestHarness(root: simvx.core.ui.core.Control, screen_size: tuple[float, float] = (1280, 720)) :canonical: simvx.core.ui.testing.UITestHarness ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.__init__ ``` ````{py:property} root :canonical: simvx.core.ui.testing.UITestHarness.root :type: simvx.core.ui.core.Control ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.root ``` ```` ````{py:method} teardown() :canonical: simvx.core.ui.testing.UITestHarness.teardown ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.teardown ``` ```` ````{py:method} tick(dt: float = 1 / 60, count: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.tick ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.tick ``` ```` ````{py:method} process_only(dt: float = 1 / 60, count: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.process_only ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.process_only ``` ```` ````{py:method} click(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float], button: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.click ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.click ``` ```` ````{py:method} double_click(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float], button: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.double_click ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.double_click ``` ```` ````{py:method} mouse_down(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float], button: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.mouse_down ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.mouse_down ``` ```` ````{py:method} mouse_up(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float], button: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.mouse_up ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.mouse_up ``` ```` ````{py:method} mouse_move(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float]) :canonical: simvx.core.ui.testing.UITestHarness.mouse_move ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.mouse_move ``` ```` ````{py:method} drag(start: simvx.core.ui.core.Control | simvx.core.math.types.Vec2, end: simvx.core.ui.core.Control | simvx.core.math.types.Vec2, steps: int = 5, button: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.drag ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.drag ``` ```` ````{py:method} type_text(text: str) :canonical: simvx.core.ui.testing.UITestHarness.type_text ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.type_text ``` ```` ````{py:method} press_key(key: str, release: bool = True) :canonical: simvx.core.ui.testing.UITestHarness.press_key ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.press_key ``` ```` ````{py:method} scroll(target: simvx.core.ui.core.Control | simvx.core.math.types.Vec2 | tuple[float, float], direction: str = 'down', amount: int = 1) :canonical: simvx.core.ui.testing.UITestHarness.scroll ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.scroll ``` ```` ````{py:method} set_focus(control: simvx.core.ui.core.Control) :canonical: simvx.core.ui.testing.UITestHarness.set_focus ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.set_focus ``` ```` ````{py:method} find(path: str) -> simvx.core.ui.core.Control | None :canonical: simvx.core.ui.testing.UITestHarness.find ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.find ``` ```` ````{py:method} find_all(widget_type: type) -> list[simvx.core.ui.core.Control] :canonical: simvx.core.ui.testing.UITestHarness.find_all ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.find_all ``` ```` ````{py:method} find_by_text(text: str) -> simvx.core.ui.core.Control | None :canonical: simvx.core.ui.testing.UITestHarness.find_by_text ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.find_by_text ``` ```` ````{py:method} find_by_name(name: str) -> simvx.core.ui.core.Control | None :canonical: simvx.core.ui.testing.UITestHarness.find_by_name ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.find_by_name ``` ```` ````{py:method} assert_visible(widget: simvx.core.ui.core.Control, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_visible ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_visible ``` ```` ````{py:method} assert_hidden(widget: simvx.core.ui.core.Control, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_hidden ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_hidden ``` ```` ````{py:method} assert_focused(widget: simvx.core.ui.core.Control, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_focused ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_focused ``` ```` ````{py:method} assert_text(widget: simvx.core.ui.core.Control, expected: str, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_text ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_text ``` ```` ````{py:method} assert_text_contains(widget: simvx.core.ui.core.Control, substring: str, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_text_contains ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_text_contains ``` ```` ````{py:method} assert_drawn_text(text: str, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_drawn_text ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_drawn_text ``` ```` ````{py:method} assert_drawn_text_containing(substring: str, msg: str = '') :canonical: simvx.core.ui.testing.UITestHarness.assert_drawn_text_containing ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_drawn_text_containing ``` ```` ````{py:method} assert_signal_emitted(signal, msg: str = '') -> list :canonical: simvx.core.ui.testing.UITestHarness.assert_signal_emitted ```{autodoc2-docstring} simvx.core.ui.testing.UITestHarness.assert_signal_emitted ``` ```` `````