extends SceneTree ## Verifies the main menu's Login/Register buttons correctly open the auth ## panel and toggle between Login and Register modes via signal emission. ## ## Key tests: ## - AuthPanel starts hidden. ## - LoginButton press opens the panel in Login mode. ## - RegisterButton press opens the panel in Register mode. ## - Clicking Login while in Register mode switches back to Login mode. ## - Clicking Register while in Login mode switches to Register mode. ## - The ModeToggle CheckButton no longer exists in the scene. func _initialize() -> void: _run() func _run() -> void: await process_frame var passed := 0 var failed := 0 var packed: PackedScene = load("res://scenes/main_menu.tscn") var instance: Control = packed.instantiate() root.add_child(instance) await process_frame var login_button: Button = instance.get_node("CenterContainer/VBoxContainer/AuthButtonsRow/LoginButton") var register_button: Button = instance.get_node("CenterContainer/VBoxContainer/AuthButtonsRow/RegisterButton") var auth_panel: PanelContainer = instance.get_node("CenterContainer/VBoxContainer/AuthPanel") var auth_mode_label: Label = instance.get_node("CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/AuthModeLabel") var email_edit: LineEdit = instance.get_node("CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/EmailEdit") var dob_edit: LineEdit = instance.get_node("CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/DobEdit") # --- Test 1: auth panel starts hidden --- if _check("auth panel starts hidden", not auth_panel.visible): passed += 1 else: failed += 1 # --- Test 2: LoginButton press opens panel in Login mode --- login_button.pressed.emit() await process_frame if _check("auth panel visible after LoginButton press", auth_panel.visible): passed += 1 else: failed += 1 if _check("Login mode label after LoginButton press", auth_mode_label.text == "Login"): passed += 1 else: failed += 1 if _check("Email field hidden in Login mode", not email_edit.visible): passed += 1 else: failed += 1 if _check("DOB field hidden in Login mode", not dob_edit.visible): passed += 1 else: failed += 1 # --- Test 3: RegisterButton press switches to Register mode --- register_button.pressed.emit() await process_frame if _check("auth panel still visible after RegisterButton press", auth_panel.visible): passed += 1 else: failed += 1 if _check("Register mode label after RegisterButton press", auth_mode_label.text == "Register"): passed += 1 else: failed += 1 if _check("Email field visible in Register mode", email_edit.visible): passed += 1 else: failed += 1 if _check("DOB field visible in Register mode", dob_edit.visible): passed += 1 else: failed += 1 # --- Test 4: LoginButton press switches back to Login mode --- login_button.pressed.emit() await process_frame if _check("Login mode label after second LoginButton press", auth_mode_label.text == "Login"): passed += 1 else: failed += 1 if _check("Email field hidden after switching back to Login", not email_edit.visible): passed += 1 else: failed += 1 if _check("DOB field hidden after switching back to Login", not dob_edit.visible): passed += 1 else: failed += 1 # --- Test 5: ModeToggle CheckButton no longer exists --- var mode_toggle_path = "CenterContainer/VBoxContainer/AuthPanel/MarginContainer/AuthVBox/ModeToggle" var has_mode_toggle = instance.has_node(mode_toggle_path) if _check("ModeToggle CheckButton removed from scene", not has_mode_toggle): passed += 1 else: failed += 1 print("\n=== SMOKE RESULT: %d/%d passed ===" % [passed, passed + failed]) quit(0 if failed == 0 else 1) func _check(description: String, condition: bool) -> bool: if condition: print(" PASS: ", description) else: printerr(" FAIL: ", description) return condition