All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- New methods in
ActionsControlExtensions
allows triggering Godot input actions:StartAction
,EndAction
,HoldActionFor
, andTriggerAction
. - A new method,
KeyboardControlExtensions.HoldKeyFor
, simulates a key combination being held for a certain amount of time. - New
WaitExtensions.WaitUntil
method enables waiting until a predicate function returns true, or a configurable timeout occurs. - New
WaitExtensions.Wait
method enables processing frames for a given length of time. - New
WaitExtensions.WaitPhysics
enables processing physics frames for a given length of time.
- All node extension methods in
WaitExtensions
now require the node to be in the scene tree.
- The
Fixture
API has been updated to provide a more consistent API interface. All functions that create nodes now have an optionalautoFree
parameter that enqueues the created node for auto-freeing on fixture cleanup. This parameter istrue
by default. Before some functions would free the nodes, others would not making it hard to predict when a node would be freed. - The
AddToRoot
function of theFixture
class now has a parameterautoRemoveFromRoot
that controls whether the node is removed from the root node on fixture cleanup. This parameter istrue
by default. Before the node was not automatically removed from the root node on fixture cleanup and you had to either remove or free it yourself.
-
The
Fixture
class now can instantiate a scene by naming convention. E.g. if you have a scriptPlayer/Player.cs
and a scenePlayer/Player.tscn
next to it, you can now instantiate the scene by callingfixture.LoadScene<Player>()
. This makes your tests more robust to changes in the scene structure as you don't have to update the path in your test code. Thanks to @definitelyokay for providing a PR for this feature! -
The tests can now run on GitHub using an emulated display driver. You can check the workflow file for an example on how to set this up for your own project. Another big thanks to @definitelyokay for figuring this out and providing a PR for it!
-
If you want to contribute to Godot Test Driver and use Visual Studio Code there are now a few launch configurations in the .vscode folder that make it easier to debug the tests. Thanks to @definitelyokay for providing a PR for this as well!
- Version 2.0.0 has been updated for Godot 4. It is no longer compatible with Godot 3.
- .net targets have been updated to match Godot 4. Currently only
net6.0
is supported. TweenDriver
has been removed asTween
is no longer a node.EnterText
inLineEditDriver
has been renamed toSubmitText
to match the new name of the signal in Godot 4.SelectableMenuItems
inPopupMenuDriver
has been renamed toSelectableItems
to match the naming convention of other drivers.MenuItems
inPopupMenuDriver
has been renamed toItems
to match the naming convention of other drivers.- The experimental screenshot extension has been removed. It may be re-added in a future version but for now it's not useful the way it is.
BBCodeText
inRichTextLabelDriver
has been removed as in Godot 4RichTextLabel
no longer has a separate property for BBCode text.
- A new
WindowDriver
class has been added to use as base class for drivingWindow
nodes. - A new
Sprite2DDriver
class has been added to use as base class for drivingSprite2D
nodes. GraphNodeDriver
now hasRect
property to get the node's rect.- All node drivers have now a
GetSignalAwaiter
method to allow awaiting signals that the underlying node emits. Note, that you need to get the awaiter before you run the code that emits the signal. Otherwise the awaiter will never complete. ItemListDriver
now has anItemCount
property to get the number of items in the list.ItemListDriver
has a new functionSelectItemsWithText
which allows to select multiple items at once.ItemListDriver
sSelectItemWithText
now has an optional parameteraddToSelection
to allow adding to the current selection instead of replacing it.ItemListDriver
now has aDeselectAll
function to deselect all items.ItemListDriver
now has anActivateItemWithText
function to activate (double click or press enter on) an item by its text.RichTextLabelDriver
now has aIsBBCodeEnabled
property to check whether BBCode is enabled.
IsFullyInView
inControlDriver
now works correctly when the canvas transform is translated or scaled.SelectableItems
inItemListDriver
now no longer returns items that are disabled.
GraphEditDriver
will now throw an exception when trying to get connections from it and the underlyingGraphEdit
does not exist in the tree. Previously it would return an empty list of connections. This is to make it consistent with the behavior of the other drivers.
GraphEditDriver
now has two new methodsHasConnectionFrom
andHasConnectionTo
which allow you to check whether a certain port is connected without having to know which other port it is connected to.
- Support for multiple .net targets. Now targets
net472
andnetstandard2.1
. GraphNodeDriver
now has a functionGetPortType
to to inspect the node's port types.
- Initial public release