diff --git a/apps/web_v1/scripts/visual-check.mjs b/apps/web_v1/scripts/visual-check.mjs index d44da0c..9fa0160 100644 --- a/apps/web_v1/scripts/visual-check.mjs +++ b/apps/web_v1/scripts/visual-check.mjs @@ -280,6 +280,9 @@ const collectMetrics = async () => page.evaluate(() => { }) await page.goto(`http://127.0.0.1:${port}/`, { waitUntil: 'networkidle' }) +await page.locator('.login-form input').first().fill('localhost:9150') +await page.waitForSelector('.connection-card.online') +const loginConnectionStatus = await page.locator('.connection-card').textContent() await page.screenshot({ path: 'test-results/login-react-acro.png', fullPage: true }) await page.locator('.login-form-panel .arco-btn-primary').click() await page.waitForSelector('.workbench-shell') @@ -415,6 +418,7 @@ console.log(JSON.stringify({ const failures = [] const metrics = workspaceMetrics +if (!loginConnectionStatus?.includes('连接正常')) failures.push(`scheme-less server address must connect, got ${JSON.stringify(loginConnectionStatus)}`) if (errors.length) failures.push(`console errors: ${errors.join('; ')}`) if (metrics.statusbarHeight !== 32) failures.push(`expected statusbar height 32, got ${metrics.statusbarHeight}`) if (!metrics.statusName) failures.push('expected authenticated status label') diff --git a/apps/web_v1/src/api/client.ts b/apps/web_v1/src/api/client.ts index 5ff99b4..deccf24 100644 --- a/apps/web_v1/src/api/client.ts +++ b/apps/web_v1/src/api/client.ts @@ -136,6 +136,7 @@ function fallbackErrorMessage(status: number) { } export function normalizeBaseUrl(value: string) { - const trimmed = value.trim() - return trimmed.replace(/\/+$/, '') + const normalized = value.trim().replace(/\/+$/, '') + if (!normalized || /^https?:\/\//i.test(normalized)) return normalized + return `http://${normalized}` }