# {py:mod}`simvx.graphics.playtest` ```{py:module} simvx.graphics.playtest ``` ```{autodoc2-docstring} simvx.graphics.playtest :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`StepSnapshot ` - ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot :summary: ``` * - {py:obj}`PlaytestReport ` - ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport :summary: ``` * - {py:obj}`GamePlaytestHarness ` - ```{autodoc2-docstring} simvx.graphics.playtest.GamePlaytestHarness :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.graphics.playtest.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.graphics.playtest.__all__ :value: > ['GamePlaytestHarness', 'PlaytestReport', 'StepSnapshot'] ```{autodoc2-docstring} simvx.graphics.playtest.__all__ ``` ```` `````{py:class} StepSnapshot :canonical: simvx.graphics.playtest.StepSnapshot ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot ``` ````{py:attribute} step_index :canonical: simvx.graphics.playtest.StepSnapshot.step_index :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.step_index ``` ```` ````{py:attribute} step_type :canonical: simvx.graphics.playtest.StepSnapshot.step_type :type: str :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.step_type ``` ```` ````{py:attribute} step_desc :canonical: simvx.graphics.playtest.StepSnapshot.step_desc :type: str :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.step_desc ``` ```` ````{py:attribute} frame_index :canonical: simvx.graphics.playtest.StepSnapshot.frame_index :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.frame_index ``` ```` ````{py:attribute} time_seconds :canonical: simvx.graphics.playtest.StepSnapshot.time_seconds :type: float :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.time_seconds ``` ```` ````{py:attribute} screenshot_path :canonical: simvx.graphics.playtest.StepSnapshot.screenshot_path :type: pathlib.Path | None :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.screenshot_path ``` ```` ````{py:attribute} scene_tree :canonical: simvx.graphics.playtest.StepSnapshot.scene_tree :type: str :value: ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.scene_tree ``` ```` ````{py:attribute} ui_tree :canonical: simvx.graphics.playtest.StepSnapshot.ui_tree :type: str :value: ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.ui_tree ``` ```` ````{py:attribute} assertion_result :canonical: simvx.graphics.playtest.StepSnapshot.assertion_result :type: str | None :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.StepSnapshot.assertion_result ``` ```` ````` `````{py:class} PlaytestReport :canonical: simvx.graphics.playtest.PlaytestReport ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport ``` ````{py:attribute} game_path :canonical: simvx.graphics.playtest.PlaytestReport.game_path :type: str :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.game_path ``` ```` ````{py:attribute} timestamp :canonical: simvx.graphics.playtest.PlaytestReport.timestamp :type: str :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.timestamp ``` ```` ````{py:attribute} total_frames :canonical: simvx.graphics.playtest.PlaytestReport.total_frames :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.total_frames ``` ```` ````{py:attribute} total_steps :canonical: simvx.graphics.playtest.PlaytestReport.total_steps :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.total_steps ``` ```` ````{py:attribute} completed :canonical: simvx.graphics.playtest.PlaytestReport.completed :type: bool :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.completed ``` ```` ````{py:attribute} passed :canonical: simvx.graphics.playtest.PlaytestReport.passed :type: bool :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.passed ``` ```` ````{py:attribute} failures :canonical: simvx.graphics.playtest.PlaytestReport.failures :type: list[str] :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.failures ``` ```` ````{py:attribute} steps :canonical: simvx.graphics.playtest.PlaytestReport.steps :type: list[simvx.graphics.playtest.StepSnapshot] :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.steps ``` ```` ````{py:attribute} duration_seconds :canonical: simvx.graphics.playtest.PlaytestReport.duration_seconds :type: float :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.duration_seconds ``` ```` ````{py:attribute} node_count :canonical: simvx.graphics.playtest.PlaytestReport.node_count :type: int :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.node_count ``` ```` ````{py:attribute} output_dir :canonical: simvx.graphics.playtest.PlaytestReport.output_dir :type: pathlib.Path :value: > None ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.output_dir ``` ```` ````{py:method} save() -> pathlib.Path :canonical: simvx.graphics.playtest.PlaytestReport.save ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.save ``` ```` ````{py:method} summary() -> str :canonical: simvx.graphics.playtest.PlaytestReport.summary ```{autodoc2-docstring} simvx.graphics.playtest.PlaytestReport.summary ``` ```` ````` `````{py:class} GamePlaytestHarness(game_root: simvx.core.Node, *, width: int = 1280, height: int = 720, output_dir: str | pathlib.Path | None = None, max_frames: int = 30000, speed: float = 50.0) :canonical: simvx.graphics.playtest.GamePlaytestHarness ```{autodoc2-docstring} simvx.graphics.playtest.GamePlaytestHarness ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.graphics.playtest.GamePlaytestHarness.__init__ ``` ````{py:method} run(steps: list, *, capture_every_n: int = 0, capture_on_assert: bool = True, capture_on_click: bool = True) -> simvx.graphics.playtest.PlaytestReport :canonical: simvx.graphics.playtest.GamePlaytestHarness.run ```{autodoc2-docstring} simvx.graphics.playtest.GamePlaytestHarness.run ``` ```` `````