v1.2.0¶
Added¶
-
Locator— lazy, multi-strategy reference for finding nodes by name / group / text / type / script / path, AND-composable viafilter()and chainable viaparent.locator(...). Re-resolves on every action soreload_scene()leaves existing Locators valid. Auto-waits actionability beforeclick()on Control targets. New errorsMultipleMatchesErrorandNotActionableError. New wire commandsfind_nodes,node_actionable,hover_node. ROADMAP task 1. (#10) -
Engine log capture —
push_error,push_warning, script runtime errors, shader errors, and (at info verbosity)print/printerrare intercepted via aLoggersubclass on the Godot side and surfaced on the Python side.LogEntry/LogVerbositytypes,game.last_logs/game.collected_logsaccessors,game.set_log_verbosity(level)andgame.set_log_buffer_size(size)runtime controls,--e2e-log-verbosity={error|warning|info}startup flag (defaultwarning),log_verbositylaunch kwarg with Python-side validation. On test failure, captured logs land in pytest's report under acaptured godot logssection. EveryGodotE2EErrorsubclass now carries alogsattribute; ring-buffer overflow is reported as a uniform synthetic entry acrosslast_logs/collected_logs/exc.logs. New wire commandsset_log_verbosity,set_log_buffer_size. ROADMAP task 2. (#11) -
expect(locator)auto-retrying assertions — matchersto_have_property,to_have_text,to_be_visible,to_exist, plusto_satisfy(predicate, *, description=...)for arbitrary Locator-based predicates. Client-side polling with configurabletimeout/poll_interval; failures raiseExpectationFailedError(dual-inheritsGodotE2EErrorandAssertionErrorso pytest renders it as a regular assertion failure). Failure messages include the last observed value and a depth-4 scene-tree dump; the exception carriesobservation_capturedandlast_errorfor finer post-mortem. Lookup-style errors raised mid-poll (NodeNotFoundError,MultipleMatchesError,CommandError) are absorbed so matchers ride out scene reloads. ROADMAP task 3. (#12) -
PEP 561 typed-distribution marker —
python/godot_e2e/py.typedships in both wheel and sdist, so downstreammypy/pyright/pyreusers now resolve the inline annotations onGodotE2E,Locator,expect,LocatorAssertions, and the typed exception classes instead of falling back toAny. ROADMAP task 7. (#13) -
Repo-meta baseline:
ROADMAP.md(+ zh-CN, with five tasks),docs/versioning.md(+ zh-CN),.gitleaks.tomlconfig,docs/update/next.template.md.docs/internal/is now gitignored as a local-only space for ADRs, design notes, and lessons that we do not publish. (#8)
Compatibility¶
- Minimum Godot version raised to 4.5 — the engine log capture feature relies on the
Loggervirtual class introduced in Godot 4.5 (class reference, PR #91006). Perdocs/versioning.mdthis is a MINOR bump. (#11)