150 lines
3.7 KiB
AutoHotkey
150 lines
3.7 KiB
AutoHotkey
; Full click test with output verification
|
|
#Requires AutoHotkey v2.0
|
|
|
|
; Configuration
|
|
DESIGNER_EXE := A_ScriptDir . "\..\build\Debug\mosis-designer.exe"
|
|
HOME_RML := A_ScriptDir . "\..\..\src\main\assets\apps\home\home.rml"
|
|
WINDOW_TITLE := "Mosis Designer"
|
|
PHONE_WIDTH := 540
|
|
PHONE_HEIGHT := 960
|
|
|
|
; Output files
|
|
logFile := A_ScriptDir . "\designer_output.log"
|
|
resultFile := A_ScriptDir . "\full_test_result.txt"
|
|
|
|
if (FileExist(logFile))
|
|
FileDelete(logFile)
|
|
if (FileExist(resultFile))
|
|
FileDelete(resultFile)
|
|
|
|
Log(msg) {
|
|
global resultFile
|
|
FileAppend(msg . "`n", resultFile, "UTF-8")
|
|
}
|
|
|
|
Log("=== Full Click Test with Output Capture ===")
|
|
Log("Time: " . FormatTime(, "yyyy-MM-dd HH:mm:ss"))
|
|
Log("")
|
|
|
|
; Start designer with output redirection
|
|
Log("Starting designer...")
|
|
cmd := '"' . DESIGNER_EXE . '" "' . HOME_RML . '" > "' . logFile . '" 2>&1'
|
|
Log("Command: " . cmd)
|
|
|
|
; Run via cmd to handle redirection
|
|
Run(A_ComSpec . " /c " . cmd, A_ScriptDir, , &pid)
|
|
Log("Started with PID: " . pid)
|
|
|
|
; Wait for window
|
|
Log("Waiting for window...")
|
|
startTime := A_TickCount
|
|
hwnd := 0
|
|
while (A_TickCount - startTime < 15000) {
|
|
hwnd := WinExist(WINDOW_TITLE)
|
|
if (hwnd)
|
|
break
|
|
Sleep(200)
|
|
}
|
|
|
|
if (!hwnd) {
|
|
Log("ERROR: Window did not appear within 15 seconds")
|
|
ExitApp(1)
|
|
}
|
|
Log("Window appeared: " . hwnd)
|
|
|
|
; Wait for document to load
|
|
Sleep(2000)
|
|
|
|
; Get window dimensions and calculate scale
|
|
WinGetPos(&winX, &winY, &winW, &winH, hwnd)
|
|
Log("Window: X=" . winX . " Y=" . winY . " W=" . winW . " H=" . winH)
|
|
|
|
; Calculate scale
|
|
expectedW := 540 + 16
|
|
expectedH := 960 + 40
|
|
scale := (winW / expectedW + winH / expectedH) / 2
|
|
Log("DPI Scale: " . scale)
|
|
|
|
; Calculate client offset
|
|
titleBar := Round(31 * scale)
|
|
border := Round(8 * scale)
|
|
clientX := winX + border
|
|
clientY := winY + titleBar
|
|
Log("Client: X=" . clientX . " Y=" . clientY)
|
|
|
|
; Activate window
|
|
WinActivate(hwnd)
|
|
Sleep(300)
|
|
|
|
; Function to click at phone coordinates
|
|
ClickAt(phoneX, phoneY, desc) {
|
|
global clientX, clientY, scale, hwnd
|
|
screenX := Round(clientX + phoneX * scale)
|
|
screenY := Round(clientY + phoneY * scale)
|
|
Log("Click " . desc . ": phone(" . phoneX . "," . phoneY . ") -> screen(" . screenX . "," . screenY . ")")
|
|
|
|
; Activate and click
|
|
WinActivate(hwnd)
|
|
Sleep(50)
|
|
Click(screenX, screenY)
|
|
Sleep(500)
|
|
}
|
|
|
|
Log("")
|
|
Log("=== Test 1: Click Phone App ===")
|
|
ClickAt(67, 120, "Phone app")
|
|
Sleep(1500)
|
|
|
|
; Check log for navigation
|
|
Log("Checking log for navigation...")
|
|
if (FileExist(logFile)) {
|
|
content := FileRead(logFile)
|
|
if (InStr(content, "Navigated to: dialer") || InStr(content, "Loaded screen: apps/dialer")) {
|
|
Log("SUCCESS: Navigation to dialer detected!")
|
|
} else if (InStr(content, "navigateTo called")) {
|
|
Log("PARTIAL: navigateTo was called but navigation may have failed")
|
|
} else {
|
|
Log("FAIL: No navigation detected")
|
|
}
|
|
} else {
|
|
Log("WARNING: Log file not found")
|
|
}
|
|
|
|
Log("")
|
|
Log("=== Test 2: Click Messages Dock ===")
|
|
ClickAt(202, 920, "Messages dock")
|
|
Sleep(1500)
|
|
|
|
if (FileExist(logFile)) {
|
|
content := FileRead(logFile)
|
|
if (InStr(content, "messages")) {
|
|
Log("SUCCESS: Messages-related activity detected")
|
|
} else {
|
|
Log("FAIL: No messages navigation detected")
|
|
}
|
|
}
|
|
|
|
Log("")
|
|
Log("=== Cleaning Up ===")
|
|
; Close designer
|
|
WinClose(hwnd)
|
|
Sleep(500)
|
|
|
|
; Dump the full log
|
|
Log("")
|
|
Log("=== Designer Log Contents ===")
|
|
if (FileExist(logFile)) {
|
|
content := FileRead(logFile)
|
|
; Only show last part of log (navigation related)
|
|
lines := StrSplit(content, "`n")
|
|
Log("(Last 30 lines)")
|
|
startIdx := lines.Length > 30 ? lines.Length - 30 : 1
|
|
loop lines.Length - startIdx + 1 {
|
|
Log(lines[startIdx + A_Index - 1])
|
|
}
|
|
}
|
|
|
|
Log("")
|
|
Log("=== Test Complete ===")
|
|
ExitApp(0)
|