{"version":3,"names":["test","expect","describe","page","step","goto","waitForLoadState","waitForTimeout","evaluate","window","scrollTo","top","behavior","console","log","links","locator","linkCount","count","first","hover","screenshot","path","fullPage","emailInput","click","email","char","type","delay","passwordInput","password","loginButton","keyboard","press","faqLink","isVisible","timeout","catch","goBack","goForward","setViewportSize","width","height","scrollBy","menuButton","fill","context","newPage","close","bringToFront","body","toBeVisible"],"sources":["user-interaction.spec.js"],"sourcesContent":["import { test, expect } from '@playwright/test'\n\n/**\n * E2E Test: 真实用户交互行为模拟\n * 模拟用户的点击、滚动、悬停等真实操作\n */\n\ntest.describe('真实用户交互行为', () => {\n\n  test('用户浏览首页：滚动、点击、悬停', async ({ page }) => {\n\n    await test.step('访问首页并等待加载', async () => {\n      await page.goto('/')\n      await page.waitForLoadState('networkidle')\n\n      // 模拟真实用户等待查看页面\n      await page.waitForTimeout(1000)\n    })\n\n    await test.step('向下滚动浏览内容', async () => {\n      // 模拟用户慢慢滚动页面\n      await page.evaluate(() => {\n        window.scrollTo({ top: 300, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(1500)\n\n      await page.evaluate(() => {\n        window.scrollTo({ top: 600, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(1500)\n\n      console.log('✓ 用户滚动浏览页面')\n    })\n\n    await test.step('查找并悬停在链接上', async () => {\n      // 查找所有可点击的链接\n      const links = page.locator('a[href]')\n      const linkCount = await links.count()\n\n      if (linkCount > 0) {\n        // 悬停在第一个链接上\n        await links.first().hover()\n        await page.waitForTimeout(500)\n\n        console.log(`✓ 找到 ${linkCount} 个链接，模拟悬停`)\n      }\n    })\n\n    await test.step('滚动回顶部', async () => {\n      await page.evaluate(() => {\n        window.scrollTo({ top: 0, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 滚动回顶部')\n    })\n\n    await test.step('截图记录用户视图', async () => {\n      await page.screenshot({\n        path: 'test-results/user-interaction-homepage.png',\n        fullPage: true\n      })\n    })\n  })\n\n  test('用户填写表单：真实输入行为', async ({ page }) => {\n\n    await test.step('访问登录页', async () => {\n      await page.goto('/login')\n      await page.waitForLoadState('networkidle')\n    })\n\n    await test.step('模拟真实用户输入邮箱', async () => {\n      const emailInput = page.locator('input[type=\"email\"], input[type=\"text\"]').first()\n\n      // 点击输入框获得焦点\n      await emailInput.click()\n      await page.waitForTimeout(300)\n\n      // 模拟逐字输入（真实用户不会瞬间填满）\n      const email = 'test@example.com'\n      for (const char of email) {\n        await emailInput.type(char, { delay: 100 })\n      }\n\n      await page.waitForTimeout(500)\n      console.log('✓ 模拟真实用户输入邮箱')\n    })\n\n    await test.step('模拟真实用户输入密码', async () => {\n      const passwordInput = page.locator('input[type=\"password\"]')\n\n      await passwordInput.click()\n      await page.waitForTimeout(200)\n\n      // 模拟输入密码\n      const password = 'password123'\n      for (const char of password) {\n        await passwordInput.type(char, { delay: 80 })\n      }\n\n      await page.waitForTimeout(500)\n      console.log('✓ 模拟真实用户输入密码')\n    })\n\n    await test.step('模拟用户犹豫：移动鼠标到登录按钮', async () => {\n      const loginButton = page.locator('button[type=\"submit\"]')\n\n      // 悬停在按钮上（用户在考虑是否点击）\n      await loginButton.hover()\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 用户悬停在登录按钮上')\n    })\n\n    await test.step('截图记录填写完成的表单', async () => {\n      await page.screenshot({\n        path: 'test-results/user-interaction-login-filled.png'\n      })\n    })\n\n    await test.step('模拟用户修改输入：删除并重新输入', async () => {\n      const emailInput = page.locator('input[type=\"email\"], input[type=\"text\"]').first()\n\n      // 点击邮箱输入框\n      await emailInput.click()\n      await page.waitForTimeout(200)\n\n      // 全选文本（Ctrl+A）\n      await page.keyboard.press('Control+A')\n      await page.waitForTimeout(100)\n\n      // 删除\n      await page.keyboard.press('Backspace')\n      await page.waitForTimeout(300)\n\n      // 重新输入\n      await emailInput.type('newemail@example.com', { delay: 100 })\n\n      console.log('✓ 用户修改了邮箱输入')\n    })\n  })\n\n  test('用户导航行为：点击链接、前进后退', async ({ page }) => {\n\n    await test.step('访问首页', async () => {\n      await page.goto('/')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(1000)\n    })\n\n    await test.step('点击导航到FAQ页面', async () => {\n      // 查找FAQ链接\n      const faqLink = page.locator('a[href*=\"faq\"], a:has-text(\"FAQ\"), a:has-text(\"常见问题\")')\n\n      if (await faqLink.isVisible({ timeout: 3000 }).catch(() => false)) {\n        await faqLink.first().click()\n        await page.waitForLoadState('networkidle')\n        await page.waitForTimeout(1000)\n\n        console.log('✓ 用户点击导航到FAQ页面')\n      } else {\n        // 直接访问\n        await page.goto('/faq')\n        await page.waitForLoadState('networkidle')\n      }\n    })\n\n    await test.step('用户浏览FAQ内容', async () => {\n      // 滚动浏览\n      await page.evaluate(() => {\n        window.scrollTo({ top: 400, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(2000)\n\n      console.log('✓ 用户浏览FAQ内容')\n    })\n\n    await test.step('点击浏览器后退按钮', async () => {\n      await page.goBack()\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 用户点击后退按钮')\n    })\n\n    await test.step('点击浏览器前进按钮', async () => {\n      await page.goForward()\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 用户点击前进按钮')\n    })\n\n    await test.step('访问关于页面', async () => {\n      await page.goto('/about')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 用户访问关于页面')\n    })\n  })\n\n  test('移动端用户行为：触摸、滑动', async ({ page }) => {\n\n    await test.step('设置为移动设备视口', async () => {\n      await page.setViewportSize({ width: 375, height: 667 }) // iPhone SE\n      console.log('✓ 切换到移动端视图')\n    })\n\n    await test.step('访问首页', async () => {\n      await page.goto('/')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(1000)\n    })\n\n    await test.step('模拟触摸滚动', async () => {\n      // 模拟手指滑动\n      await page.evaluate(() => {\n        window.scrollBy({ top: 300, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(1000)\n\n      await page.evaluate(() => {\n        window.scrollBy({ top: 300, behavior: 'smooth' })\n      })\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 模拟移动端滚动')\n    })\n\n    await test.step('点击移动端菜单（如果有）', async () => {\n      // 查找汉堡菜单按钮\n      const menuButton = page.locator('button[aria-label*=\"menu\"], button:has-text(\"☰\"), .mobile-menu-button')\n\n      if (await menuButton.isVisible({ timeout: 2000 }).catch(() => false)) {\n        await menuButton.click()\n        await page.waitForTimeout(1000)\n\n        console.log('✓ 点击移动端菜单')\n\n        // 再次点击关闭\n        await menuButton.click()\n        await page.waitForTimeout(500)\n      }\n    })\n\n    await test.step('截图移动端视图', async () => {\n      await page.screenshot({\n        path: 'test-results/user-interaction-mobile.png',\n        fullPage: true\n      })\n    })\n  })\n\n  test('用户错误操作：快速点击、重复提交', async ({ page }) => {\n\n    await test.step('访问登录页', async () => {\n      await page.goto('/login')\n      await page.waitForLoadState('networkidle')\n    })\n\n    await test.step('填写表单', async () => {\n      const emailInput = page.locator('input[type=\"email\"], input[type=\"text\"]').first()\n      const passwordInput = page.locator('input[type=\"password\"]')\n\n      await emailInput.fill('test@example.com')\n      await passwordInput.fill('password')\n    })\n\n    await test.step('模拟用户快速重复点击登录按钮', async () => {\n      const loginButton = page.locator('button[type=\"submit\"]')\n\n      // 快速点击3次（测试防重复提交）\n      await loginButton.click()\n      await page.waitForTimeout(100)\n      await loginButton.click()\n      await page.waitForTimeout(100)\n      await loginButton.click()\n\n      await page.waitForTimeout(2000)\n\n      console.log('✓ 测试快速重复点击（防重复提交）')\n    })\n\n    await test.step('模拟用户按Enter键提交', async () => {\n      const passwordInput = page.locator('input[type=\"password\"]')\n\n      // 聚焦到密码框\n      await passwordInput.click()\n\n      // 按Enter键\n      await page.keyboard.press('Enter')\n      await page.waitForTimeout(1000)\n\n      console.log('✓ 测试键盘Enter提交')\n    })\n  })\n\n  test('用户复制粘贴行为', async ({ page }) => {\n\n    await test.step('访问登录页', async () => {\n      await page.goto('/login')\n      await page.waitForLoadState('networkidle')\n    })\n\n    await test.step('模拟从剪贴板粘贴邮箱', async () => {\n      const emailInput = page.locator('input[type=\"email\"], input[type=\"text\"]').first()\n\n      await emailInput.click()\n\n      // 模拟粘贴操作（Ctrl+V）\n      await page.keyboard.press('Control+V')\n      await page.waitForTimeout(500)\n\n      // 手动填充（因为剪贴板可能为空）\n      await emailInput.fill('pasted@example.com')\n\n      console.log('✓ 模拟粘贴操作')\n    })\n\n    await test.step('模拟复制文本', async () => {\n      const emailInput = page.locator('input[type=\"email\"], input[type=\"text\"]').first()\n\n      // 全选\n      await emailInput.click()\n      await page.keyboard.press('Control+A')\n      await page.waitForTimeout(200)\n\n      // 复制\n      await page.keyboard.press('Control+C')\n      await page.waitForTimeout(200)\n\n      console.log('✓ 模拟复制操作')\n    })\n  })\n\n  test('用户标签页切换行为', async ({ page, context }) => {\n\n    await test.step('打开首页', async () => {\n      await page.goto('/')\n      await page.waitForLoadState('networkidle')\n    })\n\n    await test.step('在新标签页打开登录页', async () => {\n      // 创建新标签页\n      const newPage = await context.newPage()\n      await newPage.goto('/login')\n      await newPage.waitForLoadState('networkidle')\n      await newPage.waitForTimeout(1000)\n\n      console.log('✓ 在新标签页打开登录页')\n\n      // 关闭新标签页\n      await newPage.close()\n    })\n\n    await test.step('模拟用户切换回原标签页', async () => {\n      // 原页面应该仍然可用\n      await page.bringToFront()\n      await page.waitForTimeout(500)\n\n      const body = page.locator('body')\n      await expect(body).toBeVisible()\n\n      console.log('✓ 切换回原标签页')\n    })\n  })\n})\n"],"mappings":"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","ignoreList":[]}