惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
L
LangChain Blog
GbyAI
GbyAI
F
Fortinet All Blogs
腾讯CDC
Last Week in AI
Last Week in AI
A
About on SuperTechFans
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
B
Blog
D
Docker
G
Google Developers Blog
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
test: harden live QA transport probes · openclaw/openclaw...
steipete · 2026-05-17 · via Recent Commits to openclaw:main

@@ -470,6 +470,10 @@ function messageMatches(message: WhatsAppObservedMessage, matchText: string | Re

470470

: matchText.test(message.text);

471471

}

472472473+

function isTransientWhatsAppQaDriverError(error: unknown) {

474+

return /\bConnection Closed\b/iu.test(formatErrorMessage(error));

475+

}

476+473477

async function runWhatsAppScenario(params: {

474478

driver: WhatsAppQaDriverSession;

475479

driverPhoneE164: string;

@@ -754,7 +758,7 @@ export async function runWhatsAppQaLive(params: {

754758

parentDir: tempAuthRoot,

755759

}),

756760

]);

757-

const activeDriver = await startWhatsAppQaDriverSession({ authDir: driverAuthDir });

761+

let activeDriver = await startWhatsAppQaDriverSession({ authDir: driverAuthDir });

758762

driver = activeDriver;

759763760764

for (const scenario of scenarios) {

@@ -768,32 +772,50 @@ export async function runWhatsAppQaLive(params: {

768772

);

769773

continue;

770774

}

771-

try {

772-

const result = await runWhatsAppScenario({

773-

driver: activeDriver,

774-

driverPhoneE164: runtimeEnv.driverPhoneE164,

775-

gatewayDebugDirPath,

776-

observedMessages,

777-

providerMode,

778-

primaryModel,

779-

alternateModel,

780-

fastMode: params.fastMode,

781-

groupJid: runtimeEnv.groupJid,

782-

repoRoot,

783-

scenario,

784-

sutAccountId,

785-

sutAuthDir,

786-

sutPhoneE164: runtimeEnv.sutPhoneE164,

787-

});

788-

scenarioResults.push(result);

789-

} catch (error) {

790-

preservedGatewayDebugArtifacts = true;

791-

scenarioResults.push({

792-

id: scenario.id,

793-

title: scenario.title,

794-

status: "fail",

795-

details: formatErrorMessage(error),

796-

});

775+

let retriedDriver = false;

776+

while (true) {

777+

try {

778+

const result = await runWhatsAppScenario({

779+

driver: activeDriver,

780+

driverPhoneE164: runtimeEnv.driverPhoneE164,

781+

gatewayDebugDirPath,

782+

observedMessages,

783+

providerMode,

784+

primaryModel,

785+

alternateModel,

786+

fastMode: params.fastMode,

787+

groupJid: runtimeEnv.groupJid,

788+

repoRoot,

789+

scenario,

790+

sutAccountId,

791+

sutAuthDir,

792+

sutPhoneE164: runtimeEnv.sutPhoneE164,

793+

});

794+

scenarioResults.push(

795+

retriedDriver

796+

? { ...result, details: `${result.details}; driver reconnected` }

797+

: result,

798+

);

799+

break;

800+

} catch (error) {

801+

if (!retriedDriver && isTransientWhatsAppQaDriverError(error)) {

802+

retriedDriver = true;

803+

await activeDriver.close().catch(() => {});

804+

activeDriver = await startWhatsAppQaDriverSession({ authDir: driverAuthDir });

805+

driver = activeDriver;

806+

continue;

807+

}

808+

preservedGatewayDebugArtifacts = true;

809+

scenarioResults.push({

810+

id: scenario.id,

811+

title: scenario.title,

812+

status: "fail",

813+

details: formatErrorMessage(error),

814+

});

815+

break;

816+

}

817+

}

818+

if (scenarioResults.at(-1)?.status === "fail") {

797819

break;

798820

}

799821

}

@@ -921,6 +943,7 @@ export const __testing = {

921943

buildWhatsAppQaConfig,

922944

createMissingGroupJidScenarioResult,

923945

findScenarios,

946+

isTransientWhatsAppQaDriverError,

924947

parseWhatsAppQaCredentialPayload,

925948

resolveWhatsAppQaRuntimeEnv,

926949

resolveWhatsAppMetadataRedaction,