guanghu/tests/smoke/getting-started-template.spec.ts
冰朔 8739805f99
Some checks failed
Auto-update PR branches / Update open PR branches (push) Has been cancelled
CI / Frontend Static Quality Checks (push) Has been cancelled
CI / Frontend Tests & Coverage (push) Has been cancelled
CI / Rust Tests & Quality Checks (push) Has been cancelled
CI / Linux build verification (push) Has been cancelled
Release (Alpha) / Compute alpha version (push) Has been cancelled
Release (Alpha) / Build release artifacts (push) Has been cancelled
Release (Alpha) / GitHub Release (alpha) (push) Has been cancelled
Release (Alpha) / Update docs and release pages (push) Has been cancelled
Deploy docs / Build VitePress site (push) Has been cancelled
Deploy docs / Deploy to GitHub Pages (push) Has been cancelled
光湖开源源码快照 · Tolaria AGPL 分叉基线 · 独立更新链
2026-07-05 17:45:16 +08:00

69 lines
2.5 KiB
TypeScript

import { test, expect } from '@playwright/test'
test('Getting Started template shows inline retry on clone failure and opens after retry @smoke', async ({ page }) => {
const clonedPath = '/Users/mock/Documents/Getting Started'
await page.addInitScript(() => {
localStorage.clear()
let ref: Record<string, unknown> | null = null
let cloneAttempts = 0
let cloneSucceeded = false
Object.defineProperty(window, '__mockHandlers', {
configurable: true,
set(value) {
ref = value as Record<string, unknown>
ref.load_vault_list = () => ({
vaults: [],
active_vault: null,
hidden_defaults: [],
})
ref.get_default_vault_path = () => '/Users/mock/Documents/Getting Started'
ref.check_vault_exists = (args?: { path?: string }) => args?.path === '/Users/mock/Documents/Getting Started'
? cloneSucceeded
: false
ref.create_getting_started_vault = (args: { targetPath?: string | null }) => {
cloneAttempts += 1
if (cloneAttempts === 1) {
throw 'git clone failed: fatal: unable to access'
}
if (args.targetPath !== '/Users/mock/Documents/Getting Started') {
throw new Error(`Unexpected Getting Started target: ${args.targetPath}`)
}
cloneSucceeded = true
return args.targetPath
}
},
get() {
return ref
},
})
Object.defineProperty(window, 'prompt', {
configurable: true,
value: () => '/Users/mock/Documents',
})
})
await page.goto('/', { waitUntil: 'domcontentloaded' })
await expect(page.getByTestId('welcome-screen')).toBeVisible()
await page.getByTestId('welcome-create-vault').click()
await expect(page.getByTestId('welcome-error')).toContainText(
'Could not download Getting Started vault: git clone failed: fatal: unable to access',
)
await expect(page.getByTestId('welcome-retry-template')).toBeVisible()
await page.getByTestId('welcome-retry-template').click()
await expect(page.getByTestId('welcome-screen')).not.toBeVisible()
await expect(page.getByText(`Getting Started vault cloned and opened at ${clonedPath}`)).toBeVisible()
await expect(page.getByTestId('claude-onboarding-screen')).toBeVisible()
await expect(page.getByText('Claude Code not detected')).toBeVisible()
await page.getByTestId('claude-onboarding-continue').click()
await expect(page.locator('[data-testid="note-list-container"]')).toBeVisible()
})