feat(history): establish Telegram SaaS platform foundation
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import { expect, test, type Page } from '@playwright/test'
|
||||
|
||||
const account = process.env.E2E_ACCOUNT || 'e2e-1785008967@local.test'
|
||||
const password = process.env.E2E_PASSWORD || 'Lingxi-E2E-2026!'
|
||||
|
||||
async function login(page: Page, loginAccount = account, loginPassword = password) {
|
||||
await page.goto('/login')
|
||||
await page.locator('input[autocomplete="username"]').fill(loginAccount)
|
||||
await page.locator('input[autocomplete="current-password"]').fill(loginPassword)
|
||||
await page.locator('button[type="submit"]').click()
|
||||
await expect(page).toHaveURL(/\/dashboard$/)
|
||||
}
|
||||
|
||||
test('Telegram 手机号验证码和二步密码登录向导', async ({ page, request }, testInfo) => {
|
||||
const suffix = `${Date.now()}-${testInfo.project.name}`
|
||||
const loginAccount = `channel-e2e-${suffix}@local.test`
|
||||
const loginPassword = 'Lingxi-Channel-2026!'
|
||||
const response = await request.post('/api/auth/register', {
|
||||
data: { name: 'Channel E2E', account: loginAccount, password: loginPassword, company: 'Channel E2E', industry: '跨境电商', teamSize: '1-10人' },
|
||||
})
|
||||
expect(response.ok()).toBeTruthy()
|
||||
await login(page, loginAccount, loginPassword)
|
||||
await page.goto('/channels')
|
||||
await page.getByRole('button', { name: '连接', exact: true }).click()
|
||||
await expect(page.getByPlaceholder('+8613800138000')).toBeVisible()
|
||||
await expect(page.getByText('Telegram 验证码')).toHaveCount(0)
|
||||
await page.screenshot({ path: testInfo.outputPath('telegram-login-wizard.png'), fullPage: true })
|
||||
})
|
||||
|
||||
test('登录与核心工作台视觉链路', async ({ page }, testInfo) => {
|
||||
await login(page)
|
||||
await expect(page).toHaveURL(/\/dashboard$/)
|
||||
await page.screenshot({ path: testInfo.outputPath('dashboard.png'), fullPage: true })
|
||||
|
||||
await page.goto('/channels')
|
||||
await expect(page.getByText('Telegram', { exact: true }).first()).toBeVisible()
|
||||
await page.screenshot({ path: testInfo.outputPath('channels.png'), fullPage: true })
|
||||
|
||||
await page.goto('/inbox')
|
||||
await page.getByTestId('conversation-item').first().click()
|
||||
await expect(page.locator('input[type="file"]')).toHaveCount(4)
|
||||
await page.screenshot({ path: testInfo.outputPath('inbox.png'), fullPage: true })
|
||||
})
|
||||
|
||||
test('知识文件真实上传解析', async ({ page }, testInfo) => {
|
||||
await login(page)
|
||||
await page.goto('/knowledge')
|
||||
await page.getByRole('button', { name: '上传文件' }).click()
|
||||
await page.locator('input[type="file"]').setInputFiles({
|
||||
name: `visual-e2e-${testInfo.project.name}.txt`,
|
||||
mimeType: 'text/plain',
|
||||
buffer: Buffer.from('灵犀跨境视觉 E2E 知识解析测试。'),
|
||||
})
|
||||
await page.getByRole('button', { name: '上传并解析' }).click()
|
||||
await expect(page.getByText(/知识文件解析完成/)).toBeVisible()
|
||||
await page.screenshot({ path: testInfo.outputPath('knowledge-uploaded.png'), fullPage: true })
|
||||
})
|
||||
|
||||
test('团队邀请和支付页不显示虚假成功', async ({ page }, testInfo) => {
|
||||
await login(page)
|
||||
await page.goto('/team')
|
||||
await expect(page.getByRole('button', { name: '邀请成员' })).toBeVisible()
|
||||
await page.screenshot({ path: testInfo.outputPath('team.png'), fullPage: true })
|
||||
|
||||
await page.goto('/billing')
|
||||
await expect(page.getByText('Stripe Checkout', { exact: false })).toBeVisible()
|
||||
await page.screenshot({ path: testInfo.outputPath('billing.png'), fullPage: true })
|
||||
})
|
||||
Reference in New Issue
Block a user