fix: fix regex on mcp server tab test (#8175)

* Fixed MCP Server Tab Test

* Fixed mcp server tab test

* Added timeout to test

* Added retry to mcp server tab test
This commit is contained in:
Lucas Oliveira 2025-05-22 11:45:18 -03:00 • committed by GitHub
commit f8e8ad64b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -6,7 +6,12 @@ test(
"user should be able to manage MCP server actions and configuration", "user should be able to manage MCP server actions and configuration",
{ tag: ["@release", "@workspace", "@components"] }, { tag: ["@release", "@workspace", "@components"] },
async ({ page }) => { async ({ page }) => {
const maxRetries = 5;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try { try {
console.log(`Attempt ${attempt} of ${maxRetries}`);
await awaitBootstrapTest(page); await awaitBootstrapTest(page);
// Create a new flow // Create a new flow
@ -122,7 +127,9 @@ test(
await expect(page.getByTestId("div-mcp-server-tools")).toBeVisible(); await expect(page.getByTestId("div-mcp-server-tools")).toBeVisible();
// Generate API key if not in auto login mode // Generate API key if not in auto login mode
const isAutoLogin = await page.getByText("Generate API key").isVisible(); const isAutoLogin = await page
.getByText("Generate API key")
.isVisible();
if (isAutoLogin) { if (isAutoLogin) {
await page.getByText("Generate API key").click(); await page.getByText("Generate API key").click();
await expect(page.getByText("API key generated")).toBeVisible(); await expect(page.getByText("API key generated")).toBeVisible();
@ -135,12 +142,12 @@ test(
// Get the SSE URL from the configuration // Get the SSE URL from the configuration
const configJson = await page.locator("pre").textContent(); const configJson = await page.locator("pre").textContent();
expect(configJson).toContain("mcpServers"); expect(configJson).toContain("mcpServers");
expect(configJson).toContain("supergateway"); expect(configJson).toContain("mcp-proxy");
expect(configJson).toContain("sse"); expect(configJson).toContain("uvx");
// Extract the SSE URL from the configuration // Extract the SSE URL from the configuration
const sseUrlMatch = configJson?.match( const sseUrlMatch = configJson?.match(
/"args":\s*\[\s*"-y",\s*"supergateway",\s*"--sse",\s*"([^"]+)"/, /"args":\s*\[\s*"mcp-proxy"\s*,\s*"([^"]+)"/,
); );
expect(sseUrlMatch).not.toBeNull(); expect(sseUrlMatch).not.toBeNull();
const sseUrl = sseUrlMatch![1]; const sseUrl = sseUrlMatch![1];
@ -180,8 +187,11 @@ test(
state: "visible", state: "visible",
timeout: 30000, timeout: 30000,
}); });
await page.waitForTimeout(2000);
await page.getByTestId("textarea_str_sse_url").fill("");
await page.getByTestId("textarea_str_sse_url").fill(sseUrl); await page.getByTestId("textarea_str_sse_url").fill(sseUrl);
await page.waitForTimeout(2000); await page.waitForTimeout(2000);
// Wait for the tools to become available // Wait for the tools to become available
@ -208,11 +218,9 @@ test(
} }
if (!dropdownEnabled) { if (!dropdownEnabled) {
test.skip( throw new Error(
true,
"Dropdown did not become enabled after multiple refresh attempts", "Dropdown did not become enabled after multiple refresh attempts",
); );
return;
} }
// Verify tools are available // Verify tools are available
@ -221,9 +229,22 @@ test(
const fetchOptionCount = await page.getByText("mcp_test_name").count(); const fetchOptionCount = await page.getByText("mcp_test_name").count();
expect(fetchOptionCount).toBeGreaterThan(0); expect(fetchOptionCount).toBeGreaterThan(0);
// If we get here, the test passed
console.log(`Test passed on attempt ${attempt}`);
return;
} catch (error) { } catch (error) {
console.log(`Test failed with error: ${error.message}`); error = error as Error;
test.skip(true, `Skipping test due to error: ${error.message}`); console.log(`Attempt ${attempt} failed:`, error);
if (attempt === maxRetries) {
console.log(`All ${maxRetries} attempts failed. Last error:`, error);
throw error;
}
// Wait a bit before retrying
await page.waitForTimeout(2000);
}
} }
}, },
); );