{"version":3,"names":["test","expect","TEST_ACCOUNTS","partner","email","password","role","client","admin","login","page","goto","waitForLoadState","locator","first","fill","click","waitForTimeout","_logout","logoutButton","isVisible","timeout","catch","describe","step","screenshot","path","url","console","log","toContain","fullPage","body","toBeVisible","orderElements","count","searchInput","orderLink","amountElements","partnerPages","name","pageInfo","inputs","adminPages"],"sources":["complete-role-testing.spec.js"],"sourcesContent":["import { test, expect } from '@playwright/test'\n\n/**\n * E2E Test: 完整的角色行为测试\n * 使用真实测试账号测试每个角色的每个操作节点\n *\n * 测试账号:\n * - 合伙人: e2e_test_partner@fetch.com / e2etest123\n * - 客户: e2e_test_client@fetch.com / e2eclient123\n * - 管理员: e2e_test_admin@fetch.com / e2eadmin123\n */\n\n// 测试账号配置\nconst TEST_ACCOUNTS = {\n  partner: {\n    email: 'e2e_test_partner@fetch.com',\n    password: 'e2etest123',\n    role: 'partner'\n  },\n  client: {\n    email: 'e2e_test_client@fetch.com',\n    password: 'e2eclient123',\n    role: 'client'\n  },\n  admin: {\n    email: 'e2e_test_admin@fetch.com',\n    password: 'e2eadmin123',\n    role: 'admin'\n  }\n}\n\n// 辅助函数：登录\nasync function login(page, email, password) {\n  await page.goto('/login')\n  await page.waitForLoadState('networkidle')\n\n  await page.locator('input[type=\"email\"], input[type=\"text\"]').first().fill(email)\n  await page.locator('input[type=\"password\"]').fill(password)\n\n  await page.locator('button[type=\"submit\"]').click()\n\n  // 等待登录完成（重定向到仪表板）\n  await page.waitForTimeout(3000)\n}\n\n// 辅助函数：登出\n\nasync function _logout(page) {\n  // 查找登出按钮\n  const logoutButton = page.locator('button:has-text(\"Logout\"), button:has-text(\"登出\"), a:has-text(\"Logout\")')\n\n  if (await logoutButton.isVisible({ timeout: 2000 }).catch(() => false)) {\n    await logoutButton.click()\n    await page.waitForTimeout(1000)\n  }\n}\n\ntest.describe('合伙人完整行为测试', () => {\n\n  test('合伙人登录流程', async ({ page }) => {\n    await test.step('访问登录页', async () => {\n      await page.goto('/login')\n      await page.waitForLoadState('networkidle')\n    })\n\n    await test.step('填写合伙人账号', async () => {\n      await page.locator('input[type=\"email\"]').fill(TEST_ACCOUNTS.partner.email)\n      await page.locator('input[type=\"password\"]').fill(TEST_ACCOUNTS.partner.password)\n\n      await page.screenshot({ path: 'test-results/partner-login-form.png' })\n    })\n\n    await test.step('点击登录', async () => {\n      await page.locator('button[type=\"submit\"]').click()\n      await page.waitForTimeout(3000)\n\n      // 验证登录成功（应该重定向到合伙人仪表板）\n      const url = page.url()\n      console.log(`✓ 登录后URL: ${url}`)\n\n      // 应该在 /partner 路径下\n      expect(url).toContain('/partner')\n    })\n\n    await test.step('验证合伙人仪表板加载', async () => {\n      await page.screenshot({ path: 'test-results/partner-dashboard.png', fullPage: true })\n\n      const body = page.locator('body')\n      await expect(body).toBeVisible()\n\n      console.log('✓ 合伙人仪表板加载成功')\n    })\n  })\n\n  test('合伙人查看订单列表', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n    await test.step('导航到订单列表', async () => {\n      await page.goto('/partner/orders')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/partner-orders.png', fullPage: true })\n    })\n\n    await test.step('检查订单列表元素', async () => {\n      // 检查是否有订单卡片或表格\n      const orderElements = page.locator('[data-testid=\"order-item\"], .order-card, .order-row, tr')\n      const count = await orderElements.count()\n\n      console.log(`✓ 找到 ${count} 个订单元素`)\n    })\n\n    await test.step('测试订单筛选/搜索功能', async () => {\n      // 查找搜索框\n      const searchInput = page.locator('input[type=\"search\"], input[placeholder*=\"搜索\"], input[placeholder*=\"Search\"]')\n\n      if (await searchInput.isVisible({ timeout: 2000 }).catch(() => false)) {\n        await searchInput.fill('E2E-TEST')\n        await page.waitForTimeout(1000)\n        console.log('✓ 订单搜索功能可用')\n      }\n    })\n  })\n\n  test('合伙人查看订单详情', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n    await test.step('访问订单列表', async () => {\n      await page.goto('/partner/orders')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n    })\n\n    await test.step('点击第一个订单', async () => {\n      // 查找订单链接\n      const orderLink = page.locator('a[href*=\"/partner/orders/\"], .order-card, .order-item').first()\n\n      if (await orderLink.isVisible({ timeout: 3000 }).catch(() => false)) {\n        await orderLink.click()\n        await page.waitForTimeout(2000)\n\n        await page.screenshot({ path: 'test-results/partner-order-detail.png', fullPage: true })\n\n        console.log('✓ 订单详情页加载成功')\n      } else {\n        console.log('⚠ 未找到订单，跳过详情测试')\n      }\n    })\n  })\n\n  test('合伙人查看结算页面', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n    await test.step('访问结算页面', async () => {\n      await page.goto('/partner/settlement')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/partner-settlement.png', fullPage: true })\n\n      const body = page.locator('body')\n      await expect(body).toBeVisible()\n\n      console.log('✓ 结算页面加载成功')\n    })\n\n    await test.step('检查结算数据', async () => {\n      // 查找金额显示\n      const amountElements = page.locator('text=/¥|\\\\$|CNY|USD/')\n      const count = await amountElements.count()\n\n      console.log(`✓ 找到 ${count} 个金额显示`)\n    })\n  })\n\n  test('合伙人查看业绩统计', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n    await test.step('访问业绩页面', async () => {\n      await page.goto('/partner/performance')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/partner-performance.png', fullPage: true })\n\n      console.log('✓ 业绩统计页面加载成功')\n    })\n  })\n\n  test('合伙人导航菜单测试', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n    const partnerPages = [\n      { path: '/partner', name: '仪表板' },\n      { path: '/partner/orders', name: '订单列表' },\n      { path: '/partner/settlement', name: '结算' },\n      { path: '/partner/performance', name: '业绩' }\n    ]\n\n    for (const pageInfo of partnerPages) {\n      await test.step(`访问${pageInfo.name}`, async () => {\n        await page.goto(pageInfo.path)\n        await page.waitForLoadState('networkidle')\n        await page.waitForTimeout(1000)\n\n        const body = page.locator('body')\n        await expect(body).toBeVisible()\n\n        console.log(`✓ ${pageInfo.name} 可访问`)\n      })\n    }\n  })\n})\n\ntest.describe('客户完整行为测试', () => {\n\n  test('客户登录流程', async ({ page }) => {\n    await test.step('登录客户账号', async () => {\n      await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n      await page.waitForTimeout(2000)\n      const url = page.url()\n      console.log(`✓ 客户登录后URL: ${url}`)\n\n      // 应该在 /dashboard 路径下\n      expect(url).toContain('/dashboard')\n    })\n\n    await test.step('验证客户仪表板', async () => {\n      await page.screenshot({ path: 'test-results/client-dashboard.png', fullPage: true })\n\n      console.log('✓ 客户仪表板加载成功')\n    })\n  })\n\n  test('客户查看订单列表', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问订单列表', async () => {\n      await page.goto('/orders')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-orders.png', fullPage: true })\n\n      console.log('✓ 客户订单列表加载成功')\n    })\n  })\n\n  test('客户访问新订单页面', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问新订单页面', async () => {\n      await page.goto('/orders/new')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-new-order.png', fullPage: true })\n\n      console.log('✓ 新订单页面加载成功')\n    })\n\n    await test.step('检查订单表单元素', async () => {\n      const inputs = page.locator('input, textarea')\n      const count = await inputs.count()\n\n      console.log(`✓ 找到 ${count} 个表单输入框`)\n    })\n  })\n\n  test('客户查看钱包', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问钱包页面', async () => {\n      await page.goto('/wallet')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-wallet.png', fullPage: true })\n\n      console.log('✓ 钱包页面加载成功')\n    })\n  })\n\n  test('客户查看仓库', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问仓库页面', async () => {\n      await page.goto('/warehouse')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-warehouse.png', fullPage: true })\n\n      console.log('✓ 仓库页面加载成功')\n    })\n  })\n\n  test('客户管理地址', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问地址管理页面', async () => {\n      await page.goto('/addresses')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-addresses.png', fullPage: true })\n\n      console.log('✓ 地址管理页面加载成功')\n    })\n  })\n\n  test('客户查看包裹', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问包裹页面', async () => {\n      await page.goto('/parcels')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-parcels.png', fullPage: true })\n\n      console.log('✓ 包裹页面加载成功')\n    })\n  })\n\n  test('客户个人资料', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n    await test.step('访问个人资料页面', async () => {\n      await page.goto('/profile')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/client-profile.png', fullPage: true })\n\n      console.log('✓ 个人资料页面加载成功')\n    })\n  })\n})\n\ntest.describe('管理员完整行为测试', () => {\n\n  test('管理员登录流程', async ({ page }) => {\n    await test.step('登录管理员账号', async () => {\n      await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n      await page.waitForTimeout(2000)\n      const url = page.url()\n      console.log(`✓ 管理员登录后URL: ${url}`)\n\n      // 应该在 /admin 路径下\n      expect(url).toContain('/admin')\n    })\n\n    await test.step('验证管理员仪表板', async () => {\n      await page.screenshot({ path: 'test-results/admin-dashboard.png', fullPage: true })\n\n      console.log('✓ 管理员仪表板加载成功')\n    })\n  })\n\n  test('管理员查看所有订单', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问订单管理', async () => {\n      await page.goto('/admin/orders')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-orders.png', fullPage: true })\n\n      console.log('✓ 订单管理页面加载成功')\n    })\n  })\n\n  test('管理员用户管理', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问用户管理', async () => {\n      await page.goto('/admin/users')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-users.png', fullPage: true })\n\n      console.log('✓ 用户管理页面加载成功')\n    })\n  })\n\n  test('管理员包裹管理', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问包裹管理', async () => {\n      await page.goto('/admin/parcels')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-parcels.png', fullPage: true })\n\n      console.log('✓ 包裹管理页面加载成功')\n    })\n  })\n\n  test('管理员充值管理', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问充值管理', async () => {\n      await page.goto('/admin/topup')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-topup.png', fullPage: true })\n\n      console.log('✓ 充值管理页面加载成功')\n    })\n  })\n\n  test('管理员结算管理', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问结算管理', async () => {\n      await page.goto('/admin/settlements')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-settlements.png', fullPage: true })\n\n      console.log('✓ 结算管理页面加载成功')\n    })\n  })\n\n  test('管理员消息管理', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问消息管理', async () => {\n      await page.goto('/admin/messages')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-messages.png', fullPage: true })\n\n      console.log('✓ 消息管理页面加载成功')\n    })\n  })\n\n  test('管理员汇率历史', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    await test.step('访问汇率历史', async () => {\n      await page.goto('/admin/exchange-rate-history')\n      await page.waitForLoadState('networkidle')\n      await page.waitForTimeout(2000)\n\n      await page.screenshot({ path: 'test-results/admin-exchange-rate.png', fullPage: true })\n\n      console.log('✓ 汇率历史页面加载成功')\n    })\n  })\n\n  test('管理员完整导航测试', async ({ page }) => {\n    await login(page, TEST_ACCOUNTS.admin.email, TEST_ACCOUNTS.admin.password)\n\n    const adminPages = [\n      { path: '/admin', name: '仪表板' },\n      { path: '/admin/orders', name: '订单管理' },\n      { path: '/admin/users', name: '用户管理' },\n      { path: '/admin/parcels', name: '包裹管理' },\n      { path: '/admin/topup', name: '充值管理' },\n      { path: '/admin/settlements', name: '结算管理' },\n      { path: '/admin/messages', name: '消息管理' },\n      { path: '/admin/exchange-rate-history', name: '汇率历史' }\n    ]\n\n    for (const pageInfo of adminPages) {\n      await test.step(`访问${pageInfo.name}`, async () => {\n        await page.goto(pageInfo.path)\n        await page.waitForLoadState('networkidle')\n        await page.waitForTimeout(1000)\n\n        const body = page.locator('body')\n        await expect(body).toBeVisible()\n\n        console.log(`✓ ${pageInfo.name} 可访问`)\n      })\n    }\n  })\n})\n"],"mappings":"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","ignoreList":[]}