straywild/tests/tooltip_escape_validation.gd

43 lines
1.3 KiB
GDScript

extends SceneTree
const MainScene: PackedScene = preload("res://main/main.tscn")
func _initialize() -> void:
call_deferred("_run")
func _run() -> void:
root.size = Vector2i(1280, 720)
var main: Node = MainScene.instantiate()
root.add_child(main)
for _frame: int in 4:
await process_frame
if not bool(main.get("_application_initialized")):
main.call("_activate_selected_data_path", "", true)
for _frame: int in 8:
await process_frame
assert(bool(main.get("_application_initialized")))
var game_ui: GameUI = main.get("_game_ui") as GameUI
var player_menu: PlayerMenu = game_ui.get_node("%PlayerMenu") as PlayerMenu
assert(game_ui != null and player_menu != null)
game_ui.get_title_screen().hide()
main.set("_gameplay_started", true)
player_menu.show()
player_menu.set("_transitioning", false)
# Input.action_press updates global action state without delivering an
# InputEvent to Main._input. That reproduces the path used when a native
# tooltip window consumes Escape before the gameplay viewport receives it.
Input.action_press("ui_cancel")
await process_frame
Input.action_release("ui_cancel")
for _frame: int in 40:
await process_frame
assert(not player_menu.visible)
main.queue_free()
await process_frame
print("Tooltip Escape validation: PASS")
quit(0)