@timetotest/cli 0.2.3 ā 0.3.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/README.md +49 -40
- package/dist/bin/ttt.js +0 -2
- package/dist/bin/ttt.js.map +1 -1
- package/dist/package.json +13 -6
- package/dist/src/commands/chat/ChatApp.js +270 -100
- package/dist/src/commands/chat/ChatApp.js.map +1 -1
- package/dist/src/commands/chat/components/Banner.js +1 -1
- package/dist/src/commands/chat/components/ChatInput.js +97 -36
- package/dist/src/commands/chat/components/ChatInput.js.map +1 -1
- package/dist/src/commands/chat/components/ChatMessage.js +102 -0
- package/dist/src/commands/chat/components/ChatMessage.js.map +1 -0
- package/dist/src/commands/chat/components/MessageBubble.js +2 -1
- package/dist/src/commands/chat/components/MessageBubble.js.map +1 -1
- package/dist/src/commands/chat/components/PermissionPrompt.js +92 -0
- package/dist/src/commands/chat/components/PermissionPrompt.js.map +1 -0
- package/dist/src/commands/chat/components/StatusIndicator.js +21 -5
- package/dist/src/commands/chat/components/StatusIndicator.js.map +1 -1
- package/dist/src/commands/chat/components/ToolCallDisplay.js +141 -0
- package/dist/src/commands/chat/components/ToolCallDisplay.js.map +1 -0
- package/dist/src/commands/chat-ink.js +389 -61
- package/dist/src/commands/chat-ink.js.map +1 -1
- package/dist/src/commands/login.js +5 -5
- package/dist/src/commands/login.js.map +1 -1
- package/dist/src/commands/test.js +14 -194
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/lib/__tests__/code-mode-integration.test.js +381 -0
- package/dist/src/lib/__tests__/code-mode-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/config-manager.test.js +81 -0
- package/dist/src/lib/__tests__/config-manager.test.js.map +1 -0
- package/dist/src/lib/__tests__/mode-persistence-integration.test.js +75 -0
- package/dist/src/lib/__tests__/mode-persistence-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/permission-flow-integration.test.js +145 -0
- package/dist/src/lib/__tests__/permission-flow-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/permissions.test.js +132 -0
- package/dist/src/lib/__tests__/permissions.test.js.map +1 -0
- package/dist/src/lib/agent-orchestrator.js +263 -4
- package/dist/src/lib/agent-orchestrator.js.map +1 -1
- package/dist/src/lib/config.js +40 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/context-compactor.js +310 -0
- package/dist/src/lib/context-compactor.js.map +1 -0
- package/dist/src/lib/http.js +8 -0
- package/dist/src/lib/http.js.map +1 -1
- package/dist/src/lib/local-tools/code/__tests__/grep-search.test.js +146 -0
- package/dist/src/lib/local-tools/code/__tests__/grep-search.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/list-directory.test.js +192 -0
- package/dist/src/lib/local-tools/code/__tests__/list-directory.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/read-file.test.js +169 -0
- package/dist/src/lib/local-tools/code/__tests__/read-file.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/run-command.test.js +101 -0
- package/dist/src/lib/local-tools/code/__tests__/run-command.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/search-files.test.js +191 -0
- package/dist/src/lib/local-tools/code/__tests__/search-files.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/grep-search.js +404 -0
- package/dist/src/lib/local-tools/code/grep-search.js.map +1 -0
- package/dist/src/lib/local-tools/code/index.js +11 -0
- package/dist/src/lib/local-tools/code/index.js.map +1 -0
- package/dist/src/lib/local-tools/code/list-directory.js +276 -0
- package/dist/src/lib/local-tools/code/list-directory.js.map +1 -0
- package/dist/src/lib/local-tools/code/read-file.js +301 -0
- package/dist/src/lib/local-tools/code/read-file.js.map +1 -0
- package/dist/src/lib/local-tools/code/run-command.js +235 -0
- package/dist/src/lib/local-tools/code/run-command.js.map +1 -0
- package/dist/src/lib/local-tools/code/search-files.js +297 -0
- package/dist/src/lib/local-tools/code/search-files.js.map +1 -0
- package/dist/src/lib/local-tools/code/types.js +6 -0
- package/dist/src/lib/local-tools/code/types.js.map +1 -0
- package/dist/src/lib/local-tools/ui/playwright-mcp.js +1 -1
- package/dist/src/lib/permissions.js +94 -0
- package/dist/src/lib/permissions.js.map +1 -0
- package/dist/src/lib/prompts/builder.js +13 -10
- package/dist/src/lib/prompts/builder.js.map +1 -1
- package/dist/src/lib/prompts/templates.js +78 -0
- package/dist/src/lib/prompts/templates.js.map +1 -1
- package/dist/src/lib/session-manager.js.map +1 -1
- package/dist/src/lib/testing-mode.js +2 -2
- package/dist/src/lib/testing-mode.js.map +1 -1
- package/dist/src/lib/tool-executor.js +131 -2
- package/dist/src/lib/tool-executor.js.map +1 -1
- package/dist/src/lib/tool-registry.js +171 -3
- package/dist/src/lib/tool-registry.js.map +1 -1
- package/dist/src/lib/tool-result-pruner.js +4 -4
- package/dist/src/lib/tool-result-pruner.js.map +1 -1
- package/dist/src/lib/tui/ink/components/AppFrame.js +17 -0
- package/dist/src/lib/tui/ink/components/AppFrame.js.map +1 -0
- package/dist/src/lib/tui/ink/components/CommandPalette.js +24 -0
- package/dist/src/lib/tui/ink/components/CommandPalette.js.map +1 -0
- package/dist/src/lib/tui/ink/components/Pill.js +19 -0
- package/dist/src/lib/tui/ink/components/Pill.js.map +1 -0
- package/dist/src/lib/tui/ink/components/TimetoTestLogo.js +30 -0
- package/dist/src/lib/tui/ink/components/TimetoTestLogo.js.map +1 -0
- package/dist/src/lib/tui/ink/theme.js +28 -0
- package/dist/src/lib/tui/ink/theme.js.map +1 -0
- package/dist/src/lib/tui/interactive-chat.js +35 -35
- package/dist/src/lib/tui/interactive-chat.js.map +1 -1
- package/dist/src/lib/tui/print.js +18 -18
- package/dist/src/lib/tui/print.js.map +1 -1
- package/dist/src/lib/tui/prompt.js +3 -3
- package/dist/src/lib/tui/prompt.js.map +1 -1
- package/dist/src/lib/tui/status.js +1 -1
- package/dist/src/lib/tui/status.js.map +1 -1
- package/dist/src/lib/update.js +10 -10
- package/dist/src/lib/update.js.map +1 -1
- package/package.json +13 -6
- package/dist/src/commands/ask/AskApp.js +0 -121
- package/dist/src/commands/ask/AskApp.js.map +0 -1
- package/dist/src/commands/ask/components/AssistantResponse.js +0 -31
- package/dist/src/commands/ask/components/AssistantResponse.js.map +0 -1
- package/dist/src/commands/ask/components/Banner.js +0 -15
- package/dist/src/commands/ask/components/Banner.js.map +0 -1
- package/dist/src/commands/ask/components/ChatInput.js +0 -93
- package/dist/src/commands/ask/components/ChatInput.js.map +0 -1
- package/dist/src/commands/ask/components/Divider.js +0 -17
- package/dist/src/commands/ask/components/Divider.js.map +0 -1
- package/dist/src/commands/ask/components/IntroTips.js +0 -19
- package/dist/src/commands/ask/components/IntroTips.js.map +0 -1
- package/dist/src/commands/ask/components/MessageBubble.js +0 -47
- package/dist/src/commands/ask/components/MessageBubble.js.map +0 -1
- package/dist/src/commands/ask/components/SessionInfo.js +0 -20
- package/dist/src/commands/ask/components/SessionInfo.js.map +0 -1
- package/dist/src/commands/ask/components/StatusIndicator.js +0 -67
- package/dist/src/commands/ask/components/StatusIndicator.js.map +0 -1
- package/dist/src/commands/ask-ink.js +0 -380
- package/dist/src/commands/ask-ink.js.map +0 -1
- package/dist/src/commands/ask.js +0 -991
- package/dist/src/commands/ask.js.map +0 -1
- package/dist/src/commands/chat/components/Divider.js +0 -7
- package/dist/src/commands/chat/components/Divider.js.map +0 -1
- package/dist/src/commands/chat/components/SessionInfo.js +0 -11
- package/dist/src/commands/chat/components/SessionInfo.js.map +0 -1
- package/dist/src/commands/chat.js +0 -82
- package/dist/src/commands/chat.js.map +0 -1
- package/dist/src/commands/start-test.js +0 -119
- package/dist/src/commands/start-test.js.map +0 -1
- package/dist/src/commands/stream.js +0 -17
- package/dist/src/commands/stream.js.map +0 -1
- package/dist/src/lib/legacy-chat-runner.js +0 -37
- package/dist/src/lib/legacy-chat-runner.js.map +0 -1
- package/dist/src/lib/local-tools/ui/click-element.js +0 -105
- package/dist/src/lib/local-tools/ui/click-element.js.map +0 -1
- package/dist/src/lib/local-tools/ui/dom-rag.js +0 -201
- package/dist/src/lib/local-tools/ui/dom-rag.js.map +0 -1
- package/dist/src/lib/local-tools/ui/find-element.js +0 -31
- package/dist/src/lib/local-tools/ui/find-element.js.map +0 -1
- package/dist/src/lib/local-tools/ui/hover-element.js +0 -94
- package/dist/src/lib/local-tools/ui/hover-element.js.map +0 -1
- package/dist/src/lib/local-tools/ui/manage-tab.js +0 -65
- package/dist/src/lib/local-tools/ui/manage-tab.js.map +0 -1
- package/dist/src/lib/local-tools/ui/navigate.js +0 -35
- package/dist/src/lib/local-tools/ui/navigate.js.map +0 -1
- package/dist/src/lib/local-tools/ui/page-discovery.js +0 -32
- package/dist/src/lib/local-tools/ui/page-discovery.js.map +0 -1
- package/dist/src/lib/local-tools/ui/screenshot.js +0 -19
- package/dist/src/lib/local-tools/ui/screenshot.js.map +0 -1
- package/dist/src/lib/local-tools/ui/search-interactive-elements.js +0 -18
- package/dist/src/lib/local-tools/ui/search-interactive-elements.js.map +0 -1
- package/dist/src/lib/local-tools/ui/selector-resolver.js +0 -153
- package/dist/src/lib/local-tools/ui/selector-resolver.js.map +0 -1
- package/dist/src/lib/local-tools/ui/type-text.js +0 -40
- package/dist/src/lib/local-tools/ui/type-text.js.map +0 -1
- package/dist/src/lib/tui/components/AskIntro.js +0 -6
- package/dist/src/lib/tui/components/AskIntro.js.map +0 -1
- package/dist/src/lib/tui/components/Banner.js +0 -15
- package/dist/src/lib/tui/components/Banner.js.map +0 -1
- package/dist/src/lib/tui/components/Divider.js +0 -17
- package/dist/src/lib/tui/components/Divider.js.map +0 -1
- package/dist/src/lib/tui/components/EventLine.js +0 -110
- package/dist/src/lib/tui/components/EventLine.js.map +0 -1
- package/dist/src/lib/tui/components/Header.js +0 -15
- package/dist/src/lib/tui/components/Header.js.map +0 -1
- package/dist/src/lib/tui/components/InputBox.js +0 -9
- package/dist/src/lib/tui/components/InputBox.js.map +0 -1
- package/dist/src/lib/tui/components/Mapping.js +0 -8
- package/dist/src/lib/tui/components/Mapping.js.map +0 -1
- package/dist/src/lib/tui/components/ProjectList.js +0 -6
- package/dist/src/lib/tui/components/ProjectList.js.map +0 -1
- package/dist/src/lib/tui/components/Spinner.js +0 -20
- package/dist/src/lib/tui/components/Spinner.js.map +0 -1
- package/dist/src/lib/tui/components/StatusBanner.js +0 -12
- package/dist/src/lib/tui/components/StatusBanner.js.map +0 -1
- package/dist/src/lib/tui/components/StatusBar.js +0 -11
- package/dist/src/lib/tui/components/StatusBar.js.map +0 -1
- package/dist/src/lib/tui/components/UserBubble.js +0 -6
- package/dist/src/lib/tui/components/UserBubble.js.map +0 -1
- package/dist/src/lib/tui/components/index.js +0 -16
- package/dist/src/lib/tui/components/index.js.map +0 -1
- package/dist/src/lib/tui/ink-print.js +0 -41
- package/dist/src/lib/tui/ink-print.js.map +0 -1
- package/dist/src/test-agent-flow.js +0 -148
- package/dist/src/test-agent-flow.js.map +0 -1
- package/dist/src/test-browser-session.js +0 -152
- package/dist/src/test-browser-session.js.map +0 -1
- package/dist/src/test-browser-snapshot.js +0 -187
- package/dist/src/test-browser-snapshot.js.map +0 -1
- package/dist/src/test-snapshot-detailed.js +0 -219
- package/dist/src/test-snapshot-detailed.js.map +0 -1
- package/dist/src/test-snapshot-simple.js +0 -85
- package/dist/src/test-snapshot-simple.js.map +0 -1
- package/dist/src/test-snapshot-tabs.js +0 -110
- package/dist/src/test-snapshot-tabs.js.map +0 -1
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test script for full agent flow with browser session
|
|
3
|
-
* Tests the complete workflow: browser session -> navigation -> UI interactions
|
|
4
|
-
*/
|
|
5
|
-
import { ToolExecutor } from "./lib/tool-executor.js";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
async function testAgentFlow() {
|
|
8
|
-
console.log(chalk.blue("š¤ Testing Full Agent Flow: 'open localhost 3000'\n"));
|
|
9
|
-
const executor = new ToolExecutor({
|
|
10
|
-
testingMode: "ui",
|
|
11
|
-
});
|
|
12
|
-
const testResults = [];
|
|
13
|
-
try {
|
|
14
|
-
// Step 1: Start browser session
|
|
15
|
-
console.log(chalk.yellow("Step 1: Starting browser session..."));
|
|
16
|
-
const startResult = await executor.execute({
|
|
17
|
-
name: "browser_session",
|
|
18
|
-
arguments: {
|
|
19
|
-
action: "start",
|
|
20
|
-
viewport: { width: 1280, height: 800 },
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
testResults.push({ step: "Start Browser", ...startResult });
|
|
24
|
-
console.log("Result:", JSON.stringify(startResult, null, 2));
|
|
25
|
-
if (startResult.success) {
|
|
26
|
-
console.log(chalk.green("ā
Browser session started successfully"));
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.log(chalk.red("ā Failed to start browser session:"), startResult.error);
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
// Wait for browser to initialize
|
|
33
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
34
|
-
// Step 2: Navigate to localhost:3000
|
|
35
|
-
console.log(chalk.yellow("\nStep 2: Navigating to localhost:3000..."));
|
|
36
|
-
const navigateResult = await executor.execute({
|
|
37
|
-
name: "browser_navigate",
|
|
38
|
-
arguments: {
|
|
39
|
-
url: "http://localhost:3000",
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
testResults.push({ step: "Navigate to localhost:3000", ...navigateResult });
|
|
43
|
-
console.log("Result:", JSON.stringify(navigateResult, null, 2));
|
|
44
|
-
if (navigateResult.success) {
|
|
45
|
-
console.log(chalk.green("ā
Successfully navigated to localhost:3000"));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
console.log(chalk.red("ā Failed to navigate to localhost:3000:"), navigateResult.error);
|
|
49
|
-
}
|
|
50
|
-
// Wait for page to load
|
|
51
|
-
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
52
|
-
// Step 3: Take a screenshot to see what's on the page
|
|
53
|
-
console.log(chalk.yellow("\nStep 3: Taking screenshot to see the page..."));
|
|
54
|
-
const screenshotResult = await executor.execute({
|
|
55
|
-
name: "browser_take_screenshot",
|
|
56
|
-
arguments: {},
|
|
57
|
-
});
|
|
58
|
-
testResults.push({ step: "Take Screenshot", ...screenshotResult });
|
|
59
|
-
console.log("Result:", JSON.stringify(screenshotResult, null, 2));
|
|
60
|
-
if (screenshotResult.success) {
|
|
61
|
-
console.log(chalk.green("ā
Screenshot taken successfully"));
|
|
62
|
-
if (screenshotResult.screenshot) {
|
|
63
|
-
console.log(chalk.blue("šø Screenshot data available"));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
console.log(chalk.red("ā Failed to take screenshot:"), screenshotResult.error);
|
|
68
|
-
}
|
|
69
|
-
// Step 4: Get page snapshot to understand the structure
|
|
70
|
-
console.log(chalk.yellow("\nStep 4: Getting page snapshot..."));
|
|
71
|
-
const snapshotResult = await executor.execute({
|
|
72
|
-
name: "browser_snapshot",
|
|
73
|
-
arguments: {},
|
|
74
|
-
});
|
|
75
|
-
testResults.push({ step: "Get Page Snapshot", ...snapshotResult });
|
|
76
|
-
console.log("Result:", JSON.stringify(snapshotResult, null, 2));
|
|
77
|
-
if (snapshotResult.success) {
|
|
78
|
-
console.log(chalk.green("ā
Page snapshot retrieved successfully"));
|
|
79
|
-
if (snapshotResult.sections?.pageState) {
|
|
80
|
-
console.log(chalk.blue("š Page state available for analysis"));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
console.log(chalk.red("ā Failed to get page snapshot:"), snapshotResult.error);
|
|
85
|
-
}
|
|
86
|
-
// Step 5: Try to interact with the page (look for common elements)
|
|
87
|
-
console.log(chalk.yellow("\nStep 5: Looking for interactive elements..."));
|
|
88
|
-
// Try to find and click a button if available
|
|
89
|
-
const clickResult = await executor.execute({
|
|
90
|
-
name: "browser_click",
|
|
91
|
-
arguments: {
|
|
92
|
-
element: "any button",
|
|
93
|
-
ref: "1", // Try first element
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
testResults.push({ step: "Try to Click Element", ...clickResult });
|
|
97
|
-
console.log("Result:", JSON.stringify(clickResult, null, 2));
|
|
98
|
-
if (clickResult.success) {
|
|
99
|
-
console.log(chalk.green("ā
Successfully clicked an element"));
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
console.log(chalk.yellow("ā ļø No clickable elements found or click failed (this is normal for some pages)"));
|
|
103
|
-
}
|
|
104
|
-
// Step 6: Stop browser session
|
|
105
|
-
console.log(chalk.yellow("\nStep 6: Stopping browser session..."));
|
|
106
|
-
const stopResult = await executor.execute({
|
|
107
|
-
name: "browser_session",
|
|
108
|
-
arguments: {
|
|
109
|
-
action: "stop",
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
testResults.push({ step: "Stop Browser", ...stopResult });
|
|
113
|
-
console.log("Result:", JSON.stringify(stopResult, null, 2));
|
|
114
|
-
if (stopResult.success) {
|
|
115
|
-
console.log(chalk.green("ā
Browser session stopped successfully"));
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
console.log(chalk.red("ā Failed to stop browser session:"), stopResult.error);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
console.error(chalk.red("ā Test failed with error:"), error);
|
|
123
|
-
testResults.push({ step: "Error", success: false, error: String(error) });
|
|
124
|
-
}
|
|
125
|
-
// Summary
|
|
126
|
-
console.log(chalk.blue("\nš Test Summary:"));
|
|
127
|
-
console.log("==================");
|
|
128
|
-
testResults.forEach((result, index) => {
|
|
129
|
-
const status = result.success ? "ā
PASS" : "ā FAIL";
|
|
130
|
-
const color = result.success ? chalk.green : chalk.red;
|
|
131
|
-
console.log(color(`${status} - Step ${index + 1}: ${result.step}`));
|
|
132
|
-
if (!result.success && result.error) {
|
|
133
|
-
console.log(chalk.gray(` Error: ${result.error}`));
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
const successCount = testResults.filter(r => r.success).length;
|
|
137
|
-
const totalCount = testResults.length;
|
|
138
|
-
console.log(chalk.blue(`\nšÆ Overall: ${successCount}/${totalCount} steps completed successfully`));
|
|
139
|
-
if (successCount === totalCount) {
|
|
140
|
-
console.log(chalk.green("š All tests passed! Agent flow is working correctly."));
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
console.log(chalk.yellow("ā ļø Some tests failed. Check the errors above."));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// Run the test
|
|
147
|
-
testAgentFlow().catch(console.error);
|
|
148
|
-
//# sourceMappingURL=test-agent-flow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent-flow.js","sourceRoot":"","sources":["../../src/test-agent-flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAChC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACzC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE;gBACT,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAC;aACrC;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,WAAW,EAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC5C,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE;gBACT,GAAG,EAAE,uBAAuB;aAC7B;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,cAAc,EAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1F,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC9C,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,EAAE;SACd,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAElE,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC5D,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjF,CAAC;QAED,wDAAwD;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC5C,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,EAAE;SACd,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACnE,IAAI,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACjF,CAAC;QAED,mEAAmE;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAE3E,8CAA8C;QAC9C,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACzC,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE;gBACT,OAAO,EAAE,YAAY;gBACrB,GAAG,EAAE,GAAG,EAAE,oBAAoB;aAC/B;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,WAAW,EAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gFAAgF,CAAC,CAAC,CAAC;QAC9G,CAAC;QAED,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACxC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;aACf;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,cAAc,EAAE,GAAG,UAAU,EAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAChF,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC;IAC1E,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,WAAW,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,IAAI,UAAU,+BAA+B,CAAC,CAAC,CAAC;IAEpG,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,eAAe;AACf,aAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test script for browser session tool functionality
|
|
3
|
-
* This script tests the browser_session tool implementation
|
|
4
|
-
*/
|
|
5
|
-
import { ToolExecutor } from "./lib/tool-executor.js";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
import { execSync } from "child_process";
|
|
8
|
-
async function testBrowserSession() {
|
|
9
|
-
console.log(chalk.blue("š§Ŗ Testing Browser Session Tool...\n"));
|
|
10
|
-
const executor = new ToolExecutor({
|
|
11
|
-
testingMode: "ui",
|
|
12
|
-
});
|
|
13
|
-
const testResults = {
|
|
14
|
-
startSession: null,
|
|
15
|
-
startSessionDuplicate: null,
|
|
16
|
-
stopSession: null,
|
|
17
|
-
stopSessionWithoutStart: null,
|
|
18
|
-
};
|
|
19
|
-
try {
|
|
20
|
-
// Test 1: Start browser session
|
|
21
|
-
console.log(chalk.yellow("Test 1: Starting browser session..."));
|
|
22
|
-
testResults.startSession = (await executor.execute({
|
|
23
|
-
name: "browser_session",
|
|
24
|
-
arguments: {
|
|
25
|
-
action: "start",
|
|
26
|
-
viewport: { width: 1024, height: 768 },
|
|
27
|
-
},
|
|
28
|
-
}));
|
|
29
|
-
console.log("Result:", JSON.stringify(testResults.startSession, null, 2));
|
|
30
|
-
if (testResults.startSession?.success) {
|
|
31
|
-
console.log(chalk.green("ā
Browser session started successfully"));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.log(chalk.red("ā Failed to start browser session:"), testResults.startSession?.error);
|
|
35
|
-
}
|
|
36
|
-
// Wait a moment for browser to fully initialize
|
|
37
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
38
|
-
// Test 2: Try to start another session (should fail)
|
|
39
|
-
console.log(chalk.yellow("\nTest 2: Attempting to start duplicate session..."));
|
|
40
|
-
testResults.startSessionDuplicate = (await executor.execute({
|
|
41
|
-
name: "browser_session",
|
|
42
|
-
arguments: {
|
|
43
|
-
action: "start",
|
|
44
|
-
},
|
|
45
|
-
}));
|
|
46
|
-
console.log("Result:", JSON.stringify(testResults.startSessionDuplicate, null, 2));
|
|
47
|
-
if (!testResults.startSessionDuplicate?.success) {
|
|
48
|
-
console.log(chalk.green("ā
Correctly prevented duplicate session"));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
console.log(chalk.red("ā Should have prevented duplicate session"));
|
|
52
|
-
}
|
|
53
|
-
// Test 3: Stop browser session
|
|
54
|
-
console.log(chalk.yellow("\nTest 3: Stopping browser session..."));
|
|
55
|
-
testResults.stopSession = (await executor.execute({
|
|
56
|
-
name: "browser_session",
|
|
57
|
-
arguments: {
|
|
58
|
-
action: "stop",
|
|
59
|
-
},
|
|
60
|
-
}));
|
|
61
|
-
console.log("Result:", JSON.stringify(testResults.stopSession, null, 2));
|
|
62
|
-
if (testResults.stopSession?.success) {
|
|
63
|
-
console.log(chalk.green("ā
Browser session stopped successfully"));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
console.log(chalk.red("ā Failed to stop browser session:"), testResults.stopSession?.error);
|
|
67
|
-
}
|
|
68
|
-
// Test 4: Try to stop session when none exists
|
|
69
|
-
console.log(chalk.yellow("\nTest 4: Attempting to stop non-existent session..."));
|
|
70
|
-
testResults.stopSessionWithoutStart = (await executor.execute({
|
|
71
|
-
name: "browser_session",
|
|
72
|
-
arguments: {
|
|
73
|
-
action: "stop",
|
|
74
|
-
},
|
|
75
|
-
}));
|
|
76
|
-
console.log("Result:", JSON.stringify(testResults.stopSessionWithoutStart, null, 2));
|
|
77
|
-
if (!testResults.stopSessionWithoutStart?.success) {
|
|
78
|
-
console.log(chalk.green("ā
Correctly handled stopping non-existent session"));
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log(chalk.red("ā Should have failed when stopping non-existent session"));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
console.error(chalk.red("ā Test failed with error:"), error);
|
|
86
|
-
}
|
|
87
|
-
// Summary
|
|
88
|
-
console.log(chalk.blue("\nš Test Summary:"));
|
|
89
|
-
console.log("================");
|
|
90
|
-
const tests = [
|
|
91
|
-
{
|
|
92
|
-
name: "Start Session",
|
|
93
|
-
result: testResults.startSession,
|
|
94
|
-
expectSuccess: true,
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: "Prevent Duplicate",
|
|
98
|
-
result: testResults.startSessionDuplicate,
|
|
99
|
-
expectSuccess: false,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: "Stop Session",
|
|
103
|
-
result: testResults.stopSession,
|
|
104
|
-
expectSuccess: true,
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: "Stop Non-existent",
|
|
108
|
-
result: testResults.stopSessionWithoutStart,
|
|
109
|
-
expectSuccess: false,
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
tests.forEach((test) => {
|
|
113
|
-
const isCorrectBehavior = test.expectSuccess
|
|
114
|
-
? test.result?.success
|
|
115
|
-
: !test.result?.success;
|
|
116
|
-
const status = isCorrectBehavior ? "ā
PASS" : "ā FAIL";
|
|
117
|
-
const color = isCorrectBehavior ? chalk.green : chalk.red;
|
|
118
|
-
console.log(color(`${status} - ${test.name}`));
|
|
119
|
-
if (!isCorrectBehavior && test.result?.error) {
|
|
120
|
-
console.log(chalk.gray(` Error: ${test.result.error}`));
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
// Check if Playwright is installed
|
|
124
|
-
console.log(chalk.blue("\nš Environment Check:"));
|
|
125
|
-
console.log("===================");
|
|
126
|
-
try {
|
|
127
|
-
const playwrightVersion = execSync("npx playwright --version", {
|
|
128
|
-
encoding: "utf8",
|
|
129
|
-
});
|
|
130
|
-
console.log(chalk.green("ā
Playwright installed:"), playwrightVersion.trim());
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
console.log(chalk.red("ā Playwright not found or not properly installed"));
|
|
134
|
-
console.log(chalk.yellow(" Run: npx playwright install chromium"));
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
const chromiumCheck = execSync("npx playwright install --dry-run chromium", { encoding: "utf8" });
|
|
138
|
-
if (chromiumCheck.includes("chromium")) {
|
|
139
|
-
console.log(chalk.green("ā
Chromium browser available"));
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
console.log(chalk.red("ā Chromium browser not installed"));
|
|
143
|
-
console.log(chalk.yellow(" Run: npx playwright install chromium"));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
console.log(chalk.red("ā Error checking Chromium installation"));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// Run the test
|
|
151
|
-
testBrowserSession().catch(console.error);
|
|
152
|
-
//# sourceMappingURL=test-browser-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-browser-session.js","sourceRoot":"","sources":["../../src/test-browser-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test script specifically for browser snapshot functionality
|
|
3
|
-
* Tests the browser_snapshot tool to identify any issues
|
|
4
|
-
*/
|
|
5
|
-
import { ToolExecutor } from "./lib/tool-executor.js";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
async function testBrowserSnapshot() {
|
|
8
|
-
console.log(chalk.blue("š Testing Browser Snapshot Functionality\n"));
|
|
9
|
-
const executor = new ToolExecutor({
|
|
10
|
-
testingMode: "ui",
|
|
11
|
-
});
|
|
12
|
-
const testResults = [];
|
|
13
|
-
try {
|
|
14
|
-
// Step 1: Start browser session
|
|
15
|
-
console.log(chalk.yellow("Step 1: Starting browser session..."));
|
|
16
|
-
const startResult = await executor.execute({
|
|
17
|
-
name: "browser_session",
|
|
18
|
-
arguments: {
|
|
19
|
-
action: "start",
|
|
20
|
-
viewport: { width: 1280, height: 800 },
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
testResults.push({ step: "Start Browser", ...startResult });
|
|
24
|
-
console.log("Result:", JSON.stringify(startResult, null, 2));
|
|
25
|
-
if (!startResult.success) {
|
|
26
|
-
console.log(chalk.red("ā Failed to start browser session:"), startResult.error);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
console.log(chalk.green("ā
Browser session started successfully"));
|
|
30
|
-
// Wait for browser to initialize
|
|
31
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
32
|
-
// Step 2: Navigate to a simple page
|
|
33
|
-
console.log(chalk.yellow("\nStep 2: Navigating to Google..."));
|
|
34
|
-
const navigateResult = await executor.execute({
|
|
35
|
-
name: "browser_navigate",
|
|
36
|
-
arguments: {
|
|
37
|
-
url: "https://www.google.com",
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
testResults.push({ step: "Navigate to Google", ...navigateResult });
|
|
41
|
-
console.log("Result:", JSON.stringify(navigateResult, null, 2));
|
|
42
|
-
if (navigateResult.success) {
|
|
43
|
-
console.log(chalk.green("ā
Successfully navigated to Google"));
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.log(chalk.red("ā Failed to navigate to Google:"), navigateResult.error);
|
|
47
|
-
}
|
|
48
|
-
// Wait for page to load
|
|
49
|
-
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
50
|
-
// Step 3: Test browser snapshot
|
|
51
|
-
console.log(chalk.yellow("\nStep 3: Testing browser snapshot..."));
|
|
52
|
-
const snapshotResult = await executor.execute({
|
|
53
|
-
name: "browser_snapshot",
|
|
54
|
-
arguments: {},
|
|
55
|
-
});
|
|
56
|
-
testResults.push({ step: "Browser Snapshot", ...snapshotResult });
|
|
57
|
-
console.log("Result:", JSON.stringify(snapshotResult, null, 2));
|
|
58
|
-
if (snapshotResult.success) {
|
|
59
|
-
console.log(chalk.green("ā
Browser snapshot retrieved successfully"));
|
|
60
|
-
// Analyze the snapshot content
|
|
61
|
-
if (snapshotResult.sections) {
|
|
62
|
-
console.log(chalk.blue("\nš Snapshot Sections:"));
|
|
63
|
-
for (const [key, value] of snapshotResult.sections) {
|
|
64
|
-
console.log(chalk.cyan(` ${key}:`));
|
|
65
|
-
console.log(chalk.gray(` ${value.substring(0, 200)}${value.length > 200 ? '...' : ''}`));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (snapshotResult.content) {
|
|
69
|
-
console.log(chalk.blue("\nš Raw Content:"));
|
|
70
|
-
snapshotResult.content.forEach((item, index) => {
|
|
71
|
-
console.log(chalk.cyan(` Content ${index + 1}:`));
|
|
72
|
-
console.log(chalk.gray(` Type: ${item.type}`));
|
|
73
|
-
if (item.text) {
|
|
74
|
-
console.log(chalk.gray(` Text: ${item.text.substring(0, 200)}${item.text.length > 200 ? '...' : ''}`));
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// Check for specific snapshot data
|
|
79
|
-
const pageState = snapshotResult.sections?.get("Page state");
|
|
80
|
-
if (pageState) {
|
|
81
|
-
console.log(chalk.green("ā
Page state found in snapshot"));
|
|
82
|
-
console.log(chalk.blue("š Page state preview:"));
|
|
83
|
-
console.log(chalk.gray(pageState.substring(0, 500) + (pageState.length > 500 ? '...' : '')));
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
console.log(chalk.red("ā No Page state found in snapshot"));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.log(chalk.red("ā Failed to get browser snapshot:"), snapshotResult.error);
|
|
91
|
-
}
|
|
92
|
-
// Step 4: Test snapshot with different arguments
|
|
93
|
-
console.log(chalk.yellow("\nStep 4: Testing snapshot with accessibility tree..."));
|
|
94
|
-
const snapshotWithAccessibilityResult = await executor.execute({
|
|
95
|
-
name: "browser_snapshot",
|
|
96
|
-
arguments: {
|
|
97
|
-
accessibilityTree: true,
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
testResults.push({ step: "Snapshot with Accessibility", ...snapshotWithAccessibilityResult });
|
|
101
|
-
console.log("Result:", JSON.stringify(snapshotWithAccessibilityResult, null, 2));
|
|
102
|
-
if (snapshotWithAccessibilityResult.success) {
|
|
103
|
-
console.log(chalk.green("ā
Accessibility snapshot retrieved successfully"));
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
console.log(chalk.red("ā Failed to get accessibility snapshot:"), snapshotWithAccessibilityResult.error);
|
|
107
|
-
}
|
|
108
|
-
// Step 5: Test snapshot with specific element
|
|
109
|
-
console.log(chalk.yellow("\nStep 5: Testing snapshot with element selector..."));
|
|
110
|
-
const snapshotWithElementResult = await executor.execute({
|
|
111
|
-
name: "browser_snapshot",
|
|
112
|
-
arguments: {
|
|
113
|
-
element: "body",
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
testResults.push({ step: "Snapshot with Element", ...snapshotWithElementResult });
|
|
117
|
-
console.log("Result:", JSON.stringify(snapshotWithElementResult, null, 2));
|
|
118
|
-
if (snapshotWithElementResult.success) {
|
|
119
|
-
console.log(chalk.green("ā
Element snapshot retrieved successfully"));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
console.log(chalk.red("ā Failed to get element snapshot:"), snapshotWithElementResult.error);
|
|
123
|
-
}
|
|
124
|
-
// Step 6: Stop browser session
|
|
125
|
-
console.log(chalk.yellow("\nStep 6: Stopping browser session..."));
|
|
126
|
-
const stopResult = await executor.execute({
|
|
127
|
-
name: "browser_session",
|
|
128
|
-
arguments: {
|
|
129
|
-
action: "stop",
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
testResults.push({ step: "Stop Browser", ...stopResult });
|
|
133
|
-
console.log("Result:", JSON.stringify(stopResult, null, 2));
|
|
134
|
-
if (stopResult.success) {
|
|
135
|
-
console.log(chalk.green("ā
Browser session stopped successfully"));
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
console.log(chalk.red("ā Failed to stop browser session:"), stopResult.error);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
console.error(chalk.red("ā Test failed with error:"), error);
|
|
143
|
-
testResults.push({ step: "Error", success: false, error: String(error) });
|
|
144
|
-
}
|
|
145
|
-
// Summary
|
|
146
|
-
console.log(chalk.blue("\nš Test Summary:"));
|
|
147
|
-
console.log("==================");
|
|
148
|
-
testResults.forEach((result, index) => {
|
|
149
|
-
const status = result.success ? "ā
PASS" : "ā FAIL";
|
|
150
|
-
const color = result.success ? chalk.green : chalk.red;
|
|
151
|
-
console.log(color(`${status} - Step ${index + 1}: ${result.step}`));
|
|
152
|
-
if (!result.success && result.error) {
|
|
153
|
-
console.log(chalk.gray(` Error: ${result.error}`));
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
const successCount = testResults.filter(r => r.success).length;
|
|
157
|
-
const totalCount = testResults.length;
|
|
158
|
-
console.log(chalk.blue(`\nšÆ Overall: ${successCount}/${totalCount} steps completed successfully`));
|
|
159
|
-
if (successCount === totalCount) {
|
|
160
|
-
console.log(chalk.green("š All snapshot tests passed!"));
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
console.log(chalk.yellow("ā ļø Some snapshot tests failed. Check the errors above."));
|
|
164
|
-
}
|
|
165
|
-
// Detailed analysis
|
|
166
|
-
console.log(chalk.blue("\nš Snapshot Analysis:"));
|
|
167
|
-
console.log("===================");
|
|
168
|
-
const snapshotTests = testResults.filter(r => r.step?.includes("Snapshot"));
|
|
169
|
-
snapshotTests.forEach(test => {
|
|
170
|
-
console.log(chalk.cyan(`\n${test.step}:`));
|
|
171
|
-
if (test.success) {
|
|
172
|
-
console.log(chalk.green(" ā
Success"));
|
|
173
|
-
if (test.sections) {
|
|
174
|
-
console.log(chalk.blue(` š Sections: ${Array.from(test.sections.keys()).join(', ')}`));
|
|
175
|
-
}
|
|
176
|
-
if (test.content) {
|
|
177
|
-
console.log(chalk.blue(` š Content items: ${test.content.length}`));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
console.log(chalk.red(` ā Failed: ${test.error}`));
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
// Run the test
|
|
186
|
-
testBrowserSnapshot().catch(console.error);
|
|
187
|
-
//# sourceMappingURL=test-browser-snapshot.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-browser-snapshot.js","sourceRoot":"","sources":["../../src/test-browser-snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,KAAK,UAAU,mBAAmB;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAChC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACzC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE;gBACT,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAC;aACrC;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,WAAW,EAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAEnE,iCAAiC;QACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,oCAAoC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC5C,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE;gBACT,GAAG,EAAE,wBAAwB;aAC9B;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,cAAc,EAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAClF,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC5C,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,EAAE;SACd,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;YAEtE,+BAA+B;YAC/B,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;YAED,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAClD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5G,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,mCAAmC;YACnC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,CAAC;QAEH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC;QAED,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACnF,MAAM,+BAA+B,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YAC7D,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE;gBACT,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,+BAA+B,EAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjF,IAAI,+BAA+B,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,EAAE,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAC3G,CAAC;QAED,8CAA8C;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACjF,MAAM,yBAAyB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACvD,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;aAChB;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,yBAAyB,EAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,yBAAyB,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/F,CAAC;QAED,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACxC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;aACf;SACF,CAAe,CAAC;QAEjB,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,cAAc,EAAE,GAAG,UAAU,EAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAChF,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC;IAC1E,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,WAAW,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,IAAI,UAAU,+BAA+B,CAAC,CAAC,CAAC;IAEpG,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe;AACf,mBAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|