add electron e2e harness and regression coverage (#697)

This commit is contained in:
Lingxuan Zuo
2026-03-28 15:34:20 +08:00
committed by GitHub
Unverified
parent 514a6c4112
commit 2668082809
22 changed files with 535 additions and 78 deletions

View File

@@ -0,0 +1,65 @@
import { completeSetup, expect, test } from './fixtures/electron';
const TEST_PROVIDER_ID = 'moonshot-e2e';
const TEST_PROVIDER_LABEL = 'Moonshot E2E';
async function seedTestProvider(page: Parameters<typeof completeSetup>[0]): Promise<void> {
await page.evaluate(async ({ providerId, providerLabel }) => {
const now = new Date().toISOString();
await window.electron.ipcRenderer.invoke('provider:save', {
id: providerId,
name: providerLabel,
type: 'moonshot',
baseUrl: 'https://api.moonshot.cn/v1',
model: 'kimi-k2.5',
enabled: true,
createdAt: now,
updatedAt: now,
});
}, { providerId: TEST_PROVIDER_ID, providerLabel: TEST_PROVIDER_LABEL });
}
test.describe('ClawX provider lifecycle', () => {
test('shows a saved provider and removes it cleanly after deletion', async ({ page }) => {
await completeSetup(page);
await seedTestProvider(page);
await page.getByTestId('sidebar-nav-models').click();
await expect(page.getByTestId('providers-settings')).toBeVisible();
await expect(page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`)).toContainText(TEST_PROVIDER_LABEL);
await page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`).hover();
await page.getByTestId(`provider-delete-${TEST_PROVIDER_ID}`).click();
await expect(page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`)).toHaveCount(0);
await expect(page.getByText(TEST_PROVIDER_LABEL)).toHaveCount(0);
});
test('does not redisplay a deleted provider after relaunch', async ({ electronApp, launchElectronApp, page }) => {
await completeSetup(page);
await seedTestProvider(page);
await page.getByTestId('sidebar-nav-models').click();
await expect(page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`)).toContainText(TEST_PROVIDER_LABEL);
await page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`).hover();
await page.getByTestId(`provider-delete-${TEST_PROVIDER_ID}`).click();
await expect(page.getByTestId(`provider-card-${TEST_PROVIDER_ID}`)).toHaveCount(0);
await electronApp.close();
const relaunchedApp = await launchElectronApp();
try {
const relaunchedPage = await relaunchedApp.firstWindow();
await relaunchedPage.waitForLoadState('domcontentloaded');
await expect(relaunchedPage.getByTestId('main-layout')).toBeVisible();
await relaunchedPage.getByTestId('sidebar-nav-models').click();
await expect(relaunchedPage.getByTestId('providers-settings')).toBeVisible();
await expect(relaunchedPage.getByTestId(`provider-card-${TEST_PROVIDER_ID}`)).toHaveCount(0);
await expect(relaunchedPage.getByText(TEST_PROVIDER_LABEL)).toHaveCount(0);
} finally {
await relaunchedApp.close();
}
});
});