diff --git a/scripts/src/hwlab-node-web-observe-runner-source.ts b/scripts/src/hwlab-node-web-observe-runner-source.ts index f6a61e5c..fd6c9c02 100644 --- a/scripts/src/hwlab-node-web-observe-runner-source.ts +++ b/scripts/src/hwlab-node-web-observe-runner-source.ts @@ -618,7 +618,7 @@ async function samplePage(reason) { const activeSessionId = activeSession ? activeSession.getAttribute("data-session-id") : null; const messageSelector = '[data-testid*="message" i], [class*="message" i], article, [role="article"]'; const traceSelector = '[data-testid*="trace" i], [class*="trace" i], [data-trace-id], [data-testid*="event" i]'; - const diagnosticSelector = '.api-error-diagnostic, .message-diagnostic, .projection-diagnostic, [data-testid*="diagnostic" i], [class*="diagnostic" i], [role="alert"], .alert, .warning, .error'; + const diagnosticSelector = '.api-error-diagnostic, .api-error-diagnostic.message-diagnostic, .api-error-diagnostic.projection-diagnostic, [data-testid="api-error-diagnostic" i], [data-testid="error-diagnostic" i], [role="alert"], .alert, .warning, .error'; const messages = summarize(messageSelector, 20); const traceRows = summarize(traceSelector, 30); const diagnostics = Array.from(document.querySelectorAll(diagnosticSelector)).filter(visible).slice(-40).map((element, index) => { @@ -1399,7 +1399,8 @@ function groupNetworkAlerts(events) { } function isDiagnosticText(text) { - return /Failed to fetch|request failed|realtime-gap|durable projection store|turn 超过|无法连接|暂时|报警|告警|警告|失败|错误|异常|超时|timeout|error|failed|warning|502|503|504|provider-unavailable|agentrun:error|AgentRun error|projection-resume/iu.test(String(text || "")); + const value = String(text || ""); + return /Failed to (?:fetch|load resource)|request failed|net::ERR_[A-Z0-9_:-]+|server responded with a status of [45][0-9]{2}|HTTP\s+[45][0-9]{2}|trace_id=|workbench turn\s*超过|无新活动|idle\s+\d+s|waitingFor=|lastEventLabel=|无法连接上游|(?:报警|告警|警告|错误|异常|超时)[::]|timeout[::=]|error[::=]|failed[::=]|warning[::=]|provider-unavailable|agentrun:error|AgentRun error|projection-resume|durable projection store|realtime-gap|\b50[234]\b/iu.test(value); } function buildSampleMetrics(samples, control) {