ProtoLinkAI MCP Server

{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":8,"numPassedTests":64,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":8,"numTotalTests":64,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1739077874346,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["BrowserManager","Instance Management"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Instance Management should return the same instance when getInstance is called multiple times","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the same instance when getInstance is called multiple times"},{"ancestorTitles":["BrowserManager","Browser Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Browser Management should try to launch Brave browser first","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should try to launch Brave browser first"},{"ancestorTitles":["BrowserManager","Browser Management"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Browser Management should fallback to default browser if Brave fails","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should fallback to default browser if Brave fails"},{"ancestorTitles":["BrowserManager","Browser Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Browser Management should reuse existing browser instance","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should reuse existing browser instance"},{"ancestorTitles":["BrowserManager","Context Management"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Context Management should create new context with specified ID","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create new context with specified ID"},{"ancestorTitles":["BrowserManager","Context Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Context Management should return existing context when getContext is called with same ID","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return existing context when getContext is called with same ID"},{"ancestorTitles":["BrowserManager","Context Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Context Management should create new context when getContext is called with new ID","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create new context when getContext is called with new ID"},{"ancestorTitles":["BrowserManager","Cleanup"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Cleanup should close specific context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should close specific context"},{"ancestorTitles":["BrowserManager","Cleanup"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Cleanup should close all contexts and browser when closeAll is called","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should close all contexts and browser when closeAll is called"},{"ancestorTitles":["BrowserManager","Cleanup"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BrowserManager Cleanup should handle closing non-existent context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle closing non-existent context"}],"endTime":1739077877019,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\__tests__\\browser-manager.test.ts","startTime":1739077875218,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Visibility Utils","checkVisibility"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"Visibility Utils checkVisibility should detect visible elements","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect visible elements"},{"ancestorTitles":["Visibility Utils","checkVisibility"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Visibility Utils checkVisibility should detect hidden elements","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should detect hidden elements"},{"ancestorTitles":["Visibility Utils","isInViewport"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Visibility Utils isInViewport should detect elements in viewport","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect elements in viewport"},{"ancestorTitles":["Visibility Utils","isInViewport"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Visibility Utils isInViewport should detect elements outside viewport","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should detect elements outside viewport"}],"endTime":1739077877050,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\features\\core\\utils\\__tests__\\visibility.test.ts","startTime":1739077875225,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["PlaywrightMcpServer","Tool Registration"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightMcpServer Tool Registration should correctly register tools","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should correctly register tools"},{"ancestorTitles":["PlaywrightMcpServer","Tool Registration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightMcpServer Tool Registration should support multiple tool registrations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should support multiple tool registrations"},{"ancestorTitles":["PlaywrightMcpServer","Error Handling"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightMcpServer Error Handling should not allow duplicate tool names","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not allow duplicate tool names"},{"ancestorTitles":["PlaywrightMcpServer","Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightMcpServer Error Handling should validate tool schema","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should validate tool schema"},{"ancestorTitles":["PlaywrightMcpServer","Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightMcpServer Error Handling should handle tool registration with empty schema","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tool registration with empty schema"}],"endTime":1739077877100,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\__tests__\\mcp-server.test.ts","startTime":1739077875226,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["MCP Protocol Integration","Tool Registration and Execution"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Tool Registration and Execution should register tools properly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should register tools properly"},{"ancestorTitles":["MCP Protocol Integration","Protocol Message Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Protocol Message Handling should handle initialize request","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle initialize request"},{"ancestorTitles":["MCP Protocol Integration","Protocol Message Handling"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Protocol Message Handling should reject invalid tool parameters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should reject invalid tool parameters"},{"ancestorTitles":["MCP Protocol Integration","Protocol Message Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Protocol Message Handling should properly format tool responses","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should properly format tool responses"},{"ancestorTitles":["MCP Protocol Integration","Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Error Handling should handle tool execution errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tool execution errors"},{"ancestorTitles":["MCP Protocol Integration","Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"MCP Protocol Integration Error Handling should prevent duplicate tool registration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should prevent duplicate tool registration"}],"endTime":1739077877113,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\__tests__\\mcp-integration.test.ts","startTime":1739077875227,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Observer Utils"],"duration":595,"failureDetails":[],"failureMessages":[],"fullName":"Observer Utils should detect attribute changes","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should detect attribute changes"},{"ancestorTitles":["Observer Utils"],"duration":577,"failureDetails":[],"failureMessages":[],"fullName":"Observer Utils should detect added elements","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should detect added elements"},{"ancestorTitles":["Observer Utils"],"duration":540,"failureDetails":[],"failureMessages":[],"fullName":"Observer Utils should detect removed elements","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should detect removed elements"},{"ancestorTitles":["Observer Utils"],"duration":568,"failureDetails":[],"failureMessages":[],"fullName":"Observer Utils should cleanup observer correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should cleanup observer correctly"}],"endTime":1739077879741,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\features\\core\\utils\\__tests__\\observer.test.ts","startTime":1739077875224,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Structure Utils","isSignificantElement"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils isSignificantElement should identify elements with significant tags","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should identify elements with significant tags"},{"ancestorTitles":["Structure Utils","isSignificantElement"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils isSignificantElement should identify elements with ID","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should identify elements with ID"},{"ancestorTitles":["Structure Utils","isSignificantElement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils isSignificantElement should identify elements with role","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should identify elements with role"},{"ancestorTitles":["Structure Utils","isSignificantElement"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils isSignificantElement should identify elements with classes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should identify elements with classes"},{"ancestorTitles":["Structure Utils","isSignificantElement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils isSignificantElement should not identify plain elements","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not identify plain elements"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should create structured info with correct depth","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should create structured info with correct depth"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should handle depth limitation correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle depth limitation correctly"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should include significant elements and attributes","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should include significant elements and attributes"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should format output with proper indentation and structure","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should format output with proper indentation and structure"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should truncate long text content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should truncate long text content"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should handle empty elements correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty elements correctly"},{"ancestorTitles":["Structure Utils","getStructuredInfo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils getStructuredInfo should combine multiple attributes correctly","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should combine multiple attributes correctly"},{"ancestorTitles":["Structure Utils","Integration Test with Real Browser"],"duration":4284,"failureDetails":[],"failureMessages":[],"fullName":"Structure Utils Integration Test with Real Browser should get elements in HTML format from real website","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"status":"passed","title":"should get elements in HTML format from real website"}],"endTime":1739077882632,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\features\\core\\utils\\__tests__\\structure.test.ts","startTime":1739077875221,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Playwright MCP Server Integration","Element Information Tools"],"duration":1837,"failureDetails":[],"failureMessages":[],"fullName":"Playwright MCP Server Integration Element Information Tools should list all elements on the page","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should list all elements on the page"},{"ancestorTitles":["Playwright MCP Server Integration","Element Information Tools"],"duration":1634,"failureDetails":[],"failureMessages":[],"fullName":"Playwright MCP Server Integration Element Information Tools should identify clickable elements","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should identify clickable elements"},{"ancestorTitles":["Playwright MCP Server Integration","Element Information Tools"],"duration":1684,"failureDetails":[],"failureMessages":[],"fullName":"Playwright MCP Server Integration Element Information Tools should provide detailed element information","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should provide detailed element information"},{"ancestorTitles":["Playwright MCP Server Integration","Element Information Tools"],"duration":1637,"failureDetails":[],"failureMessages":[],"fullName":"Playwright MCP Server Integration Element Information Tools should handle non-existent elements","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle non-existent elements"}],"endTime":1739077884362,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\__tests__\\integration.test.ts","startTime":1739077875219,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["PlaywrightElementOperations","getInfo"],"duration":470,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getInfo should get element information correctly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should get element information correctly"},{"ancestorTitles":["PlaywrightElementOperations","getInfo"],"duration":417,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getInfo should detect hidden elements","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should detect hidden elements"},{"ancestorTitles":["PlaywrightElementOperations","query"],"duration":492,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations query should find element by selector","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should find element by selector"},{"ancestorTitles":["PlaywrightElementOperations","query"],"duration":520,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations query should find element by role","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find element by role"},{"ancestorTitles":["PlaywrightElementOperations","query"],"duration":510,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations query should find element by text","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find element by text"},{"ancestorTitles":["PlaywrightElementOperations","query"],"duration":30385,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations query should handle non-existent elements","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle non-existent elements"},{"ancestorTitles":["PlaywrightElementOperations","queryAll"],"duration":440,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations queryAll should find all buttons","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should find all buttons"},{"ancestorTitles":["PlaywrightElementOperations","queryAll"],"duration":467,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations queryAll should filter visible elements","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should filter visible elements"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":410,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should return structured page information","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should return structured page information"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":395,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should handle depth limitation correctly","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle depth limitation correctly"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":391,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should get structure from specific selector","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should get structure from specific selector"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":389,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should handle custom depth with selector","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle custom depth with selector"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":437,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should return multiple elements when selector matches multiple elements","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should return multiple elements when selector matches multiple elements"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":439,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should handle nested elements correctly when using selector","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"status":"passed","title":"should handle nested elements correctly when using selector"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":409,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should handle deeply nested elements with same selector","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle deeply nested elements with same selector"},{"ancestorTitles":["PlaywrightElementOperations","getStructure"],"duration":378,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations getStructure should limit maxDepth to 1 when multiple elements are found","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should limit maxDepth to 1 when multiple elements are found"},{"ancestorTitles":["PlaywrightElementOperations","observe"],"duration":706,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations observe should detect attribute changes","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should detect attribute changes"},{"ancestorTitles":["PlaywrightElementOperations","observe"],"duration":690,"failureDetails":[],"failureMessages":[],"fullName":"PlaywrightElementOperations observe should detect DOM changes","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should detect DOM changes"}],"endTime":1739077916527,"message":"","name":"C:\\Users\\seichi\\MCPServers\\playwright-mcp-server\\src\\features\\core\\__tests__\\elements.test.ts","startTime":1739077875225,"status":"passed","summary":""}],"wasInterrupted":false}