tests & can charge up thrust
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
extends SceneTree
|
||||
## Headless screenshot test — captures a viewport frame after the scene loads.
|
||||
## Run: godot --headless --script tests/screenshot_test.gd
|
||||
##
|
||||
## Outputs: tests/output/screenshot.png
|
||||
## Exit code 0 = success, 1 = failure.
|
||||
|
||||
const OUTPUT_DIR := "res://tests/output"
|
||||
const SETTLE_TIME := 2.0 # seconds to let physics/animations settle
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
_run.call_deferred()
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
# Ensure output directory exists
|
||||
DirAccess.make_dir_recursive_absolute(OUTPUT_DIR)
|
||||
|
||||
# Load and switch to the main scene
|
||||
var scene_res := load("res://scene.tscn")
|
||||
if scene_res == null:
|
||||
push_error("screenshot_test: Failed to load scene.tscn")
|
||||
quit(1)
|
||||
return
|
||||
|
||||
var scene_instance: Node = scene_res.instantiate()
|
||||
root.add_child(scene_instance)
|
||||
|
||||
# Wait for the scene to settle (physics, spawning, animations)
|
||||
await create_timer(SETTLE_TIME).timeout
|
||||
|
||||
# Capture viewport
|
||||
var img: Image = root.get_viewport().get_texture().get_image()
|
||||
if img == null:
|
||||
push_error("screenshot_test: Failed to capture viewport image")
|
||||
quit(1)
|
||||
return
|
||||
|
||||
var path := OUTPUT_DIR + "/screenshot.png"
|
||||
var err := img.save_png(path)
|
||||
if err != OK:
|
||||
push_error("screenshot_test: Failed to save PNG (error %d)" % err)
|
||||
quit(1)
|
||||
return
|
||||
|
||||
print("screenshot_test: Saved %s (%dx%d)" % [path, img.get_width(), img.get_height()])
|
||||
quit(0)
|
||||
Reference in New Issue
Block a user