@panicgit/android-test-pilot 0.1.0
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/.claude/skills/atp/analyze-app/SKILL.md +86 -0
- package/.claude/skills/atp/app-map/SKILL.md +36 -0
- package/.claude/skills/atp/check-logs/SKILL.md +77 -0
- package/.claude/skills/atp/run-test/SKILL.md +92 -0
- package/README.ko.md +241 -0
- package/README.md +241 -0
- package/lib/android.d.ts +96 -0
- package/lib/android.js +740 -0
- package/lib/android.js.map +1 -0
- package/lib/image-utils.d.ts +28 -0
- package/lib/image-utils.js +156 -0
- package/lib/image-utils.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +90 -0
- package/lib/index.js.map +1 -0
- package/lib/ios.d.ts +54 -0
- package/lib/ios.js +241 -0
- package/lib/ios.js.map +1 -0
- package/lib/iphone-simulator.d.ts +34 -0
- package/lib/iphone-simulator.js +227 -0
- package/lib/iphone-simulator.js.map +1 -0
- package/lib/logger.d.ts +2 -0
- package/lib/logger.js +23 -0
- package/lib/logger.js.map +1 -0
- package/lib/mobile-device.d.ts +25 -0
- package/lib/mobile-device.js +141 -0
- package/lib/mobile-device.js.map +1 -0
- package/lib/mobilecli.d.ts +32 -0
- package/lib/mobilecli.js +113 -0
- package/lib/mobilecli.js.map +1 -0
- package/lib/png.d.ts +9 -0
- package/lib/png.js +20 -0
- package/lib/png.js.map +1 -0
- package/lib/robot.d.ts +116 -0
- package/lib/robot.js +10 -0
- package/lib/robot.js.map +1 -0
- package/lib/server.d.ts +3 -0
- package/lib/server.js +692 -0
- package/lib/server.js.map +1 -0
- package/lib/tiers/abstract-tier.d.ts +48 -0
- package/lib/tiers/abstract-tier.js +35 -0
- package/lib/tiers/abstract-tier.js.map +1 -0
- package/lib/tiers/screenshot-tier.d.ts +19 -0
- package/lib/tiers/screenshot-tier.js +53 -0
- package/lib/tiers/screenshot-tier.js.map +1 -0
- package/lib/tiers/text-tier.d.ts +20 -0
- package/lib/tiers/text-tier.js +138 -0
- package/lib/tiers/text-tier.js.map +1 -0
- package/lib/tiers/tier-runner.d.ts +27 -0
- package/lib/tiers/tier-runner.js +91 -0
- package/lib/tiers/tier-runner.js.map +1 -0
- package/lib/tiers/types.d.ts +100 -0
- package/lib/tiers/types.js +12 -0
- package/lib/tiers/types.js.map +1 -0
- package/lib/tiers/uiautomator-tier.d.ts +16 -0
- package/lib/tiers/uiautomator-tier.js +91 -0
- package/lib/tiers/uiautomator-tier.js.map +1 -0
- package/lib/utils.d.ts +4 -0
- package/lib/utils.js +81 -0
- package/lib/utils.js.map +1 -0
- package/lib/webdriver-agent.d.ts +45 -0
- package/lib/webdriver-agent.js +400 -0
- package/lib/webdriver-agent.js.map +1 -0
- package/package.json +50 -0
- package/templates/scenario.md +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AbstractTier — Base class for all Tier plugins
|
|
3
|
+
*
|
|
4
|
+
* Each Tier implements two methods:
|
|
5
|
+
* - canHandle(): checks if this Tier can process the current context
|
|
6
|
+
* - execute(): performs the actual observation/interaction and returns a result
|
|
7
|
+
*
|
|
8
|
+
* Tiers are ordered by priority (lower = runs first).
|
|
9
|
+
* TierRunner calls them in sequence until one returns SUCCESS, FAIL, or ERROR.
|
|
10
|
+
*/
|
|
11
|
+
import { TierContext, TierResult } from "./types";
|
|
12
|
+
import { AndroidRobot } from "../android";
|
|
13
|
+
export declare abstract class AbstractTier {
|
|
14
|
+
/** Human-readable name for this Tier (e.g. "text", "uiautomator", "screenshot") */
|
|
15
|
+
abstract readonly name: string;
|
|
16
|
+
/** Execution priority — lower values run first (e.g. 1, 2, 3) */
|
|
17
|
+
abstract readonly priority: number;
|
|
18
|
+
/**
|
|
19
|
+
* Cached AndroidRobot instance.
|
|
20
|
+
* Note: Single-threaded assumption — not safe for concurrent multi-device
|
|
21
|
+
* runs on the same AbstractTier instance. Each TierRunner.run() should use
|
|
22
|
+
* its own tier instances or target a single device.
|
|
23
|
+
*/
|
|
24
|
+
private _robot;
|
|
25
|
+
/**
|
|
26
|
+
* Get or create an AndroidRobot for the given device.
|
|
27
|
+
* Re-creates the robot if the device ID changes.
|
|
28
|
+
*/
|
|
29
|
+
protected getAndroidRobot(context: TierContext): AndroidRobot;
|
|
30
|
+
/**
|
|
31
|
+
* Check whether this Tier can handle the current test step.
|
|
32
|
+
*
|
|
33
|
+
* Return true to proceed with execute(), false to skip to the next Tier.
|
|
34
|
+
*/
|
|
35
|
+
abstract canHandle(context: TierContext): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Execute the Tier's strategy for the current test step.
|
|
38
|
+
*
|
|
39
|
+
* Must return a TierResult with one of these statuses:
|
|
40
|
+
* - SUCCESS: step verified successfully
|
|
41
|
+
* - FAIL: step verification failed
|
|
42
|
+
* - FALLBACK: this Tier couldn't determine the result, try next Tier
|
|
43
|
+
* - ERROR: a runtime error occurred
|
|
44
|
+
*
|
|
45
|
+
* On FALLBACK, include fallbackHint explaining why this Tier couldn't handle it.
|
|
46
|
+
*/
|
|
47
|
+
abstract execute(context: TierContext): Promise<TierResult>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AbstractTier — Base class for all Tier plugins
|
|
4
|
+
*
|
|
5
|
+
* Each Tier implements two methods:
|
|
6
|
+
* - canHandle(): checks if this Tier can process the current context
|
|
7
|
+
* - execute(): performs the actual observation/interaction and returns a result
|
|
8
|
+
*
|
|
9
|
+
* Tiers are ordered by priority (lower = runs first).
|
|
10
|
+
* TierRunner calls them in sequence until one returns SUCCESS, FAIL, or ERROR.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AbstractTier = void 0;
|
|
14
|
+
const android_1 = require("../android");
|
|
15
|
+
class AbstractTier {
|
|
16
|
+
/**
|
|
17
|
+
* Cached AndroidRobot instance.
|
|
18
|
+
* Note: Single-threaded assumption — not safe for concurrent multi-device
|
|
19
|
+
* runs on the same AbstractTier instance. Each TierRunner.run() should use
|
|
20
|
+
* its own tier instances or target a single device.
|
|
21
|
+
*/
|
|
22
|
+
_robot = null;
|
|
23
|
+
/**
|
|
24
|
+
* Get or create an AndroidRobot for the given device.
|
|
25
|
+
* Re-creates the robot if the device ID changes.
|
|
26
|
+
*/
|
|
27
|
+
getAndroidRobot(context) {
|
|
28
|
+
if (!this._robot || context.deviceId !== this._robot.getDeviceId()) {
|
|
29
|
+
this._robot = new android_1.AndroidRobot(context.deviceId);
|
|
30
|
+
}
|
|
31
|
+
return this._robot;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.AbstractTier = AbstractTier;
|
|
35
|
+
//# sourceMappingURL=abstract-tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-tier.js","sourceRoot":"","sources":["../../src/tiers/abstract-tier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAGH,wCAA0C;AAE1C,MAAsB,YAAY;IAOjC;;;;;OAKG;IACK,MAAM,GAAwB,IAAI,CAAC;IAE3C;;;OAGG;IACO,eAAe,CAAC,OAAoB;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACpE,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;CAqBD;AA7CD,oCA6CC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScreenshotTier (Tier 3) — Screenshot-based visual verification
|
|
3
|
+
*
|
|
4
|
+
* Last resort tier. Captures a screenshot and returns it as base64
|
|
5
|
+
* for LLM visual analysis. Always available (canHandle = true).
|
|
6
|
+
*
|
|
7
|
+
* Use cases:
|
|
8
|
+
* - Image rendering verification
|
|
9
|
+
* - Unexpected popup detection
|
|
10
|
+
* - Visual layout validation
|
|
11
|
+
*/
|
|
12
|
+
import { AbstractTier } from "./abstract-tier";
|
|
13
|
+
import { TierContext, TierResult } from "./types";
|
|
14
|
+
export declare class ScreenshotTier extends AbstractTier {
|
|
15
|
+
readonly name = "screenshot";
|
|
16
|
+
readonly priority = 3;
|
|
17
|
+
canHandle(context: TierContext): Promise<boolean>;
|
|
18
|
+
execute(context: TierContext): Promise<TierResult>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ScreenshotTier (Tier 3) — Screenshot-based visual verification
|
|
4
|
+
*
|
|
5
|
+
* Last resort tier. Captures a screenshot and returns it as base64
|
|
6
|
+
* for LLM visual analysis. Always available (canHandle = true).
|
|
7
|
+
*
|
|
8
|
+
* Use cases:
|
|
9
|
+
* - Image rendering verification
|
|
10
|
+
* - Unexpected popup detection
|
|
11
|
+
* - Visual layout validation
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.ScreenshotTier = void 0;
|
|
15
|
+
const abstract_tier_1 = require("./abstract-tier");
|
|
16
|
+
class ScreenshotTier extends abstract_tier_1.AbstractTier {
|
|
17
|
+
name = "screenshot";
|
|
18
|
+
priority = 3;
|
|
19
|
+
async canHandle(context) {
|
|
20
|
+
// Verify device is reachable before attempting screenshot
|
|
21
|
+
try {
|
|
22
|
+
const robot = this.getAndroidRobot(context);
|
|
23
|
+
void robot.adb("shell", "echo", "ping");
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async execute(context) {
|
|
31
|
+
const robot = this.getAndroidRobot(context);
|
|
32
|
+
try {
|
|
33
|
+
const screenshot = await robot.getScreenshot();
|
|
34
|
+
const base64 = screenshot.toString("base64");
|
|
35
|
+
return {
|
|
36
|
+
tier: this.name,
|
|
37
|
+
status: "SUCCESS",
|
|
38
|
+
observation: `Screenshot captured (${screenshot.length} bytes). Visual analysis required for verification: "${context.step.verification}"`,
|
|
39
|
+
rawData: base64,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44
|
+
return {
|
|
45
|
+
tier: this.name,
|
|
46
|
+
status: "ERROR",
|
|
47
|
+
error: `Screenshot capture failed: ${message}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ScreenshotTier = ScreenshotTier;
|
|
53
|
+
//# sourceMappingURL=screenshot-tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-tier.js","sourceRoot":"","sources":["../../src/tiers/screenshot-tier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,mDAA+C;AAG/C,MAAa,cAAe,SAAQ,4BAAY;IACtC,IAAI,GAAG,YAAY,CAAC;IACpB,QAAQ,GAAG,CAAC,CAAC;IAEtB,KAAK,CAAC,SAAS,CAAC,OAAoB;QACnC,0DAA0D;QAC1D,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE7C,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,wBAAwB,UAAU,CAAC,MAAM,wDAAwD,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG;gBAC1I,OAAO,EAAE,MAAM;aACf,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,8BAA8B,OAAO,EAAE;aAC9C,CAAC;QACH,CAAC;IACF,CAAC;CACD;AArCD,wCAqCC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TextTier (Tier 1) — Text-based device state detection
|
|
3
|
+
*
|
|
4
|
+
* Combines dumpsys and logcat to determine app state without screenshots.
|
|
5
|
+
* This is the cheapest and fastest tier — all data is plain text.
|
|
6
|
+
*
|
|
7
|
+
* Data sources:
|
|
8
|
+
* - dumpsys activity: current foreground Activity
|
|
9
|
+
* - dumpsys window: current focused window
|
|
10
|
+
* - logcat (ATP_ tags): screen transitions, View state, API responses
|
|
11
|
+
*/
|
|
12
|
+
import { AbstractTier } from "./abstract-tier";
|
|
13
|
+
import { TierContext, TierResult } from "./types";
|
|
14
|
+
export declare class TextTier extends AbstractTier {
|
|
15
|
+
readonly name = "text";
|
|
16
|
+
readonly priority = 1;
|
|
17
|
+
canHandle(context: TierContext): Promise<boolean>;
|
|
18
|
+
execute(context: TierContext): Promise<TierResult>;
|
|
19
|
+
private findSessionForDevice;
|
|
20
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TextTier (Tier 1) — Text-based device state detection
|
|
4
|
+
*
|
|
5
|
+
* Combines dumpsys and logcat to determine app state without screenshots.
|
|
6
|
+
* This is the cheapest and fastest tier — all data is plain text.
|
|
7
|
+
*
|
|
8
|
+
* Data sources:
|
|
9
|
+
* - dumpsys activity: current foreground Activity
|
|
10
|
+
* - dumpsys window: current focused window
|
|
11
|
+
* - logcat (ATP_ tags): screen transitions, View state, API responses
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.TextTier = void 0;
|
|
15
|
+
const abstract_tier_1 = require("./abstract-tier");
|
|
16
|
+
const android_1 = require("../android");
|
|
17
|
+
class TextTier extends abstract_tier_1.AbstractTier {
|
|
18
|
+
name = "text";
|
|
19
|
+
priority = 1;
|
|
20
|
+
async canHandle(context) {
|
|
21
|
+
try {
|
|
22
|
+
const robot = this.getAndroidRobot(context);
|
|
23
|
+
// Verify device is reachable by running a lightweight ADB command
|
|
24
|
+
void robot.adb("shell", "echo", "ping");
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async execute(context) {
|
|
32
|
+
const robot = this.getAndroidRobot(context);
|
|
33
|
+
const observations = [];
|
|
34
|
+
// 1. Collect dumpsys info (FALLBACK on ADB failure)
|
|
35
|
+
let activityInfo;
|
|
36
|
+
let windowInfo;
|
|
37
|
+
try {
|
|
38
|
+
activityInfo = robot.getDumpsysActivity();
|
|
39
|
+
windowInfo = robot.getDumpsysWindow();
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
43
|
+
return {
|
|
44
|
+
tier: this.name,
|
|
45
|
+
status: "FALLBACK",
|
|
46
|
+
fallbackHint: `dumpsys failed: ${message}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
observations.push(`activity: ${activityInfo}`);
|
|
50
|
+
observations.push(`window: ${windowInfo}`);
|
|
51
|
+
// 2. Check logcat expectations if defined
|
|
52
|
+
const expectedLogcat = context.step.expectedLogcat;
|
|
53
|
+
if (!expectedLogcat || expectedLogcat.length === 0) {
|
|
54
|
+
// No logcat expectations — return dumpsys observations only
|
|
55
|
+
return {
|
|
56
|
+
tier: this.name,
|
|
57
|
+
status: "SUCCESS",
|
|
58
|
+
observation: observations.join("\n"),
|
|
59
|
+
rawData: JSON.stringify({ activityInfo, windowInfo }),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// 3. Find active logcat session for this device
|
|
63
|
+
// Look through sessions for one matching this device
|
|
64
|
+
const session = this.findSessionForDevice(context.deviceId);
|
|
65
|
+
if (!session) {
|
|
66
|
+
return {
|
|
67
|
+
tier: this.name,
|
|
68
|
+
status: "FALLBACK",
|
|
69
|
+
fallbackHint: "No active logcat session for this device. Start one with atp_logcat_start.",
|
|
70
|
+
observation: observations.join("\n"),
|
|
71
|
+
rawData: JSON.stringify({ activityInfo, windowInfo }),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// 4. Parse logcat buffer for expected patterns
|
|
75
|
+
const logLines = session.buffer;
|
|
76
|
+
const matchResults = [];
|
|
77
|
+
for (const expected of expectedLogcat) {
|
|
78
|
+
let regex;
|
|
79
|
+
try {
|
|
80
|
+
regex = new RegExp(expected.pattern);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Invalid regex pattern — treat as unmatched
|
|
84
|
+
matchResults.push({ tag: expected.tag, pattern: expected.pattern, matched: false });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const matchingLine = logLines.find(line => line.includes(expected.tag) && regex.test(line));
|
|
88
|
+
matchResults.push({
|
|
89
|
+
tag: expected.tag,
|
|
90
|
+
pattern: expected.pattern,
|
|
91
|
+
matched: !!matchingLine,
|
|
92
|
+
line: matchingLine,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const allMatched = matchResults.every(r => r.matched);
|
|
96
|
+
observations.push(`logcat matches: ${matchResults.filter(r => r.matched).length}/${matchResults.length}`);
|
|
97
|
+
if (allMatched) {
|
|
98
|
+
return {
|
|
99
|
+
tier: this.name,
|
|
100
|
+
status: "SUCCESS",
|
|
101
|
+
observation: observations.join("\n"),
|
|
102
|
+
verification: {
|
|
103
|
+
passed: true,
|
|
104
|
+
expected: matchResults.map(r => `${r.tag}: ${r.pattern}`).join(", "),
|
|
105
|
+
actual: matchResults.map(r => r.line || "").join(", "),
|
|
106
|
+
},
|
|
107
|
+
rawData: JSON.stringify({ activityInfo, windowInfo, matchResults }),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (logLines.length === 0) {
|
|
111
|
+
// No logs at all — FALLBACK to next tier
|
|
112
|
+
return {
|
|
113
|
+
tier: this.name,
|
|
114
|
+
status: "FALLBACK",
|
|
115
|
+
fallbackHint: "Logcat buffer is empty — ATP logs may not be instrumented",
|
|
116
|
+
observation: observations.join("\n"),
|
|
117
|
+
rawData: JSON.stringify({ activityInfo, windowInfo, matchResults }),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Some or no matches with logs present — this is a verification failure
|
|
121
|
+
return {
|
|
122
|
+
tier: this.name,
|
|
123
|
+
status: "FAIL",
|
|
124
|
+
observation: observations.join("\n"),
|
|
125
|
+
verification: {
|
|
126
|
+
passed: false,
|
|
127
|
+
expected: matchResults.map(r => `${r.tag}: ${r.pattern}`).join(", "),
|
|
128
|
+
actual: matchResults.filter(r => !r.matched).map(r => `${r.tag}: NOT FOUND`).join(", "),
|
|
129
|
+
},
|
|
130
|
+
rawData: JSON.stringify({ activityInfo, windowInfo, matchResults }),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
findSessionForDevice(deviceId) {
|
|
134
|
+
return android_1.AndroidRobot.getSessionByDevice(deviceId);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.TextTier = TextTier;
|
|
138
|
+
//# sourceMappingURL=text-tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-tier.js","sourceRoot":"","sources":["../../src/tiers/text-tier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TierRunner — Chain executor for Tier plugins
|
|
3
|
+
*
|
|
4
|
+
* Runs Tiers in priority order:
|
|
5
|
+
* 1. canHandle() → false? skip to next Tier
|
|
6
|
+
* 2. execute() → FALLBACK? pass result to next Tier
|
|
7
|
+
* 3. SUCCESS/FAIL/ERROR → return immediately
|
|
8
|
+
* 4. All Tiers exhausted → return ERROR
|
|
9
|
+
*/
|
|
10
|
+
import { AbstractTier } from "./abstract-tier";
|
|
11
|
+
import { TierContext, TierResult } from "./types";
|
|
12
|
+
export declare class TierRunner {
|
|
13
|
+
private readonly tiers;
|
|
14
|
+
constructor(tiers: AbstractTier[]);
|
|
15
|
+
/**
|
|
16
|
+
* Run the Tier chain for a given test step context.
|
|
17
|
+
*
|
|
18
|
+
* Iterates through Tiers in priority order:
|
|
19
|
+
* - Calls canHandle() first; skips if false
|
|
20
|
+
* - Calls execute(); returns on SUCCESS/FAIL/ERROR
|
|
21
|
+
* - On FALLBACK, passes the result as previousTierResult to the next Tier
|
|
22
|
+
* - If all Tiers are exhausted, returns an ERROR result
|
|
23
|
+
*/
|
|
24
|
+
run(context: TierContext): Promise<TierResult>;
|
|
25
|
+
/** Return the registered Tiers in priority order (for debugging/testing) */
|
|
26
|
+
getTiers(): readonly AbstractTier[];
|
|
27
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TierRunner — Chain executor for Tier plugins
|
|
4
|
+
*
|
|
5
|
+
* Runs Tiers in priority order:
|
|
6
|
+
* 1. canHandle() → false? skip to next Tier
|
|
7
|
+
* 2. execute() → FALLBACK? pass result to next Tier
|
|
8
|
+
* 3. SUCCESS/FAIL/ERROR → return immediately
|
|
9
|
+
* 4. All Tiers exhausted → return ERROR
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TierRunner = void 0;
|
|
13
|
+
const logger_1 = require("../logger");
|
|
14
|
+
class TierRunner {
|
|
15
|
+
tiers;
|
|
16
|
+
constructor(tiers) {
|
|
17
|
+
// Sort by priority (lower = runs first)
|
|
18
|
+
this.tiers = [...tiers].sort((a, b) => a.priority - b.priority);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run the Tier chain for a given test step context.
|
|
22
|
+
*
|
|
23
|
+
* Iterates through Tiers in priority order:
|
|
24
|
+
* - Calls canHandle() first; skips if false
|
|
25
|
+
* - Calls execute(); returns on SUCCESS/FAIL/ERROR
|
|
26
|
+
* - On FALLBACK, passes the result as previousTierResult to the next Tier
|
|
27
|
+
* - If all Tiers are exhausted, returns an ERROR result
|
|
28
|
+
*/
|
|
29
|
+
async run(context) {
|
|
30
|
+
let currentContext = { ...context };
|
|
31
|
+
for (const tier of this.tiers) {
|
|
32
|
+
(0, logger_1.trace)(`TierRunner: checking ${tier.name} (priority=${tier.priority})`);
|
|
33
|
+
let canHandle;
|
|
34
|
+
try {
|
|
35
|
+
canHandle = await tier.canHandle(currentContext);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
39
|
+
(0, logger_1.trace)(`TierRunner: ${tier.name}.canHandle() threw: ${message}`);
|
|
40
|
+
return {
|
|
41
|
+
tier: tier.name,
|
|
42
|
+
status: "ERROR",
|
|
43
|
+
error: `canHandle() failed: ${message}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (!canHandle) {
|
|
47
|
+
(0, logger_1.trace)(`TierRunner: ${tier.name} cannot handle, skipping`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
(0, logger_1.trace)(`TierRunner: executing ${tier.name}`);
|
|
51
|
+
let result;
|
|
52
|
+
try {
|
|
53
|
+
result = await tier.execute(currentContext);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
57
|
+
(0, logger_1.trace)(`TierRunner: ${tier.name}.execute() threw: ${message}`);
|
|
58
|
+
return {
|
|
59
|
+
tier: tier.name,
|
|
60
|
+
status: "ERROR",
|
|
61
|
+
error: `execute() failed: ${message}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (result.status === "FALLBACK") {
|
|
65
|
+
(0, logger_1.trace)(`TierRunner: ${tier.name} returned FALLBACK — ${result.fallbackHint || "no hint"}`);
|
|
66
|
+
// Pass this result to the next Tier as context
|
|
67
|
+
currentContext = {
|
|
68
|
+
...currentContext,
|
|
69
|
+
previousTierResult: result,
|
|
70
|
+
};
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// SUCCESS, FAIL, or ERROR — return immediately
|
|
74
|
+
(0, logger_1.trace)(`TierRunner: ${tier.name} returned ${result.status}`);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
// All Tiers exhausted
|
|
78
|
+
(0, logger_1.trace)("TierRunner: all tiers exhausted");
|
|
79
|
+
return {
|
|
80
|
+
tier: "none",
|
|
81
|
+
status: "ERROR",
|
|
82
|
+
error: "All tiers exhausted — no tier could handle this step",
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Return the registered Tiers in priority order (for debugging/testing) */
|
|
86
|
+
getTiers() {
|
|
87
|
+
return this.tiers;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.TierRunner = TierRunner;
|
|
91
|
+
//# sourceMappingURL=tier-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-runner.js","sourceRoot":"","sources":["../../src/tiers/tier-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier Plugin System — Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the data structures shared across all Tier plugins:
|
|
5
|
+
* - TierContext: input context for each Tier execution
|
|
6
|
+
* - TierResult: output from a Tier execution
|
|
7
|
+
* - TierStatus: possible execution outcomes
|
|
8
|
+
* - Supporting types for Step 0 artifacts (ApiScenario, ViewStateScreen)
|
|
9
|
+
*/
|
|
10
|
+
/** API scenario extracted by Step 0-B */
|
|
11
|
+
export interface ApiScenario {
|
|
12
|
+
endpoint: string;
|
|
13
|
+
interfaceFile: string;
|
|
14
|
+
callers: Array<{
|
|
15
|
+
file: string;
|
|
16
|
+
successHandler: string;
|
|
17
|
+
errorHandler: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
/** View state mapping extracted by Step 0-C */
|
|
21
|
+
export interface ViewStateScreen {
|
|
22
|
+
name: string;
|
|
23
|
+
file: string;
|
|
24
|
+
states: Array<{
|
|
25
|
+
viewId: string;
|
|
26
|
+
visibilityCondition: string;
|
|
27
|
+
dataSource: string;
|
|
28
|
+
sourceFile: string;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
/** ATP log tags inserted by Step 1 */
|
|
32
|
+
export type AtpLogTag = "ATP_SCREEN" | "ATP_RENDER" | "ATP_API";
|
|
33
|
+
/** Expected logcat entry in a test step */
|
|
34
|
+
export interface ExpectedLogcat {
|
|
35
|
+
tag: AtpLogTag;
|
|
36
|
+
pattern: string;
|
|
37
|
+
}
|
|
38
|
+
/** Tap target for UI interaction */
|
|
39
|
+
export interface TapTarget {
|
|
40
|
+
resourceId?: string;
|
|
41
|
+
coordinates?: {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** A single test step parsed from a scenario file */
|
|
47
|
+
export interface TestStep {
|
|
48
|
+
action: string;
|
|
49
|
+
expectedLogcat?: ExpectedLogcat[];
|
|
50
|
+
tapTarget?: TapTarget;
|
|
51
|
+
verification: string;
|
|
52
|
+
}
|
|
53
|
+
/** Step 0 artifacts loaded from .claude/app-map/ */
|
|
54
|
+
export interface AppMap {
|
|
55
|
+
navigationMap: string;
|
|
56
|
+
apiScenarios: ApiScenario[];
|
|
57
|
+
viewStateMap: ViewStateScreen[];
|
|
58
|
+
}
|
|
59
|
+
/** Context passed to each Tier's canHandle() and execute() */
|
|
60
|
+
export interface TierContext {
|
|
61
|
+
/** ADB device ID */
|
|
62
|
+
deviceId: string;
|
|
63
|
+
/** Current test step */
|
|
64
|
+
step: TestStep;
|
|
65
|
+
/** Step 0 artifacts */
|
|
66
|
+
appMap: AppMap;
|
|
67
|
+
/** Result from the previous Tier (if any, on FALLBACK) */
|
|
68
|
+
previousTierResult?: TierResult;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tier execution status:
|
|
72
|
+
* - SUCCESS: Tier resolved the step, verification passed
|
|
73
|
+
* - FAIL: Tier resolved the step, verification failed
|
|
74
|
+
* - FALLBACK: Tier cannot handle this step, delegate to next Tier
|
|
75
|
+
* - ERROR: Tier encountered a runtime error
|
|
76
|
+
*/
|
|
77
|
+
export type TierStatus = "SUCCESS" | "FAIL" | "FALLBACK" | "ERROR";
|
|
78
|
+
/** Verification outcome within a TierResult */
|
|
79
|
+
export interface TierVerification {
|
|
80
|
+
passed: boolean;
|
|
81
|
+
expected: string;
|
|
82
|
+
actual: string;
|
|
83
|
+
}
|
|
84
|
+
/** Result returned by a Tier's execute() method */
|
|
85
|
+
export interface TierResult {
|
|
86
|
+
/** Name of the Tier that produced this result */
|
|
87
|
+
tier: string;
|
|
88
|
+
/** Execution status */
|
|
89
|
+
status: TierStatus;
|
|
90
|
+
/** What the Tier observed (on SUCCESS or FAIL) */
|
|
91
|
+
observation?: string;
|
|
92
|
+
/** Verification details (on SUCCESS or FAIL) */
|
|
93
|
+
verification?: TierVerification;
|
|
94
|
+
/** Hint for the next Tier (on FALLBACK) */
|
|
95
|
+
fallbackHint?: string;
|
|
96
|
+
/** Error message (on ERROR) */
|
|
97
|
+
error?: string;
|
|
98
|
+
/** Raw data collected (logs, XML dump, etc.) */
|
|
99
|
+
rawData?: string;
|
|
100
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tier Plugin System — Type Definitions
|
|
4
|
+
*
|
|
5
|
+
* Defines the data structures shared across all Tier plugins:
|
|
6
|
+
* - TierContext: input context for each Tier execution
|
|
7
|
+
* - TierResult: output from a Tier execution
|
|
8
|
+
* - TierStatus: possible execution outcomes
|
|
9
|
+
* - Supporting types for Step 0 artifacts (ApiScenario, ViewStateScreen)
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tiers/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|