前端工程化 词条目录
前端Wiki/词条/端到端测试

端到端测试

定义用真实浏览器走完整用户旅程的测试,金字塔顶端、置信度最高也最贵

端到端测试模拟真实用户:打开浏览器、输入网址、点击按钮、填表单、断言页面真的渲染出了期望内容。它验证的是从路由、接口、状态到渲染的整条链路,因此它是唯一能回答「这个流程用户真能走通吗」的测试。主流工具是 Playwright(微软,跨浏览器、API 现代化)与 Cypress(交互式时间长、单浏览器为主)。

它贵:跑一个用例要数秒,一次 CI 中等规模套件几分钟起,且对环境与接口数据敏感,flaky(偶发失败)率明显高于单元测试。实践要点是少而精——只覆盖核心商业链路(登录、下单、支付),接口数据用 mock server 锁死,用 id 或 testid 定位元素而非易变的文案,跑失败先查是不是自己的用例脆。

JavaScript
// login.spec.js —— Playwright 写法
import { test, expect } from '@playwright/test';

test('用户登录成功后跳转首页', async ({ page }) => {
  await page.goto('http://localhost:3000/login');

  await page.fill('[data-testid="username"]', 'admin');
  await page.fill('[data-testid="password"]', '123456');
  await page.click('[data-testid="submit"]');

  // 断言 URL 跳转 + 页面出现用户名
  await expect(page).toHaveURL('/');
  await expect(page.locator('.welcome')).toContainText('admin');
});

// 配置:playwright.config.js
// export default {
//   testDir: './tests',
//   use: { baseURL: 'http://localhost:3000' },
//   webServer: { command: 'npm run dev', url: 'http://localhost:3000', reuseExistingServer: true }
// };
⚠ 常见误区
🔗 相关词条组件测试与端到端测试Mock 与接口联调
← 返回来源章节组件测试与端到端测试