@aiscene/aiserver 1.8.8 → 1.9.1
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/core/ai-memory.d.ts +6 -1
- package/dist/core/ai-memory.d.ts.map +1 -1
- package/dist/core/ai-memory.js +57 -5
- package/dist/core/ai-memory.js.map +1 -1
- package/dist/debug/types.d.ts +1 -0
- package/dist/debug/types.d.ts.map +1 -1
- package/dist/debug/websocket-server.d.ts +2 -0
- package/dist/debug/websocket-server.d.ts.map +1 -1
- package/dist/debug/websocket-server.js +183 -47
- package/dist/debug/websocket-server.js.map +1 -1
- package/dist/executor/action-executor.js +1 -1
- package/dist/executor/action-executor.js.map +1 -1
- package/dist/executor/android-executor.js +1 -1
- package/dist/executor/android-executor.js.map +1 -1
- package/dist/executor/cli-executor.js +1 -1
- package/dist/executor/cli-executor.js.map +1 -1
- package/dist/executor/ios-executor.js +1 -1
- package/dist/executor/ios-executor.js.map +1 -1
- package/dist/task/poller.d.ts.map +1 -1
- package/dist/task/poller.js +2 -0
- package/dist/task/poller.js.map +1 -1
- package/package.json +4 -3
package/dist/core/ai-memory.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
export interface AiMemorySource {
|
|
2
|
+
type?: unknown;
|
|
3
|
+
platform?: unknown;
|
|
4
|
+
appId?: unknown;
|
|
5
|
+
packageName?: unknown;
|
|
6
|
+
bundleId?: unknown;
|
|
2
7
|
aiMemory?: unknown;
|
|
3
8
|
memory?: unknown;
|
|
4
9
|
memoryScope?: unknown;
|
|
5
10
|
}
|
|
6
11
|
export declare function normalizeAiMemory(source: AiMemorySource | undefined): string[];
|
|
7
|
-
export declare function applyAiMemory(agentConfig: Record<string, unknown>, source: AiMemorySource | undefined): Record<string, unknown>;
|
|
12
|
+
export declare function applyAiMemory(agentConfig: Record<string, unknown>, source: AiMemorySource | undefined, log?: (message: string) => void): Record<string, unknown>;
|
|
8
13
|
//# sourceMappingURL=ai-memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-memory.d.ts","sourceRoot":"","sources":["../../src/core/ai-memory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"ai-memory.d.ts","sourceRoot":"","sources":["../../src/core/ai-memory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAaD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,CAQ9E;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
|
package/dist/core/ai-memory.js
CHANGED
|
@@ -1,20 +1,72 @@
|
|
|
1
|
+
const LOCAL_TEMP_AI_MEMORY = [
|
|
2
|
+
{
|
|
3
|
+
platform: 'android',
|
|
4
|
+
appId: 'com.jd.dh',
|
|
5
|
+
items: [
|
|
6
|
+
'侧边悬浮的知医派单中是知医功能入口,不是页面引导',
|
|
7
|
+
'测试助手是测试包辅助工具,不能跟业务混淆',
|
|
8
|
+
],
|
|
9
|
+
},
|
|
10
|
+
];
|
|
1
11
|
export function normalizeAiMemory(source) {
|
|
2
12
|
const raw = source?.aiMemory ?? source?.memory;
|
|
3
13
|
const values = Array.isArray(raw) ? raw : raw == null ? [] : [raw];
|
|
4
|
-
|
|
14
|
+
const incoming = values
|
|
5
15
|
.map((item) => String(item ?? '').trim())
|
|
6
16
|
.filter(Boolean);
|
|
17
|
+
const local = resolveLocalTempAiMemory(source);
|
|
18
|
+
return uniqueMemory([...incoming, ...local.items]);
|
|
7
19
|
}
|
|
8
|
-
export function applyAiMemory(agentConfig, source) {
|
|
20
|
+
export function applyAiMemory(agentConfig, source, log) {
|
|
9
21
|
const memory = normalizeAiMemory(source);
|
|
10
|
-
|
|
22
|
+
const local = resolveLocalTempAiMemory(source);
|
|
23
|
+
const message = '[AI Memory] applied ' + JSON.stringify({
|
|
11
24
|
count: memory.length,
|
|
12
|
-
scope: source?.memoryScope || null,
|
|
25
|
+
scope: source?.memoryScope || local.scope || null,
|
|
26
|
+
localTempCount: local.items.length,
|
|
13
27
|
items: memory,
|
|
14
|
-
})
|
|
28
|
+
});
|
|
29
|
+
console.info(message);
|
|
30
|
+
log?.(message);
|
|
15
31
|
if (memory.length > 0) {
|
|
16
32
|
agentConfig.memory = memory;
|
|
17
33
|
}
|
|
18
34
|
return agentConfig;
|
|
19
35
|
}
|
|
36
|
+
function resolveLocalTempAiMemory(source) {
|
|
37
|
+
const platform = normalizeText(source?.platform || source?.type);
|
|
38
|
+
const appId = normalizeText(source?.appId || source?.packageName || source?.bundleId);
|
|
39
|
+
const matched = LOCAL_TEMP_AI_MEMORY.find((item) => {
|
|
40
|
+
if (item.platform !== platform && !(item.platform === 'android' && platform === 'action')) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return item.appId === appId;
|
|
44
|
+
});
|
|
45
|
+
if (!matched) {
|
|
46
|
+
return { items: [], scope: null };
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
items: matched.items,
|
|
50
|
+
scope: {
|
|
51
|
+
platform: matched.platform,
|
|
52
|
+
appId: matched.appId,
|
|
53
|
+
scopeType: 'aiserver_local_temp',
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function normalizeText(value) {
|
|
58
|
+
return String(value ?? '').trim().toLowerCase();
|
|
59
|
+
}
|
|
60
|
+
function uniqueMemory(items) {
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
const result = [];
|
|
63
|
+
for (const item of items) {
|
|
64
|
+
if (seen.has(item)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
seen.add(item);
|
|
68
|
+
result.push(item);
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
20
72
|
//# sourceMappingURL=ai-memory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-memory.js","sourceRoot":"","sources":["../../src/core/ai-memory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai-memory.js","sourceRoot":"","sources":["../../src/core/ai-memory.ts"],"names":[],"mappings":"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"}
|
package/dist/debug/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,6 +80,8 @@ export declare class DebugWebSocketServer {
|
|
|
80
80
|
private handleExecuteWebAction;
|
|
81
81
|
private batchAbortControllers;
|
|
82
82
|
private handleBatchAction;
|
|
83
|
+
private getNextBatchRequests;
|
|
84
|
+
private continueNextLoopBatches;
|
|
83
85
|
/** 批次执行 - 单条 Web 用例 */
|
|
84
86
|
private executeBatchWebCase;
|
|
85
87
|
/** 批次执行 - 单条 App (Android/iOS) 用例 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/debug/websocket-server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsBrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA0B1D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,qBAAqB,CAA0B;IAGvD,OAAO,CAAC,kBAAkB,CAA0C;IAEpE,OAAO,CAAC,uBAAuB,CAA0C;IAGzE,+CAA+C;IAC/C,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,6DAA6D;IAC7D,OAAO,CAAC,wBAAwB,CAAgE;IAChG,6CAA6C;IAC7C,OAAO,CAAC,uBAAuB,CAA6E;IAC5G,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAA+B;gBAE5C,IAAI,GAAE,MAAa;IAI/B,8CAA8C;IAC9C,OAAO,CAAC,eAAe;IAMvB,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB;IAI1B,8BAA8B;IAC9B,OAAO,CAAC,oBAAoB;IAI5B,qCAAqC;IACrC,OAAO,CAAC,iBAAiB;IAenB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ElD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,uBAAuB;YAuDjB,aAAa;YAuDb,kBAAkB;IAwGhC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,yBAAyB;IAWjC,4CAA4C;IAC5C,OAAO,CAAC,YAAY;YAMN,gBAAgB;IAiD9B;;;;;OAKG;YACW,mBAAmB;IAiQjC;;OAEG;YACW,gBAAgB;IAyC9B,6CAA6C;YAC/B,uBAAuB;IAkJrC,uCAAuC;YACzB,wBAAwB;YAwKxB,mBAAmB;YAuNnB,kBAAkB;IAgQhC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;YAQV,oBAAoB;YAKpB,WAAW;YAmDX,sBAAsB;IAwfpC,OAAO,CAAC,qBAAqB,CAAsC;YAErD,iBAAiB;
|
|
1
|
+
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/debug/websocket-server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsBrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA0B1D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,qBAAqB,CAA0B;IAGvD,OAAO,CAAC,kBAAkB,CAA0C;IAEpE,OAAO,CAAC,uBAAuB,CAA0C;IAGzE,+CAA+C;IAC/C,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,6DAA6D;IAC7D,OAAO,CAAC,wBAAwB,CAAgE;IAChG,6CAA6C;IAC7C,OAAO,CAAC,uBAAuB,CAA6E;IAC5G,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAA+B;gBAE5C,IAAI,GAAE,MAAa;IAI/B,8CAA8C;IAC9C,OAAO,CAAC,eAAe;IAMvB,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB;IAI1B,8BAA8B;IAC9B,OAAO,CAAC,oBAAoB;IAI5B,qCAAqC;IACrC,OAAO,CAAC,iBAAiB;IAenB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ElD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,uBAAuB;YAuDjB,aAAa;YAuDb,kBAAkB;IAwGhC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,yBAAyB;IAWjC,4CAA4C;IAC5C,OAAO,CAAC,YAAY;YAMN,gBAAgB;IAiD9B;;;;;OAKG;YACW,mBAAmB;IAiQjC;;OAEG;YACW,gBAAgB;IAyC9B,6CAA6C;YAC/B,uBAAuB;IAkJrC,uCAAuC;YACzB,wBAAwB;YAwKxB,mBAAmB;YAuNnB,kBAAkB;IAgQhC,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;YAQV,oBAAoB;YAKpB,WAAW;YAmDX,sBAAsB;IAwfpC,OAAO,CAAC,qBAAqB,CAAsC;YAErD,iBAAiB;IAwM/B,OAAO,CAAC,oBAAoB;YAiBd,uBAAuB;IAqCrC,uBAAuB;YACT,mBAAmB;IAiPjC,qCAAqC;YACvB,mBAAmB;YA+InB,eAAe;YAiBf,qBAAqB;YA4BrB,oBAAoB;YAuBpB,eAAe;YAqDf,qBAAqB;YAqBrB,eAAe;YAgIf,aAAa;IAU3B;;OAEG;YACW,gBAAgB;IA2B9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;YAgFV,iBAAiB;IAiE/B,OAAO,CAAC,WAAW;IA2DnB,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IAEH;;;OAGG;YACW,wBAAwB;YAqCxB,cAAc;IA4B5B,WAAW,IAAI,YAAY,EAAE;IAIvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
|
|
@@ -2135,6 +2135,7 @@ export class DebugWebSocketServer {
|
|
|
2135
2135
|
platform,
|
|
2136
2136
|
});
|
|
2137
2137
|
const results = [];
|
|
2138
|
+
const callbackFailures = [];
|
|
2138
2139
|
// Web 相关状态
|
|
2139
2140
|
let browserLaunched = false;
|
|
2140
2141
|
let sharedSessionId = '';
|
|
@@ -2156,11 +2157,21 @@ export class DebugWebSocketServer {
|
|
|
2156
2157
|
caseIndex: i,
|
|
2157
2158
|
totalCases: cases.length,
|
|
2158
2159
|
});
|
|
2159
|
-
|
|
2160
|
+
const runningCallbackPath = `/test-batches/${encodeURIComponent(batchId)}/items/${encodeURIComponent(tc.id)}`;
|
|
2161
|
+
const runningCallback = await this.postBatchCallback(request, runningCallbackPath, {
|
|
2160
2162
|
status: 'running',
|
|
2161
2163
|
caseIndex: i,
|
|
2162
2164
|
totalCases: cases.length,
|
|
2163
2165
|
});
|
|
2166
|
+
if (!runningCallback.ok && !runningCallback.skipped) {
|
|
2167
|
+
callbackFailures.push({
|
|
2168
|
+
stage: 'case_started',
|
|
2169
|
+
caseId: tc.id,
|
|
2170
|
+
path: runningCallbackPath,
|
|
2171
|
+
status: runningCallback.status,
|
|
2172
|
+
error: runningCallback.error,
|
|
2173
|
+
});
|
|
2174
|
+
}
|
|
2164
2175
|
let caseSuccess = false;
|
|
2165
2176
|
let caseError;
|
|
2166
2177
|
let caseReportUrl;
|
|
@@ -2217,7 +2228,8 @@ export class DebugWebSocketServer {
|
|
|
2217
2228
|
reportUrl: caseReportUrl,
|
|
2218
2229
|
captureDataUrl: caseCaptureDataUrl,
|
|
2219
2230
|
});
|
|
2220
|
-
|
|
2231
|
+
const completedCallbackPath = `/test-batches/${encodeURIComponent(batchId)}/items/${encodeURIComponent(tc.id)}`;
|
|
2232
|
+
const completedCallback = await this.postBatchCallback(request, completedCallbackPath, {
|
|
2221
2233
|
status: caseSuccess ? 'completed' : 'failed',
|
|
2222
2234
|
success: caseSuccess,
|
|
2223
2235
|
error: caseError,
|
|
@@ -2227,6 +2239,15 @@ export class DebugWebSocketServer {
|
|
|
2227
2239
|
deviceId: tc.deviceId || request.deviceId,
|
|
2228
2240
|
durationMs: Date.now() - caseStartedAt,
|
|
2229
2241
|
});
|
|
2242
|
+
if (!completedCallback.ok && !completedCallback.skipped) {
|
|
2243
|
+
callbackFailures.push({
|
|
2244
|
+
stage: 'case_completed',
|
|
2245
|
+
caseId: tc.id,
|
|
2246
|
+
path: completedCallbackPath,
|
|
2247
|
+
status: completedCallback.status,
|
|
2248
|
+
error: completedCallback.error,
|
|
2249
|
+
});
|
|
2250
|
+
}
|
|
2230
2251
|
}
|
|
2231
2252
|
}
|
|
2232
2253
|
finally {
|
|
@@ -2239,20 +2260,80 @@ export class DebugWebSocketServer {
|
|
|
2239
2260
|
}
|
|
2240
2261
|
catch { /* ignore */ }
|
|
2241
2262
|
}
|
|
2242
|
-
|
|
2243
|
-
this.
|
|
2244
|
-
|
|
2245
|
-
batchId,
|
|
2263
|
+
const finalizeCallbackPath = `/test-batches/${encodeURIComponent(batchId)}/finalize`;
|
|
2264
|
+
const finalizeCallback = await this.postBatchCallback(request, finalizeCallbackPath, {
|
|
2265
|
+
status: 'completed',
|
|
2246
2266
|
totalCases: cases.length,
|
|
2247
2267
|
completedCases: results.length,
|
|
2248
2268
|
results,
|
|
2249
2269
|
});
|
|
2250
|
-
|
|
2251
|
-
|
|
2270
|
+
if (!finalizeCallback.ok && !finalizeCallback.skipped) {
|
|
2271
|
+
callbackFailures.push({
|
|
2272
|
+
stage: 'batch_finalize',
|
|
2273
|
+
path: finalizeCallbackPath,
|
|
2274
|
+
status: finalizeCallback.status,
|
|
2275
|
+
error: finalizeCallback.error,
|
|
2276
|
+
});
|
|
2277
|
+
logger.warn(`[BatchAction] Finalize callback failed for batch ${batchId}: ${finalizeCallback.error || finalizeCallback.status || 'unknown error'}`);
|
|
2278
|
+
}
|
|
2279
|
+
// 通知前端:批次完成。放在 finalize 回调之后,避免前端先看到完成但平台还没落最终态。
|
|
2280
|
+
this.sendMessage(ws, {
|
|
2281
|
+
type: 'batch_completed',
|
|
2282
|
+
batchId,
|
|
2252
2283
|
totalCases: cases.length,
|
|
2253
2284
|
completedCases: results.length,
|
|
2254
2285
|
results,
|
|
2286
|
+
callbackOk: callbackFailures.length === 0,
|
|
2287
|
+
callbackFailures: callbackFailures.slice(-10),
|
|
2255
2288
|
});
|
|
2289
|
+
await this.continueNextLoopBatches(ws, request, finalizeCallback.data);
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
getNextBatchRequests(callbackData) {
|
|
2293
|
+
if (!callbackData || typeof callbackData !== 'object')
|
|
2294
|
+
return [];
|
|
2295
|
+
const data = callbackData;
|
|
2296
|
+
const nestedData = data.data && typeof data.data === 'object'
|
|
2297
|
+
? data.data
|
|
2298
|
+
: null;
|
|
2299
|
+
const candidates = [
|
|
2300
|
+
data.nextBatchRequests,
|
|
2301
|
+
data.next_batch_requests,
|
|
2302
|
+
nestedData?.nextBatchRequests,
|
|
2303
|
+
nestedData?.next_batch_requests,
|
|
2304
|
+
];
|
|
2305
|
+
const list = candidates.find(Array.isArray);
|
|
2306
|
+
if (!Array.isArray(list))
|
|
2307
|
+
return [];
|
|
2308
|
+
return list.filter((item) => item && typeof item === 'object');
|
|
2309
|
+
}
|
|
2310
|
+
async continueNextLoopBatches(ws, sourceRequest, callbackData) {
|
|
2311
|
+
const nextBatchRequests = this.getNextBatchRequests(callbackData);
|
|
2312
|
+
if (nextBatchRequests.length === 0)
|
|
2313
|
+
return;
|
|
2314
|
+
logger.info(`[BatchAction] Received ${nextBatchRequests.length} next loop batch request(s), continuing unattended`);
|
|
2315
|
+
for (const item of nextBatchRequests) {
|
|
2316
|
+
const rawRequest = (item.request || item);
|
|
2317
|
+
if (!rawRequest || rawRequest.type !== 'batch_action') {
|
|
2318
|
+
logger.warn('[BatchAction] Skip invalid next loop batch request: missing batch_action payload');
|
|
2319
|
+
continue;
|
|
2320
|
+
}
|
|
2321
|
+
const nextRequest = {
|
|
2322
|
+
...rawRequest,
|
|
2323
|
+
callback: rawRequest.callback || sourceRequest.callback,
|
|
2324
|
+
modelConfig: rawRequest.modelConfig || sourceRequest.modelConfig,
|
|
2325
|
+
loginContext: rawRequest.loginContext || sourceRequest.loginContext,
|
|
2326
|
+
proxyPort: rawRequest.proxyPort ?? sourceRequest.proxyPort,
|
|
2327
|
+
proxyAccount: rawRequest.proxyAccount || sourceRequest.proxyAccount,
|
|
2328
|
+
headless: rawRequest.headless ?? sourceRequest.headless,
|
|
2329
|
+
viewport: rawRequest.viewport || sourceRequest.viewport,
|
|
2330
|
+
};
|
|
2331
|
+
if (!nextRequest.batchId || !Array.isArray(nextRequest.cases) || nextRequest.cases.length === 0) {
|
|
2332
|
+
logger.warn(`[BatchAction] Skip invalid next loop batch request: batchId=${nextRequest.batchId || ''}, cases=${nextRequest.cases?.length || 0}`);
|
|
2333
|
+
continue;
|
|
2334
|
+
}
|
|
2335
|
+
logger.info(`[BatchAction] Continuing next loop batch ${nextRequest.batchId}, cases=${nextRequest.cases.length}, platform=${nextRequest.platform}`);
|
|
2336
|
+
await this.handleBatchAction(ws, nextRequest);
|
|
2256
2337
|
}
|
|
2257
2338
|
}
|
|
2258
2339
|
/** 批次执行 - 单条 Web 用例 */
|
|
@@ -2403,6 +2484,31 @@ export class DebugWebSocketServer {
|
|
|
2403
2484
|
}
|
|
2404
2485
|
this.touchWebSession(sessionId);
|
|
2405
2486
|
session.webActionRunning = true;
|
|
2487
|
+
const uploadCaseArtifacts = async () => {
|
|
2488
|
+
let reportFile = '';
|
|
2489
|
+
try {
|
|
2490
|
+
const reportSess = sessionManager.get(sessionId);
|
|
2491
|
+
if (reportSess?.webAgent && typeof reportSess.webAgent.reportFile === 'string') {
|
|
2492
|
+
reportFile = reportSess.webAgent.reportFile || '';
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
catch { /* ignore */ }
|
|
2496
|
+
try {
|
|
2497
|
+
caseReportUrl = (await this.safeUploadReport(reportFile, `${request.batchId}-${tc.id}`)) ?? undefined;
|
|
2498
|
+
}
|
|
2499
|
+
catch (uploadErr) {
|
|
2500
|
+
logger.warn(`${caseLabel}: report upload failed - ${uploadErr.message}`);
|
|
2501
|
+
}
|
|
2502
|
+
try {
|
|
2503
|
+
const capturedRequests = await whistleManager.stopCapture(sessionId);
|
|
2504
|
+
if (capturedRequests.length > 0) {
|
|
2505
|
+
const uploadResult = await this.saveAndUploadCaptureData(capturedRequests, `${request.batchId}-${tc.id}`);
|
|
2506
|
+
if (uploadResult)
|
|
2507
|
+
caseCaptureDataUrl = uploadResult;
|
|
2508
|
+
}
|
|
2509
|
+
}
|
|
2510
|
+
catch { /* ignore */ }
|
|
2511
|
+
};
|
|
2406
2512
|
try {
|
|
2407
2513
|
// 执行登录(仅首条或 freshBrowserPerCase 时)
|
|
2408
2514
|
const effectiveLoginContext = tc.loginContext || batchLoginContext;
|
|
@@ -2449,32 +2555,26 @@ export class DebugWebSocketServer {
|
|
|
2449
2555
|
await fn.call(ctx);
|
|
2450
2556
|
}
|
|
2451
2557
|
caseSuccess = true;
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
}
|
|
2460
|
-
catch { /* ignore */ }
|
|
2461
|
-
caseReportUrl = (await this.safeUploadReport(reportFile, `${request.batchId}-${tc.id}`)) ?? undefined;
|
|
2462
|
-
// 停止抓包
|
|
2463
|
-
try {
|
|
2464
|
-
const capturedRequests = await whistleManager.stopCapture(sessionId);
|
|
2465
|
-
if (capturedRequests.length > 0) {
|
|
2466
|
-
const uploadResult = await this.saveAndUploadCaptureData(capturedRequests, `${request.batchId}-${tc.id}`);
|
|
2467
|
-
if (uploadResult)
|
|
2468
|
-
caseCaptureDataUrl = uploadResult;
|
|
2469
|
-
}
|
|
2470
|
-
}
|
|
2471
|
-
catch { /* ignore */ }
|
|
2558
|
+
await uploadCaseArtifacts();
|
|
2559
|
+
}
|
|
2560
|
+
catch (err) {
|
|
2561
|
+
caseSuccess = false;
|
|
2562
|
+
caseError = err.message;
|
|
2563
|
+
logger.warn(`${caseLabel}: web execution failed - ${caseError}`);
|
|
2564
|
+
await uploadCaseArtifacts();
|
|
2472
2565
|
}
|
|
2473
2566
|
finally {
|
|
2474
|
-
//
|
|
2567
|
+
// 无论成功/失败/异常,都必须重置执行标记并关闭浏览器,避免 Chrome 进程和并发名额残留。
|
|
2475
2568
|
const sess = sessionManager.get(sessionId);
|
|
2476
2569
|
if (sess)
|
|
2477
2570
|
sess.webActionRunning = false;
|
|
2571
|
+
try {
|
|
2572
|
+
await this.closeWebSession(sessionId);
|
|
2573
|
+
}
|
|
2574
|
+
catch (closeErr) {
|
|
2575
|
+
logger.warn(`${caseLabel}: close web session failed - ${closeErr.message}`);
|
|
2576
|
+
}
|
|
2577
|
+
browserLaunched = false;
|
|
2478
2578
|
}
|
|
2479
2579
|
return { success: caseSuccess, error: caseError, reportUrl: caseReportUrl, captureDataUrl: caseCaptureDataUrl, sessionId, browserLaunched };
|
|
2480
2580
|
}
|
|
@@ -2976,27 +3076,63 @@ export class DebugWebSocketServer {
|
|
|
2976
3076
|
async postBatchCallback(request, pathName, payload) {
|
|
2977
3077
|
const baseUrl = request.callback?.baseUrl?.trim();
|
|
2978
3078
|
if (!baseUrl)
|
|
2979
|
-
return;
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
3079
|
+
return { ok: true, skipped: true };
|
|
3080
|
+
const relativePath = pathName.replace(/^\/+/, '');
|
|
3081
|
+
const url = new URL(relativePath, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);
|
|
3082
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
3083
|
+
const token = request.callback?.token?.trim();
|
|
3084
|
+
if (token)
|
|
3085
|
+
headers.Authorization = token.startsWith('Bearer ') ? token : `Bearer ${token}`;
|
|
3086
|
+
const timeoutMs = Math.max(1000, Math.min(Number(request.callback?.timeoutMs || 10000) || 10000, 60000));
|
|
3087
|
+
const maxAttempts = 2;
|
|
3088
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
3089
|
+
const controller = new AbortController();
|
|
3090
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
3091
|
+
try {
|
|
3092
|
+
const response = await fetch(url.toString(), {
|
|
3093
|
+
method: 'POST',
|
|
3094
|
+
headers,
|
|
3095
|
+
body: JSON.stringify(payload),
|
|
3096
|
+
signal: controller.signal,
|
|
3097
|
+
});
|
|
3098
|
+
if (response.ok) {
|
|
3099
|
+
const text = await response.text().catch(() => '');
|
|
3100
|
+
let data;
|
|
3101
|
+
if (text) {
|
|
3102
|
+
try {
|
|
3103
|
+
data = JSON.parse(text);
|
|
3104
|
+
}
|
|
3105
|
+
catch {
|
|
3106
|
+
data = text;
|
|
3107
|
+
}
|
|
3108
|
+
}
|
|
3109
|
+
return { ok: true, status: response.status, url: url.toString(), data };
|
|
3110
|
+
}
|
|
2993
3111
|
const text = await response.text().catch(() => '');
|
|
2994
|
-
|
|
3112
|
+
const error = `${response.status} ${response.statusText}${text ? ` - ${text.slice(0, 300)}` : ''}`;
|
|
3113
|
+
logger.warn(`[BatchAction] Callback failed: ${error}, path=${pathName}, attempt=${attempt}/${maxAttempts}`);
|
|
3114
|
+
if (response.status >= 500 && attempt < maxAttempts) {
|
|
3115
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
3116
|
+
continue;
|
|
3117
|
+
}
|
|
3118
|
+
return { ok: false, status: response.status, error, url: url.toString() };
|
|
3119
|
+
}
|
|
3120
|
+
catch (error) {
|
|
3121
|
+
const message = error.name === 'AbortError'
|
|
3122
|
+
? `callback timeout after ${timeoutMs}ms`
|
|
3123
|
+
: error.message;
|
|
3124
|
+
logger.warn(`[BatchAction] Callback error: path=${pathName}, attempt=${attempt}/${maxAttempts}, error=${message}`);
|
|
3125
|
+
if (attempt < maxAttempts) {
|
|
3126
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
3127
|
+
continue;
|
|
3128
|
+
}
|
|
3129
|
+
return { ok: false, error: message, url: url.toString() };
|
|
3130
|
+
}
|
|
3131
|
+
finally {
|
|
3132
|
+
clearTimeout(timeout);
|
|
2995
3133
|
}
|
|
2996
3134
|
}
|
|
2997
|
-
|
|
2998
|
-
logger.warn(`[BatchAction] Callback error: path=${pathName}, error=${error.message}`);
|
|
2999
|
-
}
|
|
3135
|
+
return { ok: false, error: 'callback failed after retries', url: url.toString() };
|
|
3000
3136
|
}
|
|
3001
3137
|
sendMessage(ws, message, deviceId) {
|
|
3002
3138
|
try {
|