extends SceneTree ## Headless smoke test for SellingPayoutUI scene and script. func _initialize() -> void: _run() func _run() -> void: await process_frame print("[SMOKE] Starting SellingPayoutUI smoke test...") var scene = load("res://scenes/selling_payout_ui.tscn") if not scene: printerr("[FAIL] Could not load scenes/selling_payout_ui.tscn") quit(1) return var ui: Control = scene.instantiate() root.add_child(ui) await process_frame # Verify onready nodes assert(ui.back_button != null, "Missing back_button") assert(ui.refresh_button != null, "Missing refresh_button") assert(ui.status_label != null, "Missing status_label") assert(ui.tab_container != null, "Missing tab_container") # Selling nodes assert(ui.item_name_input != null, "Missing item_name_input") assert(ui.item_type_option != null, "Missing item_type_option") assert(ui.item_desc_input != null, "Missing item_desc_input") assert(ui.price_input != null, "Missing price_input") assert(ui.create_listing_btn != null, "Missing create_listing_btn") assert(ui.my_listings_container != null, "Missing my_listings_container") # Payout nodes assert(ui.available_lbl != null, "Missing available_lbl") assert(ui.pending_lbl != null, "Missing pending_lbl") assert(ui.lifetime_lbl != null, "Missing lifetime_lbl") assert(ui.payout_amount_input != null, "Missing payout_amount_input") assert(ui.payout_dest_input != null, "Missing payout_dest_input") assert(ui.request_payout_btn != null, "Missing request_payout_btn") assert(ui.payouts_container != null, "Missing payouts_container") # Test rendering sample listings var sample_listings = [ { "id": 101, "price": 300, "status": "active", "catalog_item": { "name": "Knight Helmet", "item_type": "avatar_item" } } ] ui.render_my_listings(sample_listings) assert(ui.my_listings_container.get_child_count() == 1, "Should render 1 listing row") # Test rendering sample payouts var sample_payouts = [ { "id": 5, "amount": 250, "status": "paid", "created_at": "2026-09-15T15:00:00Z", "provider_ref": "stripe_123" }, { "id": 6, "amount": 100, "status": "pending", "created_at": "2026-09-15T16:00:00Z", "external_ref": "paypal@creator.com" } ] ui.render_payouts(sample_payouts) assert(ui.payouts_container.get_child_count() == 2, "Should render 2 payout rows") # Verify signals assert(ui.has_signal("back_requested"), "Missing back_requested signal") ui.queue_free() print("[SMOKE] SellingPayoutUI smoke test PASSED") quit(0)