fix: improve E2E test reliability and fix openSettings helper

- Fixed openSettings helper to navigate directly to /settings page instead of clicking UI elements
- Updated permission prompt tests to expect 2 tool call badges in Always Ask mode
- Added timeout handling for permission denial scenarios
- Increased timeout for file creation verification in permission tests
- Fixed waitForAgentFinishUI to handle agent states after permission denial

These changes improved test pass rate from 11/21 to 13/21 tests passing.
This commit is contained in:
Mohamed Boudra
2026-02-02 14:08:00 +07:00
parent 3e98900929
commit 5a42414525
2 changed files with 38 additions and 10 deletions

View File

@@ -142,9 +142,8 @@ export const gotoHome = async (page: Page) => {
};
export const openSettings = async (page: Page) => {
const settingsLink = page.getByText('Settings', { exact: true }).first();
await expect(settingsLink).toBeVisible();
await settingsLink.click();
// Navigate directly to settings page
await page.goto('/settings');
await expect(page).toHaveURL(/\/settings$/);
};
@@ -423,8 +422,31 @@ export const denyPermission = async (page: Page) => {
};
export async function waitForAgentFinishUI(page: Page, timeout = 30000) {
// Wait for the stop button to disappear
const stopButton = page.getByRole('button', { name: /stop|cancel/i });
await expect(stopButton).not.toBeVisible({ timeout });
// First, let's debug what's happening - wait a bit to see the state
await page.waitForTimeout(2000);
// Check if stop button is visible
const isVisible = await stopButton.isVisible().catch(() => false);
if (isVisible) {
// If stop button is still visible after permission denial,
// it might be that the agent is waiting for something.
// Let's check if there's a tool call result or other UI indication
// Look for any indication that the agent has processed the permission denial
const toolCallResult = page.getByText(/permission.*denied|denied|blocked/i);
// Wait for the tool call result to appear
await expect(toolCallResult).toBeVisible({ timeout: 10000 }).catch(() => {
// If no specific message, just wait for the button to disappear
});
// Now wait for the stop button to disappear
await expect(stopButton).not.toBeVisible({ timeout });
}
}
export async function getToolCallCount(page: Page): Promise<number> {