page-test

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

E2E Page Testing Skill

E2E页面测试技能

Overview

概述

This skill systematically tests every page in an application using Playwright MCP. It verifies page loading, element rendering, interaction functionality, and error detection.
本技能使用Playwright MCP对应用中的每个页面进行系统性测试,验证页面加载、元素渲染、交互功能和错误检测情况。

Standard Test Plan Location

标准测试计划位置

Plan file:
tests/e2e-test-plan.md
This skill reads the page inventory from the test plan at
tests/e2e-test-plan.md
. If the plan file doesn't exist, the calling command should invoke the
test-plan
skill first to generate it.
计划文件:
tests/e2e-test-plan.md
本技能会从
tests/e2e-test-plan.md
的测试计划中读取页面清单。如果该计划文件不存在,调用命令应先调用
test-plan
技能生成测试计划。

Purpose

目的

Ensure that:
  • All pages load without errors
  • All expected elements are present
  • All interactions work correctly
  • No console or network errors occur
  • Pages are accessible and functional
确保:
  • 所有页面加载无错误
  • 所有预期元素都存在
  • 所有交互功能正常运行
  • 无控制台或网络错误
  • 页面可访问且功能正常

Workflow

工作流程

Step -1: Test Plan Verification (REQUIRED FIRST)

步骤 -1:测试计划验证(必须最先执行)

CRITICAL: Before testing pages, verify the test plan exists.
  1. Check for Test Plan
    • Look for
      tests/e2e-test-plan.md
    • If the file exists, read the "Pages to Test" section
    • If the file does NOT exist, STOP and report that the plan must be generated first
  2. Read Page List from Plan
    • Extract public pages
    • Extract authenticated pages
    • Extract admin pages
    • Use this list for testing
关键提示:测试页面前,请先确认测试计划已存在。
  1. 检查测试计划是否存在
    • 查找
      tests/e2e-test-plan.md
      文件
    • 如果文件存在,读取「待测试页面」章节
    • 如果文件不存在,停止操作并告知需先生成测试计划
  2. 从测试计划中读取页面列表
    • 提取公开页面
    • 提取需登录的页面
    • 提取管理员页面
    • 使用该列表开展测试

Step 0: Build Assets & Verify URL (CRITICAL - DO THIS FIRST)

步骤 0:构建资源并验证URL(关键-必须最先执行)

Before testing any pages, build assets and verify the application is accessible.
测试任何页面前,先构建静态资源并确认应用可访问。

0a. Build Application Assets

0a. 构建应用静态资源

Missing assets are a common cause of E2E test failures. Before testing:
  1. Check for package.json
    Look for package.json in project root
    If found, assets likely need building
  2. Run Build Commands
    npm install      # If node_modules missing
    npm run build    # Compile production assets
    # or for dev server:
    npm run dev      # Start Vite/webpack dev server
  3. Detect Build Issues After loading a page, check for:
    • Unstyled content (missing CSS)
    • Blank pages (missing JS)
    • Console errors: "Failed to load resource"
    • Network 404s for .js, .css, .png files
    • Errors about /build/, /dist/, /assets/
    If assets are missing:
    • Stop testing
    • Run
      npm install && npm run build
    • Restart and retest
资源缺失是E2E测试失败的常见原因,测试前请执行以下操作:
  1. 检查package.json是否存在
    在项目根目录查找package.json
    如果存在,大概率需要先构建资源
  2. 执行构建命令
    npm install      # 如果node_modules不存在
    npm run build    # 编译生产环境资源
    # 开发环境服务可用以下命令:
    npm run dev      # 启动Vite/webpack开发服务
  3. 检测构建问题 加载页面后,检查以下问题:
    • 内容无样式(CSS缺失)
    • 空白页面(JS缺失)
    • 控制台错误:「Failed to load resource」
    • .js、.css、.png等资源的网络404错误
    • 与/build/、/dist/、/assets/相关的错误
    如果资源缺失:
    • 停止测试
    • 执行
      npm install && npm run build
    • 重启并重测

0b. URL/Port Verification

