; Mosis Designer Manual Click Test
; AutoHotkey v2
; Tests clicking on specific app icons with an already-running designer

#Requires AutoHotkey v2.0
#Include "lib\utils.ahk"

; Wait for designer to be running
LogMessage("Looking for designer window...")
LogMessage("Please start the designer manually if not running:")
LogMessage("  cd designer && build\\Debug\\mosis-designer.exe ..\\src\\main\\assets\\apps\\home\\home.rml")

hwnd := WaitForDesignerWindow(30000)  ; 30 second timeout

if (!hwnd) {
    MsgBox("Designer window not found after 30 seconds. Exiting.")
    ExitApp()
}

LogMessage("Found designer window: " . hwnd)

; Get and display client area info
client := GetClientArea(hwnd)
if (client) {
    LogMessage("Client area: x=" . client.x . " y=" . client.y . " w=" . client.w . " h=" . client.h)
}

; Interactive test loop
MsgBox("Designer found! Click OK to start click tests.`n`nWe will click on the Phone app icon.")

; Test 1: Click Phone app
LogMessage("Test 1: Clicking Phone app at (67, 120)")
ClickPhone(67, 120, hwnd)
Sleep(500)

result := MsgBox("Did the screen change to the Dialer?", "Verify", "YesNo")
if (result = "Yes") {
    LogMessage("Test 1 PASSED: Phone app click worked")
} else {
    LogMessage("Test 1 FAILED: Phone app click did not work")
}

; Give user time to see result
Sleep(1000)

; Test 2: Click Messages dock
MsgBox("Now testing Messages dock item. Click OK to continue.")
LogMessage("Test 2: Clicking Messages dock at (202, 920)")
ClickPhone(202, 920, hwnd)
Sleep(500)

result := MsgBox("Did the screen change to Messages?", "Verify", "YesNo")
if (result = "Yes") {
    LogMessage("Test 2 PASSED: Messages dock click worked")
} else {
    LogMessage("Test 2 FAILED: Messages dock click did not work")
}

Sleep(1000)

; Test 3: Different coordinates for Messages (in case dock is higher)
MsgBox("Testing alternative dock position. Click OK to continue.")
LogMessage("Test 3: Clicking Messages at alternative position (202, 880)")
ClickPhone(202, 880, hwnd)
Sleep(500)

result := MsgBox("Did anything happen?", "Verify", "YesNo")
if (result = "Yes") {
    LogMessage("Test 3: Alternative position worked better")
} else {
    LogMessage("Test 3: Alternative position also failed")
}

; Summary
MsgBox("Tests complete! Check test_run.log for results.`n`nPath: " . A_ScriptDir . "\test_run.log")

ExitApp()
