work in progress
This commit is contained in:
149
designer/test/full_click_test.ahk
Normal file
149
designer/test/full_click_test.ahk
Normal file
@@ -0,0 +1,149 @@
|
||||
; 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)
|
||||
Reference in New Issue
Block a user