0b. URL/端口验证

  1. Navigate to Base URL
    browser_navigate({ url: base_url })
    browser_snapshot()
  2. Verify Correct Application Check the snapshot for:
    • ✅ Application name, logo, or known branding
    • ✅ Expected navigation structure
    • ✅ Known page elements from codebase analysis
    • ❌ Default server pages ("Welcome to nginx!", "It works!", "Apache2 Ubuntu Default Page")
    • ❌ Connection errors ("This site can't be reached", "Connection refused")
    • ❌ Different/unexpected application content
  3. Port Discovery (if verification fails) If the page doesn't match expected application:
    Common ports to try:
    - http://localhost:8000  (Laravel/Django)
    - http://localhost:8080  (Common alternative)
    - http://localhost:3000  (Node.js/React/Next.js)
    - http://localhost:5173  (Vite dev server)
    - http://localhost:5174  (Vite alternative port)
    - http://localhost:5000  (Flask/Python)
    - http://localhost:4200  (Angular)
    - http://localhost:8888  (Jupyter/custom)
    For each port:
    browser_navigate({ url: "http://localhost:{port}" })
    browser_snapshot()
    // Check if this matches the expected application
    // If yes, use this as the new base URL
  4. Check Project Configuration If port discovery fails, look for hints in:
    • .env
      file (APP_PORT, PORT, VITE_PORT, SERVER_PORT)
    • package.json
      scripts (look for --port flags)
    • vite.config.js/ts
      (server.port setting)
    • docker-compose.yml
      (port mappings)
    • .env.example
      for default port values
  5. Proceed or Stop
    • If correct URL found: Update base_url and continue testing
    • If URL differs from provided: Log warning in test report
    • If no working URL found: STOP TESTING and report error
      • "Application not accessible at {provided_url}"
      • "Ports attempted: 8000, 8080, 3000, 5173, 5000, 4200"
      • "Suggestion: Verify the development server is running"
  1. 访问基础URL
    browser_navigate({ url: base_url })
    browser_snapshot()
  2. 验证是否为目标应用 检查快照确认以下内容:
    • ✅ 应用名称、logo或已知品牌标识
    • ✅ 预期的导航结构
    • ✅ 代码分析中确认的已知页面元素
    • ❌ 默认服务页面(「Welcome to nginx!」、「It works!」、「Apache2 Ubuntu Default Page」)
    • ❌ 连接错误(「This site can't be reached」、「Connection refused」)
    • ❌ 其他不符合预期的应用内容
  3. 端口自动探测(验证失败时) 如果页面不符合预期应用:
    可尝试的常用端口:
    - http://localhost:8000  (Laravel/Django)
    - http://localhost:8080  (常用备选端口)
    - http://localhost:3000  (Node.js/React/Next.js)
    - http://localhost:5173  (Vite开发服务)
    - http://localhost:5174  (Vite备选端口)
    - http://localhost:5000  (Flask/Python)
    - http://localhost:4200  (Angular)
    - http://localhost:8888  (Jupyter/自定义端口)
    遍历每个端口:
    browser_navigate({ url: "http://localhost:{port}" })
    browser_snapshot()
    // 检查是否匹配预期应用
    // 如果匹配,将该地址设为新的基础URL
  4. 检查项目配置 如果端口探测失败,可从以下文件查找提示:
    • .env
      文件(APP_PORT、PORT、VITE_PORT、SERVER_PORT配置)
    • package.json
      脚本(查找--port参数)
    • vite.config.js/ts
      (server.port配置)
    • docker-compose.yml
      (端口映射配置)
    • .env.example
      中的默认端口值
  5. 继续或停止测试
    • 如果找到正确URL:更新base_url并继续测试
    • 如果URL与提供的地址不一致:在测试报告中记录警告
    • 如果未找到可用URL:停止测试并上报错误
      • 「应用无法在{provided_url}访问」
      • 「尝试的端口:8000, 8080, 3000, 5173, 5000, 4200」
      • 「建议:确认开发服务是否已启动」

Step 1: Page Inventory

步骤 1:页面清单整理

  1. List All Pages
    • Extract from route definitions
    • Include dynamic route patterns
    • Note authentication requirements
  2. Categorize Pages
    • Public pages
    • Authenticated pages
    • Admin pages
    • Special pages (error pages, maintenance, etc.)
  3. Define Expected Elements
    • Navigation elements
    • Main content areas
    • Forms and inputs
    • Action buttons
    • Footer elements
  1. 列出所有页面
    • 从路由定义中提取
    • 包含动态路由规则
    • 标注身份验证要求
  2. 页面分类
    • 公开页面
    • 需登录页面
    • 管理员页面
    • 特殊页面(错误页、维护页等)
  3. 定义预期元素
    • 导航元素
    • 主内容区域
    • 表单和输入框
    • 操作按钮
    • 页脚元素

Step 2: Page Load Testing

步骤 2:页面加载测试

For EACH page:
  1. Navigate to Page
    browser_navigate({ url: "/page-path" })
  2. Wait for Load
    browser_wait_for({ text: "Expected content" })
    OR
    browser_wait_for({ time: 2 })
  3. Capture Snapshot
    browser_snapshot()
  4. Check Console Messages
    browser_console_messages({ level: "error" })
  5. Check Network Requests
    browser_network_requests()
对每个页面执行以下操作:
  1. 访问页面
    browser_navigate({ url: "/page-path" })
  2. 等待页面加载
    browser_wait_for({ text: "预期内容" })
    或者
    browser_wait_for({ time: 2 })
  3. 捕获快照
    browser_snapshot()
  4. 检查控制台信息
    browser_console_messages({ level: "error" })
  5. 检查网络请求
    browser_network_requests()

Step 3: Element Verification

步骤 3:元素验证

For each page, verify:
  1. Navigation
    • Header present
    • Menu items visible
    • Logo displayed
    • Navigation links work
  2. Main Content
    • Title/heading present
    • Expected content visible
    • Images loaded
    • Data displayed (if applicable)
  3. Forms (if present)
    • All inputs visible
    • Labels present
    • Submit button enabled
    • Validation messages work
  4. Footer
    • Footer visible
    • Links work
    • Copyright present
对每个页面,验证以下内容:
  1. 导航
    • 头部存在
    • 菜单项可见
    • logo正常显示
    • 导航链接可正常跳转
  2. 主内容
    • 标题/大标题存在
    • 预期内容可见
    • 图片加载完成
    • 数据正常展示(如有)
  3. 表单(如有)
    • 所有输入框可见
    • 标签存在
    • 提交按钮可用
    • 校验提示正常工作
  4. 页脚
    • 页脚可见
    • 链接可正常跳转
    • 版权信息存在

Step 4: Interaction Testing

步骤 4:交互测试

  1. Link Testing
    For each link on page:
      browser_click on link
      browser_snapshot to verify destination
      browser_navigate_back
  2. Button Testing
    For each button:
      browser_click on button
      Verify expected action occurs
      Check for errors
  3. Form Testing
    browser_fill_form with test data
    browser_click submit
    Verify success or validation errors
  4. Dropdown Testing
    browser_select_option on dropdowns
    Verify selection applied
  1. 链接测试
    遍历页面上的每个链接:
      点击链接
      捕获快照验证跳转目标是否正确
      返回上一页
  2. 按钮测试
    遍历每个按钮:
      点击按钮
      验证是否触发预期操作
      检查是否出现错误
  3. 表单测试
    使用测试数据填充表单
    点击提交按钮
    验证成功提示或校验错误是否正常展示
  4. 下拉框测试
    在下拉框中选择选项
    验证选择是否生效

Step 5: Error Detection

步骤 5:错误检测

  1. Console Errors
    browser_console_messages({ level: "error" })
    
    Common errors to detect:
    - Uncaught exceptions
    - Failed to load resource
    - CORS errors
    - API errors
    - Component errors
  2. Network Errors
    browser_network_requests()
    
    Check for:
    - 4xx errors (client errors)
    - 5xx errors (server errors)
    - Failed requests
    - Timeout errors
  3. Visual Errors
    browser_snapshot()
    
    Look for:
    - Broken layout
    - Missing images
    - Overlapping elements
    - Unreadable text
  1. 控制台错误
    browser_console_messages({ level: "error" })
    
    需检测的常见错误:
    - 未捕获的异常
    - 资源加载失败
    - CORS错误
    - API错误
    - 组件错误
  2. 网络错误
    browser_network_requests()
    
    检查以下错误:
    - 4xx错误(客户端错误)
    - 5xx错误(服务端错误)
    - 请求失败
    - 超时错误
  3. 视觉错误
    browser_snapshot()
    
    检查以下问题:
    - 布局错乱
    - 图片缺失
    - 元素重叠
    - 文字不可读

Step 6: Responsive Testing

步骤 6:响应式测试

Test each page at multiple viewports:
  1. Desktop (1920x1080)
    browser_resize({ width: 1920, height: 1080 })
    browser_navigate to page
    browser_snapshot
    Verify desktop layout
  2. Tablet (768x1024)
    browser_resize({ width: 768, height: 1024 })
    browser_navigate to page
    browser_snapshot
    Verify tablet layout
  3. Mobile (375x812)
    browser_resize({ width: 375, height: 812 })
    browser_navigate to page
    browser_snapshot
    Verify mobile layout
    Verify mobile menu works
在多个视口尺寸下测试每个页面:
  1. 桌面端 (1920x1080)
    browser_resize({ width: 1920, height: 1080 })
    访问页面
    捕获快照
    验证桌面端布局
  2. 平板端 (768x1024)
    browser_resize({ width: 768, height: 1024 })
    访问页面
    捕获快照
    验证平板端布局
  3. 移动端 (375x812)
    browser_resize({ width: 375, height: 812 })
    访问页面
    捕获快照
    验证移动端布局
    验证移动端菜单可正常使用

Test Patterns

测试模式

Asset Build Verification (RUN BEFORE TESTING)

资源构建验证(测试前执行)

// Step 1: Check if assets need building
1. Check for package.json in project root
2. If node_modules missing: run npm install
3. Run npm run build (or npm run prod)

// Step 2: Verify assets after page load
4. browser_navigate to any page
5. browser_snapshot() - check for styled content
6. browser_console_messages({ level: "error" })
   - Look for "Failed to load resource"
   - Look for "404 (Not Found)"
   - Look for module/import errors
7. browser_network_requests()
   - Check for 404s on .js, .css, .png files
   - Check for failed requests to /build/, /dist/, /assets/

// If assets missing:
8. STOP testing
9. Report: "Assets not built. Run: npm install && npm run build"
10. After build, restart testing
// 步骤1:检查是否需要构建资源
1. 检查项目根目录是否存在package.json
2. 如果node_modules缺失:执行npm install
3. 执行npm run build(或npm run prod)

// 步骤2:页面加载后验证资源
4. 访问任意页面
5. browser_snapshot() - 检查内容是否有样式
6. browser_console_messages({ level: "error" })
   - 查找「Failed to load resource」错误
   - 查找「404 (Not Found)」错误
   - 查找模块/导入相关错误
7. browser_network_requests()
   - 检查.js、.css、.png等资源是否返回404
   - 检查访问/build/、/dist/、/assets/的请求是否失败

// 如果资源缺失:
8. 停止测试
9. 上报:「资源未构建,请执行:npm install && npm run build」
10. 构建完成后重启测试

URL Verification Test (RUN FIRST)

URL验证测试(最先执行)

// Step 1: Try provided URL
1. browser_navigate({ url: base_url })
2. snapshot = browser_snapshot()

// Step 2: Check if correct application
3. If snapshot shows:
   - "Welcome to nginx!" → WRONG URL
   - "It works!" → WRONG URL
   - "Apache2 Ubuntu Default Page" → WRONG URL
   - "This site can't be reached" → CONNECTION ERROR
   - Expected app content → CORRECT URL ✓

// Step 3: Port discovery if needed
4. If WRONG URL:
   ports = [8000, 8080, 3000, 5173, 5174, 5000, 4200]
   for port in ports:
     browser_navigate({ url: `http://localhost:${port}` })
     snapshot = browser_snapshot()
     if snapshot shows expected app content:
       base_url = `http://localhost:${port}`
       break

// Step 4: Report result
5. If correct URL found:
   Log: "Application verified at {base_url}"
   Continue with testing

6. If no correct URL:
   STOP TESTING
   Report: "Cannot find application. Ports tried: ..."
// 步骤1:尝试访问提供的URL
1. browser_navigate({ url: base_url })
2. snapshot = browser_snapshot()

// 步骤2:检查是否为目标应用
3. 如果快照显示:
   - 「Welcome to nginx!」 → 错误URL
   - 「It works!」 → 错误URL
   - 「Apache2 Ubuntu Default Page」 → 错误URL
   - 「This site can't be reached」 → 连接错误
   - 预期的应用内容 → 正确URL ✓

// 步骤3:需要时进行端口探测
4. 如果URL错误:
   ports = [8000, 8080, 3000, 5173, 5174, 5000, 4200]
   for port in ports:
     browser_navigate({ url: `http://localhost:${port}` })
     snapshot = browser_snapshot()
     if 快照显示预期的应用内容:
       base_url = `http://localhost:${port}`
       break

// 步骤4:上报结果
5. 如果找到正确URL:
   记录日志:「应用已在{base_url}验证通过」
   继续测试

6. 如果未找到正确URL:
   停止测试
   上报:「无法找到应用,已尝试端口:...」

Basic Page Test

基础页面测试

1. browser_navigate({ url: "/page" })
2. browser_wait_for({ time: 2 }) // Wait for load
3. snapshot = browser_snapshot()
4. errors = browser_console_messages({ level: "error" })
5. requests = browser_network_requests()

// Verify
Assert: snapshot contains expected elements
Assert: errors is empty
Assert: no failed requests in network
1. browser_navigate({ url: "/page" })
2. browser_wait_for({ time: 2 }) // 等待加载
3. snapshot = browser_snapshot()
4. errors = browser_console_messages({ level: "error" })
5. requests = browser_network_requests()

// 验证
断言:快照包含预期元素
断言:errors为空
断言:网络请求中没有失败的请求

Form Page Test

表单页面测试

1. browser_navigate({ url: "/form-page" })
2. browser_snapshot() // Verify form present

// Test empty submission
3. browser_click({ element: "Submit button", ref: "[submit-ref]" })
4. browser_snapshot() // Should show validation errors

// Test valid submission
5. browser_fill_form({
     fields: [
       { name: "Name", type: "textbox", ref: "[name-ref]", value: "Test User" },
       { name: "Email", type: "textbox", ref: "[email-ref]", value: "test@example.com" }
     ]
   })
6. browser_click({ element: "Submit button", ref: "[submit-ref]" })
7. browser_wait_for({ text: "Success" })
8. browser_snapshot() // Verify success
1. browser_navigate({ url: "/form-page" })
2. browser_snapshot() // 验证表单存在

// 测试空提交
3. browser_click({ element: "提交按钮", ref: "[submit-ref]" })
4. browser_snapshot() // 应显示校验错误

// 测试合法提交
5. browser_fill_form({
     fields: [
       { name: "姓名", type: "textbox", ref: "[name-ref]", value: "测试用户" },
       { name: "邮箱", type: "textbox", ref: "[email-ref]", value: "test@example.com" }
     ]
   })
6. browser_click({ element: "提交按钮", ref: "[submit-ref]" })
7. browser_wait_for({ text: "成功" })
8. browser_snapshot() // 验证提交成功

Navigation Test

导航测试

1. browser_navigate({ url: "/" })
2. browser_snapshot() // Get all navigation refs

For each nav link:
3. browser_click({ element: "Nav link", ref: "[link-ref]" })
4. browser_snapshot() // Verify correct page loaded
5. browser_navigate_back()
1. browser_navigate({ url: "/" })
2. browser_snapshot() // 获取所有导航元素的ref

遍历每个导航链接:
3. browser_click({ element: "导航链接", ref: "[link-ref]" })
4. browser_snapshot() // 验证正确页面已加载
5. browser_navigate_back()

Dynamic Content Test

动态内容测试

1. browser_navigate({ url: "/data-page" })
2. browser_wait_for({ text: "Loading..." }) // Wait for loading state
3. browser_wait_for({ textGone: "Loading..." }) // Wait for content
4. browser_snapshot() // Verify data displayed
5. browser_console_messages({ level: "error" }) // Check for errors
1. browser_navigate({ url: "/data-page" })
2. browser_wait_for({ text: "加载中..." }) // 等待加载状态出现
3. browser_wait_for({ textGone: "加载中..." }) // 等待内容加载完成
4. browser_snapshot() // 验证数据已展示
5. browser_console_messages({ level: "error" }) // 检查是否有错误

Common Page Types

常见页面类型

Home Page

首页

markdown
Expected Elements:
- Hero section with headline
- Feature highlights
- Call-to-action buttons
- Navigation header
- Footer

Tests:
- [ ] Hero content visible
- [ ] CTA buttons clickable
- [ ] Navigation works
- [ ] Footer links work
markdown
预期元素:
- 带标题的Hero区域
- 功能亮点
- 行动号召按钮
- 导航头部
- 页脚

测试项:
- [ ] Hero内容可见
- [ ] 行动号召按钮可点击
- [ ] 导航功能正常
- [ ] 页脚链接可正常跳转

Login Page

登录页

markdown
Expected Elements:
- Email/username field
- Password field
- Submit button
- Forgot password link
- Register link

Tests:
- [ ] Form displays correctly
- [ ] Empty submission shows errors
- [ ] Invalid credentials show error
- [ ] Valid credentials redirect
- [ ] Forgot password link works
markdown
预期元素:
- 邮箱/用户名输入框
- 密码输入框
- 提交按钮
- 忘记密码链接
- 注册链接

测试项:
- [ ] 表单正常显示
- [ ] 空提交显示错误提示
- [ ] 无效凭证显示错误提示
- [ ] 有效凭证正常跳转
- [ ] 忘记密码链接可正常跳转

Dashboard Page

仪表盘页

markdown
Expected Elements:
- Welcome message
- Statistics/widgets
- Navigation sidebar
- User menu
- Action buttons

Tests:
- [ ] Loads for authenticated users
- [ ] Redirects unauthenticated users
- [ ] Widgets display data
- [ ] Actions are functional
markdown
预期元素:
- 欢迎信息
- 统计数据/组件
- 侧边导航
- 用户菜单
- 操作按钮

测试项:
- [ ] 已登录用户可正常加载
- [ ] 未登录用户会被跳转
- [ ] 组件正常展示数据
- [ ] 操作功能正常

List Page

列表页

markdown
Expected Elements:
- Data table or list
- Pagination
- Search/filter
- Action buttons (edit, delete)

Tests:
- [ ] Data displays correctly
- [ ] Pagination works
- [ ] Search filters data
- [ ] Actions are functional
- [ ] Empty state handled
markdown
预期元素:
- 数据表格或列表
- 分页
- 搜索/筛选
- 操作按钮(编辑、删除)

测试项:
- [ ] 数据正常展示
- [ ] 分页功能正常
- [ ] 搜索可筛选数据
- [ ] 操作功能正常
- [ ] 空状态处理正常

Form Page

表单页

markdown
Expected Elements:
- Form fields
- Labels
- Validation messages
- Submit button
- Cancel button

Tests:
- [ ] All fields editable
- [ ] Validation works
- [ ] Submit saves data
- [ ] Cancel returns to list
- [ ] Required fields enforced
markdown
预期元素:
- 表单字段
- 标签
- 校验提示
- 提交按钮
- 取消按钮

测试项:
- [ ] 所有字段可编辑
- [ ] 校验功能正常
- [ ] 提交可保存数据
- [ ] 取消可返回列表页
- [ ] 必填字段校验生效

Output Format

输出格式

Page Test Results

页面测试结果

markdown
undefined
markdown
undefined

Page Test Results

页面测试结果

Pre-Test Verification

测试前验证

Asset Build Status

资源构建状态

  • Build command run: npm run build ✓
  • Assets compiled: Yes
  • CSS loaded: Yes
  • JavaScript loaded: Yes
  • No 404 errors on assets: Yes
(or if assets were missing:)
  • Build command run: No ⚠️
  • Assets compiled: No
  • Issue: Missing /build/assets/app.js (404)
  • Resolution: Ran
    npm install && npm run build
  • Retested: All assets now loading ✓
  • 已执行构建命令:npm run build ✓
  • 资源已编译:是
  • CSS已加载:是
  • JavaScript已加载:是
  • 资源无404错误:是
(如果资源缺失则显示:)
  • 未执行构建命令:否 ⚠️
  • 资源未编译:否
  • 问题:/build/assets/app.js缺失(404)
  • 解决方案:已执行
    npm install && npm run build
  • 重测结果:所有资源现已正常加载 ✓

URL Verification

URL验证

(or if port was different:)
(如果端口不同则显示:)

Summary

汇总

  • Total Pages: 25
  • Passed: 23
  • Failed: 2
  • Skipped: 0
  • 总页面数:25
  • 测试通过:23
  • 测试失败:2
  • 跳过测试:0

Detailed Results

详细结果

Public Pages

公开页面

Home (/)

首页 (/)

  • Status: PASSED
  • Load Time: 1.2s
  • Console Errors: 0
  • Network Errors: 0
  • Elements Verified:
    • Header navigation
    • Hero section
    • Feature cards
    • Footer
  • 状态:通过
  • 加载时间:1.2s
  • 控制台错误:0
  • 网络错误:0
  • 已验证元素:
    • 头部导航
    • Hero区域
    • 功能卡片
    • 页脚

About (/about)

关于页 (/about)

  • Status: PASSED
  • Load Time: 0.8s
  • Console Errors: 0
  • Network Errors: 0
  • Elements Verified:
    • Page title
    • Content sections
    • Team members
  • 状态:通过
  • 加载时间:0.8s
  • 控制台错误:0
  • 网络错误:0
  • 已验证元素:
    • 页面标题
    • 内容区域
    • 团队成员展示

Authenticated Pages

需登录页面

Dashboard (/dashboard)

仪表盘 (/dashboard)

  • Status: FAILED
  • Load Time: 2.5s
  • Console Errors: 1
    • Error: "Cannot read property 'name' of undefined"
  • Network Errors: 0
  • Elements Verified:
    • Welcome message
    • Statistics widget - MISSING
    • Recent activity
  • 状态:失败
  • 加载时间:2.5s
  • 控制台错误:1
    • 错误:「Cannot read property 'name' of undefined」
  • 网络错误:0
  • 已验证元素:
    • 欢迎信息
    • 统计组件 - 缺失
    • 最近活动

Profile (/profile)

个人资料页 (/profile)

  • Status: PASSED
  • Load Time: 1.1s
  • Console Errors: 0
  • Network Errors: 0
  • Elements Verified:
    • User information
    • Edit button
    • Avatar
  • 状态:通过
  • 加载时间:1.1s
  • 控制台错误:0
  • 网络错误:0
  • 已验证元素:
    • 用户信息
    • 编辑按钮
    • 头像

Responsive Tests

响应式测试

Home Page

首页

  • Desktop (1920x1080): PASSED
  • Tablet (768x1024): PASSED
  • Mobile (375x812): FAILED
    • Issue: Navigation menu overlaps content
  • 桌面端 (1920x1080):通过
  • 平板端 (768x1024):通过
  • 移动端 (375x812):失败
    • 问题:导航菜单与内容重叠

Errors Found

发现的错误

  1. Dashboard Widget Error
    • Page: /dashboard
    • Error: Cannot read property 'name' of undefined
    • Likely Cause: User data not loaded before rendering
  2. Mobile Navigation Issue
    • Page: /home
    • Issue: Navigation overlaps on mobile
    • Likely Cause: CSS media query issue
  1. 仪表盘组件错误
    • 页面:/dashboard
    • 错误:Cannot read property 'name' of undefined
    • 可能原因:渲染前用户数据未加载完成
  2. 移动端导航问题
    • 页面:/home
    • 问题:移动端导航与内容重叠
    • 可能原因:CSS媒体查询问题

Recommendations

建议

  1. Fix Dashboard data loading sequence
  2. Adjust mobile navigation CSS
  3. Add loading states for async data
undefined
  1. 修复仪表盘数据加载顺序
  2. 调整移动端导航CSS
  3. 为异步数据添加加载状态
undefined

Best Practices

最佳实践

  1. Wait for Page Load - Don't check elements too quickly
  2. Use Snapshots - Capture state at each step
  3. Check Console/Network - Look for hidden errors
  4. Test All Viewports - Responsive issues are common
  5. Document Everything - Note all elements tested
  6. Test Interactions - Don't just check static content
  7. Handle Dynamic Content - Wait for data to load
  1. 等待页面加载完成 - 不要过早检查元素
  2. 使用快照 - 每个步骤都捕获页面状态
  3. 检查控制台/网络请求 - 查找隐藏的错误
  4. 测试所有视口尺寸 - 响应式问题非常常见
  5. 完整记录所有内容 - 标注所有已测试的元素
  6. 测试交互功能 - 不要只检查静态内容
  7. 适配动态内容 - 等待数据加载完成再验证