@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.
Files changed (65) hide show
  1. package/.claude/skills/atp/analyze-app/SKILL.md +86 -0
  2. package/.claude/skills/atp/app-map/SKILL.md +36 -0
  3. package/.claude/skills/atp/check-logs/SKILL.md +77 -0
  4. package/.claude/skills/atp/run-test/SKILL.md +92 -0
  5. package/README.ko.md +241 -0
  6. package/README.md +241 -0
  7. package/lib/android.d.ts +96 -0
  8. package/lib/android.js +740 -0
  9. package/lib/android.js.map +1 -0
  10. package/lib/image-utils.d.ts +28 -0
  11. package/lib/image-utils.js +156 -0
  12. package/lib/image-utils.js.map +1 -0
  13. package/lib/index.d.ts +2 -0
  14. package/lib/index.js +90 -0
  15. package/lib/index.js.map +1 -0
  16. package/lib/ios.d.ts +54 -0
  17. package/lib/ios.js +241 -0
  18. package/lib/ios.js.map +1 -0
  19. package/lib/iphone-simulator.d.ts +34 -0
  20. package/lib/iphone-simulator.js +227 -0
  21. package/lib/iphone-simulator.js.map +1 -0
  22. package/lib/logger.d.ts +2 -0
  23. package/lib/logger.js +23 -0
  24. package/lib/logger.js.map +1 -0
  25. package/lib/mobile-device.d.ts +25 -0
  26. package/lib/mobile-device.js +141 -0
  27. package/lib/mobile-device.js.map +1 -0
  28. package/lib/mobilecli.d.ts +32 -0
  29. package/lib/mobilecli.js +113 -0
  30. package/lib/mobilecli.js.map +1 -0
  31. package/lib/png.d.ts +9 -0
  32. package/lib/png.js +20 -0
  33. package/lib/png.js.map +1 -0
  34. package/lib/robot.d.ts +116 -0
  35. package/lib/robot.js +10 -0
  36. package/lib/robot.js.map +1 -0
  37. package/lib/server.d.ts +3 -0
  38. package/lib/server.js +692 -0
  39. package/lib/server.js.map +1 -0
  40. package/lib/tiers/abstract-tier.d.ts +48 -0
  41. package/lib/tiers/abstract-tier.js +35 -0
  42. package/lib/tiers/abstract-tier.js.map +1 -0
  43. package/lib/tiers/screenshot-tier.d.ts +19 -0
  44. package/lib/tiers/screenshot-tier.js +53 -0
  45. package/lib/tiers/screenshot-tier.js.map +1 -0
  46. package/lib/tiers/text-tier.d.ts +20 -0
  47. package/lib/tiers/text-tier.js +138 -0
  48. package/lib/tiers/text-tier.js.map +1 -0
  49. package/lib/tiers/tier-runner.d.ts +27 -0
  50. package/lib/tiers/tier-runner.js +91 -0
  51. package/lib/tiers/tier-runner.js.map +1 -0
  52. package/lib/tiers/types.d.ts +100 -0
  53. package/lib/tiers/types.js +12 -0
  54. package/lib/tiers/types.js.map +1 -0
  55. package/lib/tiers/uiautomator-tier.d.ts +16 -0
  56. package/lib/tiers/uiautomator-tier.js +91 -0
  57. package/lib/tiers/uiautomator-tier.js.map +1 -0
  58. package/lib/utils.d.ts +4 -0
  59. package/lib/utils.js +81 -0
  60. package/lib/utils.js.map +1 -0
  61. package/lib/webdriver-agent.d.ts +45 -0
  62. package/lib/webdriver-agent.js +400 -0
  63. package/lib/webdriver-agent.js.map +1 -0
  64. package/package.json +50 -0
  65. 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"}