@wa008/ui-audit-mcp 1.0.2 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/device/adapter.d.ts.map +1 -1
- package/dist/src/device/adapter.js +9 -6
- package/dist/src/device/adapter.js.map +1 -1
- package/dist/src/evaluation/checklist.js +6 -6
- package/dist/src/evaluation/checklist.js.map +1 -1
- package/dist/src/evaluation/scorer.d.ts.map +1 -1
- package/dist/src/evaluation/scorer.js +4 -2
- package/dist/src/evaluation/scorer.js.map +1 -1
- package/dist/src/logger/evaluation-logger.d.ts.map +1 -1
- package/dist/src/logger/evaluation-logger.js +66 -21
- package/dist/src/logger/evaluation-logger.js.map +1 -1
- package/dist/src/tools/submit-evaluation.d.ts +5 -5
- package/dist/src/tools/submit-evaluation.js +1 -2
- package/dist/src/tools/submit-evaluation.js.map +1 -1
- package/dist/src/types.d.ts +23 -5
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +9 -2
- package/dist/device/adapter.d.ts +0 -45
- package/dist/device/adapter.d.ts.map +0 -1
- package/dist/device/adapter.js +0 -137
- package/dist/device/adapter.js.map +0 -1
- package/dist/evaluation/checklist.d.ts +0 -14
- package/dist/evaluation/checklist.d.ts.map +0 -1
- package/dist/evaluation/checklist.js +0 -57
- package/dist/evaluation/checklist.js.map +0 -1
- package/dist/evaluation/scorer.d.ts +0 -7
- package/dist/evaluation/scorer.d.ts.map +0 -1
- package/dist/evaluation/scorer.js +0 -35
- package/dist/evaluation/scorer.js.map +0 -1
- package/dist/index.d.ts +0 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -75
- package/dist/index.js.map +0 -1
- package/dist/logger/evaluation-logger.d.ts +0 -20
- package/dist/logger/evaluation-logger.d.ts.map +0 -1
- package/dist/logger/evaluation-logger.js +0 -93
- package/dist/logger/evaluation-logger.js.map +0 -1
- package/dist/maestro/adapter.d.ts +0 -37
- package/dist/maestro/adapter.d.ts.map +0 -1
- package/dist/maestro/adapter.js +0 -139
- package/dist/maestro/adapter.js.map +0 -1
- package/dist/test-agent.d.ts +0 -2
- package/dist/test-agent.d.ts.map +0 -1
- package/dist/test-agent.js.map +0 -1
- package/dist/tools/evaluate-style.d.ts +0 -30
- package/dist/tools/evaluate-style.d.ts.map +0 -1
- package/dist/tools/evaluate-style.js +0 -57
- package/dist/tools/evaluate-style.js.map +0 -1
- package/dist/tools/get-checklist.d.ts +0 -27
- package/dist/tools/get-checklist.d.ts.map +0 -1
- package/dist/tools/get-checklist.js +0 -57
- package/dist/tools/get-checklist.js.map +0 -1
- package/dist/tools/get-log.d.ts +0 -25
- package/dist/tools/get-log.d.ts.map +0 -1
- package/dist/tools/get-log.js +0 -33
- package/dist/tools/get-log.js.map +0 -1
- package/dist/tools/launch-app.d.ts +0 -19
- package/dist/tools/launch-app.d.ts.map +0 -1
- package/dist/tools/launch-app.js +0 -24
- package/dist/tools/launch-app.js.map +0 -1
- package/dist/tools/submit-evaluation.d.ts +0 -57
- package/dist/tools/submit-evaluation.d.ts.map +0 -1
- package/dist/tools/submit-evaluation.js +0 -107
- package/dist/tools/submit-evaluation.js.map +0 -1
- package/dist/tools/swipe.d.ts +0 -28
- package/dist/tools/swipe.d.ts.map +0 -1
- package/dist/tools/swipe.js +0 -26
- package/dist/tools/swipe.js.map +0 -1
- package/dist/tools/take-screenshot.d.ts +0 -26
- package/dist/tools/take-screenshot.d.ts.map +0 -1
- package/dist/tools/take-screenshot.js +0 -32
- package/dist/tools/take-screenshot.js.map +0 -1
- package/dist/tools/tap.d.ts +0 -22
- package/dist/tools/tap.d.ts.map +0 -1
- package/dist/tools/tap.js +0 -24
- package/dist/tools/tap.js.map +0 -1
- package/dist/types.d.ts +0 -57
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH,mDAAmD;AACnD,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAa7E;AAID,0DAA0D;AAC1D,wBAAsB,SAAS,CAC3B,KAAK,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAcD;AAED,4EAA4E;AAC5E,wBAAsB,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH,mDAAmD;AACnD,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAa7E;AAID,0DAA0D;AAC1D,wBAAsB,SAAS,CAC3B,KAAK,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAcD;AAED,4EAA4E;AAC5E,wBAAsB,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB/E;AAED,2CAA2C;AAC3C,wBAAsB,KAAK,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/C"}
|
|
@@ -84,8 +84,10 @@ export async function takeScreenshot() {
|
|
|
84
84
|
/** Tap at ratio coordinates (0-1). Converts to points using screen size. */
|
|
85
85
|
export async function tap(ratioX, ratioY) {
|
|
86
86
|
const { width, height } = await getScreenSize();
|
|
87
|
-
|
|
88
|
-
const
|
|
87
|
+
// Detect scale: 1206px wide is 402 points (3x)
|
|
88
|
+
const scale = width > 500 ? 3 : 1;
|
|
89
|
+
const pointX = Math.round((ratioX * width) / scale);
|
|
90
|
+
const pointY = Math.round((ratioY * height) / scale);
|
|
89
91
|
try {
|
|
90
92
|
await execFileAsync("idb", ["ui", "tap", String(pointX), String(pointY)]);
|
|
91
93
|
return { success: true, pointX, pointY };
|
|
@@ -101,10 +103,11 @@ export async function tap(ratioX, ratioY) {
|
|
|
101
103
|
/** Swipe using ratio coordinates (0-1). */
|
|
102
104
|
export async function swipe(startX, startY, endX, endY) {
|
|
103
105
|
const { width, height } = await getScreenSize();
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
const
|
|
106
|
+
const scale = width > 500 ? 3 : 1;
|
|
107
|
+
const x1 = Math.round((startX * width) / scale);
|
|
108
|
+
const y1 = Math.round((startY * height) / scale);
|
|
109
|
+
const x2 = Math.round((endX * width) / scale);
|
|
110
|
+
const y2 = Math.round((endY * height) / scale);
|
|
108
111
|
try {
|
|
109
112
|
await execFileAsync("idb", [
|
|
110
113
|
"ui", "swipe", String(x1), String(y1), String(x2), String(y2),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
export const SCREEN_CHECKLIST = [
|
|
9
9
|
{
|
|
10
10
|
id: "overlap",
|
|
11
|
-
name: "Element Overlap
|
|
12
|
-
description: "Check
|
|
13
|
-
scoringGuide: "1 = severe overlap
|
|
11
|
+
name: "Element Overlap & Safe Areas",
|
|
12
|
+
description: "Check for any UI elements that overlap or obscure each other. Crucially, verify that interactions and content respect system safe areas (status bar at top, home indicator at bottom) and rounded corners. No essential content should be cut off or covered.",
|
|
13
|
+
scoringGuide: "1 = severe overlap/cut-off, 2 = noticeable overlap, 3 = minor overlap/safe-area issue, 4 = good, 5 = perfect spacing and safe-area adherence",
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
id: "layout",
|
|
17
|
-
name: "Layout &
|
|
18
|
-
description: "
|
|
19
|
-
scoringGuide: "1 =
|
|
17
|
+
name: "Layout & Screen Utilization",
|
|
18
|
+
description: "Evaluate effective use of screen real estate. The app should fill the available screen size appropriate for the device (no unintended letterboxing/black bars). Elements should be balanced, with consistent alignment and spacing.",
|
|
19
|
+
scoringGuide: "1 = severe layout issues (e.g. not full screen), 2 = poor structure, 3 = acceptable, 4 = good balance, 5 = professional and polished",
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
id: "info_clarity",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC7C;QACI,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC7C;QACI,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACP,+PAA+P;QACnQ,YAAY,EACR,8IAA8I;KACrJ;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACP,qOAAqO;QACzO,YAAY,EACR,sIAAsI;KAC7I;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACP,oLAAoL;QACxL,YAAY,EACR,0HAA0H;KACjI;IACD;QACI,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACP,mJAAmJ;QACvJ,YAAY,EACR,4HAA4H;KACnI;CACJ,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC5C;QACI,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACP,4IAA4I;QAChJ,YAAY,EACR,iIAAiI;KACxI;IACD;QACI,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACP,kLAAkL;QACtL,YAAY,EACR,iIAAiI;KACxI;IACD;QACI,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACP,sHAAsH;QAC1H,YAAY,EACR,mHAAmH;KAC1H;CACJ,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../../src/evaluation/scorer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,aAAa,EACb,iBAAiB,EAEjB,cAAc,EACd,UAAU,EACb,MAAM,aAAa,CAAC;AAErB,wBAAgB,cAAc,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,MAAM,EAAE,UAAU,EAAE,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../../src/evaluation/scorer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,aAAa,EACb,iBAAiB,EAEjB,cAAc,EACd,UAAU,EACb,MAAM,aAAa,CAAC;AAErB,wBAAgB,cAAc,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,MAAM,EAAE,UAAU,EAAE,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACtB,iBAAiB,CAmCnB"}
|
|
@@ -11,7 +11,7 @@ export function evaluateScores(sessionId, type, screenName, checklist, scores, p
|
|
|
11
11
|
id: item.id,
|
|
12
12
|
score,
|
|
13
13
|
passed,
|
|
14
|
-
reason: entry?.reason,
|
|
14
|
+
reason: entry?.reason ?? "No score provided",
|
|
15
15
|
suggestion: entry?.suggestion,
|
|
16
16
|
};
|
|
17
17
|
});
|
|
@@ -20,6 +20,8 @@ export function evaluateScores(sessionId, type, screenName, checklist, scores, p
|
|
|
20
20
|
const averageScore = results.length > 0
|
|
21
21
|
? parseFloat((totalScore / results.length).toFixed(2))
|
|
22
22
|
: 0;
|
|
23
|
+
const now = new Date();
|
|
24
|
+
const timestamp = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")} ${String(now.getHours()).padStart(2, "0")}:${String(now.getMinutes()).padStart(2, "0")}:${String(now.getSeconds()).padStart(2, "0")}`;
|
|
23
25
|
return {
|
|
24
26
|
sessionId,
|
|
25
27
|
type,
|
|
@@ -28,7 +30,7 @@ export function evaluateScores(sessionId, type, screenName, checklist, scores, p
|
|
|
28
30
|
averageScore,
|
|
29
31
|
results,
|
|
30
32
|
failedItems,
|
|
31
|
-
timestamp
|
|
33
|
+
timestamp,
|
|
32
34
|
attemptNumber,
|
|
33
35
|
};
|
|
34
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../../src/evaluation/scorer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,UAAU,cAAc,CAC1B,SAAiB,EACjB,IAAoB,EACpB,UAAkB,EAClB,SAA0B,EAC1B,MAAoB,EACpB,YAAoB,EACpB,aAAqB;IAErB,MAAM,OAAO,GAAuB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC;QACrC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK;YACL,MAAM;YACN,MAAM,EAAE,KAAK,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../../src/evaluation/scorer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,UAAU,cAAc,CAC1B,SAAiB,EACjB,IAAoB,EACpB,UAAkB,EAClB,SAA0B,EAC1B,MAAoB,EACpB,YAAoB,EACpB,aAAqB;IAErB,MAAM,OAAO,GAAuB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC;QACrC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK;YACL,MAAM;YACN,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,mBAAmB;YAC5C,UAAU,EAAE,KAAK,EAAE,UAAU;SAChC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,YAAY,GACd,OAAO,CAAC,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAEvQ,OAAO;QACH,SAAS;QACT,IAAI;QACJ,UAAU;QACV,aAAa,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QACvC,YAAY;QACZ,OAAO;QACP,WAAW;QACX,SAAS;QACT,aAAa;KAChB,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-logger.d.ts","sourceRoot":"","sources":["../../../src/logger/evaluation-logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,UAAU,EACb,MAAM,aAAa,CAAC;AAUrB,sCAAsC;AACtC,wBAAgB,OAAO,CACnB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,MAAM,EAAE,UAAU,EAAE,GACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"evaluation-logger.d.ts","sourceRoot":"","sources":["../../../src/logger/evaluation-logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,UAAU,EACb,MAAM,aAAa,CAAC;AAUrB,sCAAsC;AACtC,wBAAgB,OAAO,CACnB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,MAAM,EAAE,UAAU,EAAE,GACrB,MAAM,CA0CR;AAED,uCAAuC;AACvC,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO1D;AA6BD,wCAAwC;AACxC,wBAAgB,SAAS,CACrB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,GAAE,MAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAU3C;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG9D"}
|
|
@@ -17,7 +17,39 @@ function ensureDir(dir) {
|
|
|
17
17
|
/** Persist a completed evaluation. */
|
|
18
18
|
export function saveLog(outcome, checklist, scores) {
|
|
19
19
|
ensureDir(LOG_DIR);
|
|
20
|
-
const
|
|
20
|
+
const failures = outcome.results
|
|
21
|
+
.filter((r) => !r.passed)
|
|
22
|
+
.map((r) => ({
|
|
23
|
+
id: r.id,
|
|
24
|
+
name: checklist.find((c) => c.id === r.id)?.name ?? r.id,
|
|
25
|
+
score: r.score,
|
|
26
|
+
reason: r.reason,
|
|
27
|
+
suggestion: r.suggestion,
|
|
28
|
+
}));
|
|
29
|
+
const passes = outcome.results
|
|
30
|
+
.filter((r) => r.passed)
|
|
31
|
+
.map((r) => ({
|
|
32
|
+
id: r.id,
|
|
33
|
+
name: checklist.find((c) => c.id === r.id)?.name ?? r.id,
|
|
34
|
+
score: r.score,
|
|
35
|
+
reason: r.reason,
|
|
36
|
+
suggestion: r.suggestion, // Optional for passes
|
|
37
|
+
}));
|
|
38
|
+
const entry = {
|
|
39
|
+
meta: {
|
|
40
|
+
sessionId: outcome.sessionId,
|
|
41
|
+
timestamp: outcome.timestamp,
|
|
42
|
+
screenName: outcome.screenName,
|
|
43
|
+
attemptNumber: outcome.attemptNumber,
|
|
44
|
+
type: outcome.type,
|
|
45
|
+
},
|
|
46
|
+
summary: {
|
|
47
|
+
passed: outcome.overallPassed,
|
|
48
|
+
averageScore: outcome.averageScore,
|
|
49
|
+
},
|
|
50
|
+
failures,
|
|
51
|
+
passes,
|
|
52
|
+
};
|
|
21
53
|
const filePath = path.join(LOG_DIR, `${outcome.sessionId}.json`);
|
|
22
54
|
fs.writeFileSync(filePath, JSON.stringify(entry, null, 2), "utf-8");
|
|
23
55
|
return filePath;
|
|
@@ -27,20 +59,32 @@ export function loadLog(sessionId) {
|
|
|
27
59
|
const filePath = path.join(LOG_DIR, `${sessionId}.json`);
|
|
28
60
|
if (!fs.existsSync(filePath))
|
|
29
61
|
return null;
|
|
30
|
-
|
|
62
|
+
const raw = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
63
|
+
// Simple check if it's new format
|
|
64
|
+
if (raw.meta && raw.summary)
|
|
65
|
+
return raw;
|
|
66
|
+
return null; // Ignore old format
|
|
31
67
|
}
|
|
32
|
-
/** Load all logs, sorted by timestamp descending. */
|
|
68
|
+
/** Load all logs, sorted by timestamp descending. Filters out legacy logs. */
|
|
33
69
|
function loadAllLogs() {
|
|
34
70
|
ensureDir(LOG_DIR);
|
|
35
71
|
const files = fs
|
|
36
72
|
.readdirSync(LOG_DIR)
|
|
37
73
|
.filter((f) => f.endsWith(".json"));
|
|
38
|
-
const entries =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
74
|
+
const entries = [];
|
|
75
|
+
for (const f of files) {
|
|
76
|
+
try {
|
|
77
|
+
const raw = JSON.parse(fs.readFileSync(path.join(LOG_DIR, f), "utf-8"));
|
|
78
|
+
if (raw.meta && raw.summary) {
|
|
79
|
+
entries.push(raw);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore malformed files
|
|
84
|
+
}
|
|
85
|
+
}
|
|
42
86
|
// Sort newest first
|
|
43
|
-
entries.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
87
|
+
entries.sort((a, b) => new Date(b.meta.timestamp).getTime() - new Date(a.meta.timestamp).getTime());
|
|
44
88
|
return entries;
|
|
45
89
|
}
|
|
46
90
|
/** Query logs with optional filters. */
|
|
@@ -57,13 +101,13 @@ export function queryLogs(sessionId, limit = 10) {
|
|
|
57
101
|
/** Count how many times a specific screen has been evaluated. */
|
|
58
102
|
export function countScreenAttempts(screenName) {
|
|
59
103
|
const all = loadAllLogs();
|
|
60
|
-
return all.filter((l) => l.screenName === screenName).length;
|
|
104
|
+
return all.filter((l) => l.meta.screenName === screenName).length;
|
|
61
105
|
}
|
|
62
|
-
/** Build summary statistics from a list of
|
|
106
|
+
/** Build summary statistics from a list of logs. */
|
|
63
107
|
function buildSummary(logs) {
|
|
64
108
|
const screens = {};
|
|
65
109
|
for (const log of logs) {
|
|
66
|
-
const key = log.screenName;
|
|
110
|
+
const key = log.meta.screenName;
|
|
67
111
|
if (!screens[key]) {
|
|
68
112
|
screens[key] = {
|
|
69
113
|
attempts: 0,
|
|
@@ -73,20 +117,21 @@ function buildSummary(logs) {
|
|
|
73
117
|
}
|
|
74
118
|
screens[key].attempts++;
|
|
75
119
|
}
|
|
76
|
-
// For each screen, find the latest evaluation
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (
|
|
82
|
-
screens[key].finalPassed =
|
|
83
|
-
screens[key].finalScore =
|
|
120
|
+
// For each screen, find the latest evaluation (already sorted by newest first)
|
|
121
|
+
// We iterate again to find the first occurrence for "final" result
|
|
122
|
+
const processedScreens = new Set();
|
|
123
|
+
for (const log of logs) {
|
|
124
|
+
const key = log.meta.screenName;
|
|
125
|
+
if (!processedScreens.has(key)) {
|
|
126
|
+
screens[key].finalPassed = log.summary.passed;
|
|
127
|
+
screens[key].finalScore = log.summary.averageScore;
|
|
128
|
+
processedScreens.add(key);
|
|
84
129
|
}
|
|
85
130
|
}
|
|
86
131
|
return {
|
|
87
132
|
totalEvaluations: logs.length,
|
|
88
|
-
passedCount: logs.filter((l) => l.
|
|
89
|
-
failedCount: logs.filter((l) => !l.
|
|
133
|
+
passedCount: logs.filter((l) => l.summary.passed).length,
|
|
134
|
+
failedCount: logs.filter((l) => !l.summary.passed).length,
|
|
90
135
|
screens,
|
|
91
136
|
};
|
|
92
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-logger.js","sourceRoot":"","sources":["../../../src/logger/evaluation-logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAS9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AAEjE,SAAS,SAAS,CAAC,GAAW;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,OAAO,CACnB,OAA0B,EAC1B,SAA0B,EAC1B,MAAoB;IAEpB,SAAS,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluation-logger.js","sourceRoot":"","sources":["../../../src/logger/evaluation-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,17 @@ export declare const submitEvaluationSchema: z.ZodObject<{
|
|
|
10
10
|
scores: z.ZodArray<z.ZodObject<{
|
|
11
11
|
id: z.ZodString;
|
|
12
12
|
score: z.ZodNumber;
|
|
13
|
-
reason: z.
|
|
13
|
+
reason: z.ZodString;
|
|
14
14
|
suggestion: z.ZodOptional<z.ZodString>;
|
|
15
15
|
}, "strip", z.ZodTypeAny, {
|
|
16
16
|
id: string;
|
|
17
17
|
score: number;
|
|
18
|
-
reason
|
|
18
|
+
reason: string;
|
|
19
19
|
suggestion?: string | undefined;
|
|
20
20
|
}, {
|
|
21
21
|
id: string;
|
|
22
22
|
score: number;
|
|
23
|
-
reason
|
|
23
|
+
reason: string;
|
|
24
24
|
suggestion?: string | undefined;
|
|
25
25
|
}>, "many">;
|
|
26
26
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -28,7 +28,7 @@ export declare const submitEvaluationSchema: z.ZodObject<{
|
|
|
28
28
|
scores: {
|
|
29
29
|
id: string;
|
|
30
30
|
score: number;
|
|
31
|
-
reason
|
|
31
|
+
reason: string;
|
|
32
32
|
suggestion?: string | undefined;
|
|
33
33
|
}[];
|
|
34
34
|
}, {
|
|
@@ -36,7 +36,7 @@ export declare const submitEvaluationSchema: z.ZodObject<{
|
|
|
36
36
|
scores: {
|
|
37
37
|
id: string;
|
|
38
38
|
score: number;
|
|
39
|
-
reason
|
|
39
|
+
reason: string;
|
|
40
40
|
suggestion?: string | undefined;
|
|
41
41
|
}[];
|
|
42
42
|
}>;
|
|
@@ -18,8 +18,7 @@ const scoreEntrySchema = z.object({
|
|
|
18
18
|
.describe("Score from 1 (worst) to 5 (best)"),
|
|
19
19
|
reason: z
|
|
20
20
|
.string()
|
|
21
|
-
.
|
|
22
|
-
.describe("Why this score was given. Required if score < passing threshold."),
|
|
21
|
+
.describe("Why this score was given. REQUIRED for all scores, whether passing or failing."),
|
|
23
22
|
suggestion: z
|
|
24
23
|
.string()
|
|
25
24
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-evaluation.js","sourceRoot":"","sources":["../../../src/tools/submit-evaluation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACvE,KAAK,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kCAAkC,CAAC;IACjD,MAAM,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,
|
|
1
|
+
{"version":3,"file":"submit-evaluation.js","sourceRoot":"","sources":["../../../src/tools/submit-evaluation.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -19,14 +19,14 @@ export interface EvaluationSession {
|
|
|
19
19
|
export interface ScoreEntry {
|
|
20
20
|
id: string;
|
|
21
21
|
score: number;
|
|
22
|
-
reason
|
|
22
|
+
reason: string;
|
|
23
23
|
suggestion?: string;
|
|
24
24
|
}
|
|
25
25
|
export interface EvaluationResult {
|
|
26
26
|
id: string;
|
|
27
27
|
score: number;
|
|
28
28
|
passed: boolean;
|
|
29
|
-
reason
|
|
29
|
+
reason: string;
|
|
30
30
|
suggestion?: string;
|
|
31
31
|
}
|
|
32
32
|
export interface EvaluationOutcome {
|
|
@@ -40,9 +40,27 @@ export interface EvaluationOutcome {
|
|
|
40
40
|
timestamp: string;
|
|
41
41
|
attemptNumber: number;
|
|
42
42
|
}
|
|
43
|
-
export interface
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
export interface LogItemDetail {
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
score: number;
|
|
47
|
+
reason: string;
|
|
48
|
+
suggestion?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface LogEntry {
|
|
51
|
+
meta: {
|
|
52
|
+
sessionId: string;
|
|
53
|
+
timestamp: string;
|
|
54
|
+
screenName: string;
|
|
55
|
+
attemptNumber: number;
|
|
56
|
+
type: EvaluationType;
|
|
57
|
+
};
|
|
58
|
+
summary: {
|
|
59
|
+
passed: boolean;
|
|
60
|
+
averageScore: number;
|
|
61
|
+
};
|
|
62
|
+
failures: LogItemDetail[];
|
|
63
|
+
passes: LogItemDetail[];
|
|
46
64
|
}
|
|
47
65
|
export interface LogSummary {
|
|
48
66
|
totalEvaluations: number;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE;QACF,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,cAAc,CAAC;KACxB,CAAC;IACF,OAAO,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CACX,MAAM,EACN;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CACjE,CAAC;CACL"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wa008/ui-audit-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "MCP server for iOS app UI evaluation and testing, powered by idb + xcrun simctl",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
"README.md",
|
|
13
13
|
"LICENSE"
|
|
14
14
|
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/wa008/ui-audit-mcp.git"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
15
22
|
"scripts": {
|
|
16
23
|
"build": "tsc",
|
|
17
24
|
"dev": "tsc --watch",
|
|
@@ -41,4 +48,4 @@
|
|
|
41
48
|
"@types/uuid": "^10.0.0",
|
|
42
49
|
"typescript": "^5.8.3"
|
|
43
50
|
}
|
|
44
|
-
}
|
|
51
|
+
}
|
package/dist/device/adapter.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Device adapter using idb + xcrun simctl.
|
|
3
|
-
*
|
|
4
|
-
* Dependencies:
|
|
5
|
-
* - xcrun simctl (ships with Xcode CLI tools) → launch app, screenshot
|
|
6
|
-
* - idb (Facebook's iOS Development Bridge) → tap, swipe
|
|
7
|
-
*
|
|
8
|
-
* Install idb:
|
|
9
|
-
* brew install idb-companion
|
|
10
|
-
* pip3 install fb-idb
|
|
11
|
-
*
|
|
12
|
-
* Coordinates use the iOS points system. The adapter accepts ratio
|
|
13
|
-
* coordinates (0-1) and converts them using the screen dimensions
|
|
14
|
-
* obtained from the screenshot.
|
|
15
|
-
*/
|
|
16
|
-
/** Check that required CLI tools are available. */
|
|
17
|
-
export declare function preflight(): Promise<{
|
|
18
|
-
ok: boolean;
|
|
19
|
-
missing: string[];
|
|
20
|
-
}>;
|
|
21
|
-
/** Launch an app by bundle ID on the booted simulator. */
|
|
22
|
-
export declare function launchApp(appId: string): Promise<{
|
|
23
|
-
success: boolean;
|
|
24
|
-
error?: string;
|
|
25
|
-
}>;
|
|
26
|
-
/** Take a screenshot and return base64 PNG + dimensions. */
|
|
27
|
-
export declare function takeScreenshot(): Promise<{
|
|
28
|
-
imageBase64: string;
|
|
29
|
-
width: number;
|
|
30
|
-
height: number;
|
|
31
|
-
filePath: string;
|
|
32
|
-
}>;
|
|
33
|
-
/** Tap at ratio coordinates (0-1). Converts to points using screen size. */
|
|
34
|
-
export declare function tap(ratioX: number, ratioY: number): Promise<{
|
|
35
|
-
success: boolean;
|
|
36
|
-
pointX: number;
|
|
37
|
-
pointY: number;
|
|
38
|
-
error?: string;
|
|
39
|
-
}>;
|
|
40
|
-
/** Swipe using ratio coordinates (0-1). */
|
|
41
|
-
export declare function swipe(startX: number, startY: number, endX: number, endY: number): Promise<{
|
|
42
|
-
success: boolean;
|
|
43
|
-
error?: string;
|
|
44
|
-
}>;
|
|
45
|
-
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/device/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH,mDAAmD;AACnD,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAa7E;AAID,0DAA0D;AAC1D,wBAAsB,SAAS,CAC3B,KAAK,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAcD;AAED,4EAA4E;AAC5E,wBAAsB,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe/E;AAED,2CAA2C;AAC3C,wBAAsB,KAAK,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB/C"}
|