{"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","createOrderAndProgressToReturning","clientEmail","clientPassword","partnerEmail","partnerPassword","trackingNumber","createOrderBtn","url","orderIdMatch","match","orderId","firstOrder","startPurchasingBtn","markPurchasedBtn","scanInput","press","qcRejectBtn","issueDesc","returnBtn","returnReason","confirmBtn","describe","step","console","log","returningOrder","statusText","textContent","toLowerCase","toContain","returnSuccessBtn","returnNotes","screenshot","path","fullPage","newStatusText","refundInfo","refundText","returnFailBtn","failReason"],"sources":["test_return_flow.spec.js"],"sourcesContent":["/**\n * 退货流程测试\n *\n * 测试场景：\n * 1. 退货成功场景 - 卖家同意退货，退款给客户\n * 2. 退货失败场景 - 卖家拒绝退货，平台承担损失\n */\n\nimport { test, expect } from '@playwright/test'\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  await page.waitForTimeout(3000)\n}\n\n// 辅助函数：登出\nasync function logout(page) {\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\n// 辅助函数：创建订单并推进到 returning 状态\nasync function createOrderAndProgressToReturning(page, clientEmail, clientPassword, partnerEmail, partnerPassword, trackingNumber) {\n  // 1. 客户创建订单\n  await login(page, clientEmail, clientPassword)\n  await page.goto('/dashboard')\n  await page.waitForLoadState('networkidle')\n\n  const createOrderBtn = page.locator('button:has-text(\"Create Order\"), button:has-text(\"创建订单\"), a:has-text(\"Create Order\")')\n  if (await createOrderBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await createOrderBtn.click()\n    await page.waitForTimeout(1000)\n  } else {\n    await page.goto('/orders/create')\n    await page.waitForLoadState('networkidle')\n  }\n\n  await page.locator('input[name=\"product_url\"], input[placeholder*=\"URL\"]').fill('https://item.taobao.com/item.htm?id=test-return')\n  await page.locator('input[name=\"product_name\"], input[placeholder*=\"商品名称\"]').fill('退货测试商品')\n  await page.locator('input[name=\"specification\"], input[placeholder*=\"规格\"]').fill('蓝色/M码')\n  await page.locator('input[name=\"unit_price_cny\"], input[placeholder*=\"单价\"]').fill('150')\n  await page.locator('input[name=\"quantity\"], input[placeholder*=\"数量\"]').fill('1')\n  await page.locator('input[name=\"domestic_shipping_cny\"], input[placeholder*=\"国内运费\"]').fill('15')\n\n  await page.locator('button[type=\"submit\"]:has-text(\"Submit\"), button:has-text(\"提交订单\")').click()\n  await page.waitForTimeout(2000)\n\n  const url = page.url()\n  const orderIdMatch = url.match(/orders\\/(\\d+)/)\n  const orderId = orderIdMatch ? orderIdMatch[1] : null\n\n  await logout(page)\n\n  // 2. 合伙人接单并采购\n  await login(page, partnerEmail, partnerPassword)\n\n  if (orderId) {\n    await page.goto(`/partner/orders/${orderId}`)\n  } else {\n    await page.goto('/partner/orders')\n    await page.waitForTimeout(1000)\n    const firstOrder = page.locator('[data-testid=\"order-item\"], .order-card, a[href*=\"/partner/orders/\"]').first()\n    if (await firstOrder.isVisible({ timeout: 3000 }).catch(() => false)) {\n      await firstOrder.click()\n      await page.waitForTimeout(1000)\n    }\n  }\n\n  const startPurchasingBtn = page.locator('button:has-text(\"Start Purchasing\"), button:has-text(\"开始采购\")')\n  if (await startPurchasingBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await startPurchasingBtn.click()\n    await page.waitForTimeout(1000)\n  }\n\n  const markPurchasedBtn = page.locator('button:has-text(\"Mark Purchased\"), button:has-text(\"标记已采购\")')\n  if (await markPurchasedBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await markPurchasedBtn.click()\n    await page.waitForTimeout(500)\n\n    await page.locator('input[name=\"tracking_number\"], input[placeholder*=\"快递单号\"]').fill(trackingNumber)\n    await page.locator('input[name=\"actual_cost_cny\"], input[placeholder*=\"实际成本\"]').fill('145')\n\n    await page.locator('button[type=\"submit\"]:has-text(\"Submit\"), button:has-text(\"确认\")').click()\n    await page.waitForTimeout(2000)\n  }\n\n  // 3. 扫码入库并标记QC异常\n  await page.goto('/partner/warehouse')\n  await page.waitForLoadState('networkidle')\n\n  const scanInput = page.locator('input[name=\"tracking_number\"], input[placeholder*=\"快递单号\"], input[placeholder*=\"扫码\"]')\n  if (await scanInput.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await scanInput.fill(trackingNumber)\n    await scanInput.press('Enter')\n    await page.waitForTimeout(2000)\n  }\n\n  const qcRejectBtn = page.locator('button:has-text(\"QC Reject\"), button:has-text(\"QC异常\"), button:has-text(\"标记瑕疵\")')\n  if (await qcRejectBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await qcRejectBtn.click()\n    await page.waitForTimeout(500)\n\n    const issueDesc = page.locator('textarea[name=\"qc_issue\"], textarea[placeholder*=\"瑕疵描述\"]')\n    if (await issueDesc.isVisible({ timeout: 2000 }).catch(() => false)) {\n      await issueDesc.fill('商品严重损坏，需要退货')\n    }\n\n    await page.locator('button[type=\"submit\"]:has-text(\"Submit\"), button:has-text(\"确认\")').click()\n    await page.waitForTimeout(2000)\n  }\n\n  await logout(page)\n\n  // 4. 客户申请退货\n  await login(page, clientEmail, clientPassword)\n\n  if (orderId) {\n    await page.goto(`/orders/${orderId}`)\n  } else {\n    await page.goto('/dashboard')\n    await page.waitForTimeout(1000)\n    const firstOrder = page.locator('a[href*=\"/orders/\"]').first()\n    if (await firstOrder.isVisible({ timeout: 3000 }).catch(() => false)) {\n      await firstOrder.click()\n      await page.waitForTimeout(1000)\n    }\n  }\n\n  await page.waitForLoadState('networkidle')\n\n  const returnBtn = page.locator('button:has-text(\"Return\"), button:has-text(\"退货\"), button:has-text(\"申请退货\")')\n  if (await returnBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n    await returnBtn.click()\n    await page.waitForTimeout(500)\n\n    const returnReason = page.locator('textarea[name=\"return_reason\"], textarea[placeholder*=\"退货原因\"]')\n    if (await returnReason.isVisible({ timeout: 2000 }).catch(() => false)) {\n      await returnReason.fill('商品严重损坏，要求退货退款')\n    }\n\n    const confirmBtn = page.locator('button:has-text(\"Confirm\"), button:has-text(\"确认退货\")')\n    if (await confirmBtn.isVisible({ timeout: 2000 }).catch(() => false)) {\n      await confirmBtn.click()\n      await page.waitForTimeout(2000)\n    }\n  }\n\n  await logout(page)\n\n  return orderId\n}\n\ntest.describe('退货流程测试', () => {\n\n  test('场景1: 退货成功 - 卖家同意退货，全额退款', async ({ page }) => {\n    let orderId = null\n\n    await test.step('创建订单并推进到 returning 状态', async () => {\n      orderId = await createOrderAndProgressToReturning(\n        page,\n        TEST_ACCOUNTS.client.email,\n        TEST_ACCOUNTS.client.password,\n        TEST_ACCOUNTS.partner.email,\n        TEST_ACCOUNTS.partner.password,\n        'SF-RETURN-SUCCESS-001'\n      )\n\n      console.log(`✓ 订单已创建并推进到 returning 状态，订单ID: ${orderId}`)\n    })\n\n    await test.step('合伙人标记退货成功', async () => {\n      await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n      // 访问订单详情\n      if (orderId) {\n        await page.goto(`/partner/orders/${orderId}`)\n      } else {\n        await page.goto('/partner/orders')\n        await page.waitForTimeout(1000)\n        // 查找 returning 状态的订单\n        const returningOrder = page.locator('[data-status=\"returning\"], .status-returning').first()\n        if (await returningOrder.isVisible({ timeout: 3000 }).catch(() => false)) {\n          await returningOrder.click()\n          await page.waitForTimeout(1000)\n        }\n      }\n\n      await page.waitForLoadState('networkidle')\n\n      // 验证当前状态为 returning\n      const statusText = await page.locator('[data-testid=\"order-status\"], .order-status, .status').textContent()\n      console.log(`✓ 当前订单状态: ${statusText}`)\n      expect(statusText.toLowerCase()).toContain('return')\n\n      // 标记退货成功\n      const returnSuccessBtn = page.locator('button:has-text(\"Return Success\"), button:has-text(\"退货成功\"), button:has-text(\"确认退货成功\")')\n      if (await returnSuccessBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n        await returnSuccessBtn.click()\n        await page.waitForTimeout(500)\n\n        // 填写退货信息\n        const returnNotes = page.locator('textarea[name=\"return_notes\"], textarea[placeholder*=\"退货备注\"]')\n        if (await returnNotes.isVisible({ timeout: 2000 }).catch(() => false)) {\n          await returnNotes.fill('卖家已同意退货，退款已到账')\n        }\n\n        // 确认\n        const confirmBtn = page.locator('button:has-text(\"Confirm\"), button:has-text(\"确认\")')\n        if (await confirmBtn.isVisible({ timeout: 2000 }).catch(() => false)) {\n          await confirmBtn.click()\n          await page.waitForTimeout(2000)\n        }\n      }\n\n      await page.screenshot({ path: 'test-results/return-success.png', fullPage: true })\n      console.log('✓ 退货成功已标记')\n\n      // 验证状态转换为 cancelled\n      await page.waitForTimeout(2000)\n      const newStatusText = await page.locator('[data-testid=\"order-status\"], .order-status, .status').textContent()\n      console.log(`✓ 新订单状态: ${newStatusText}`)\n      expect(newStatusText.toLowerCase()).toContain('cancel')\n\n      await logout(page)\n    })\n\n    await test.step('客户验证退款到账', async () => {\n      await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n      // 访问订单详情\n      if (orderId) {\n        await page.goto(`/orders/${orderId}`)\n      } else {\n        await page.goto('/dashboard')\n        await page.waitForTimeout(1000)\n      }\n\n      await page.waitForLoadState('networkidle')\n\n      // 验证订单状态为 cancelled\n      const statusText = await page.locator('[data-testid=\"order-status\"], .order-status, .status').textContent()\n      console.log(`✓ 客户看到的订单状态: ${statusText}`)\n      expect(statusText.toLowerCase()).toContain('cancel')\n\n      // 检查退款信息\n      const refundInfo = page.locator('[data-testid=\"refund-info\"], .refund-info, .refund-amount')\n      if (await refundInfo.isVisible({ timeout: 3000 }).catch(() => false)) {\n        const refundText = await refundInfo.textContent()\n        console.log(`✓ 退款信息: ${refundText}`)\n      }\n\n      await page.screenshot({ path: 'test-results/return-success-client-view.png', fullPage: true })\n\n      await logout(page)\n    })\n  })\n\n  test('场景2: 退货失败 - 卖家拒绝退货，平台承担损失', async ({ page }) => {\n    let orderId = null\n\n    await test.step('创建订单并推进到 returning 状态', async () => {\n      orderId = await createOrderAndProgressToReturning(\n        page,\n        TEST_ACCOUNTS.client.email,\n        TEST_ACCOUNTS.client.password,\n        TEST_ACCOUNTS.partner.email,\n        TEST_ACCOUNTS.partner.password,\n        'SF-RETURN-FAIL-001'\n      )\n\n      console.log(`✓ 订单已创建并推进到 returning 状态，订单ID: ${orderId}`)\n    })\n\n    await test.step('合伙人标记退货失败', async () => {\n      await login(page, TEST_ACCOUNTS.partner.email, TEST_ACCOUNTS.partner.password)\n\n      if (orderId) {\n        await page.goto(`/partner/orders/${orderId}`)\n      } else {\n        await page.goto('/partner/orders')\n        await page.waitForTimeout(1000)\n        const returningOrder = page.locator('[data-status=\"returning\"], .status-returning').first()\n        if (await returningOrder.isVisible({ timeout: 3000 }).catch(() => false)) {\n          await returningOrder.click()\n          await page.waitForTimeout(1000)\n        }\n      }\n\n      await page.waitForLoadState('networkidle')\n\n      // 标记退货失败\n      const returnFailBtn = page.locator('button:has-text(\"Return Failed\"), button:has-text(\"退货失败\"), button:has-text(\"标记退货失败\")')\n      if (await returnFailBtn.isVisible({ timeout: 3000 }).catch(() => false)) {\n        await returnFailBtn.click()\n        await page.waitForTimeout(500)\n\n        // 填写失败原因\n        const failReason = page.locator('textarea[name=\"return_fail_reason\"], textarea[placeholder*=\"失败原因\"]')\n        if (await failReason.isVisible({ timeout: 2000 }).catch(() => false)) {\n          await failReason.fill('卖家拒绝退货，称商品无质量问题。平台决定承担损失，退款给客户。')\n        }\n\n        // 确认\n        const confirmBtn = page.locator('button:has-text(\"Confirm\"), button:has-text(\"确认\")')\n        if (await confirmBtn.isVisible({ timeout: 2000 }).catch(() => false)) {\n          await confirmBtn.click()\n          await page.waitForTimeout(2000)\n        }\n      }\n\n      await page.screenshot({ path: 'test-results/return-failed.png', fullPage: true })\n      console.log('✓ 退货失败已标记，平台承担损失')\n\n      // 验证状态转换为 cancelled（平台退款）\n      await page.waitForTimeout(2000)\n      const newStatusText = await page.locator('[data-testid=\"order-status\"], .order-status, .status').textContent()\n      console.log(`✓ 新订单状态: ${newStatusText}`)\n      expect(newStatusText.toLowerCase()).toContain('cancel')\n\n      await logout(page)\n    })\n\n    await test.step('客户验证平台退款到账', async () => {\n      await login(page, TEST_ACCOUNTS.client.email, TEST_ACCOUNTS.client.password)\n\n      if (orderId) {\n        await page.goto(`/orders/${orderId}`)\n      } else {\n        await page.goto('/dashboard')\n        await page.waitForTimeout(1000)\n      }\n\n      await page.waitForLoadState('networkidle')\n\n      // 验证订单状态为 cancelled\n      const statusText = await page.locator('[data-testid=\"order-status\"], .order-status, .status').textContent()\n      console.log(`✓ 客户看到的订单状态: ${statusText}`)\n      expect(statusText.toLowerCase()).toContain('cancel')\n\n      // 检查退款信息（应该显示平台承担损失）\n      const refundInfo = page.locator('[data-testid=\"refund-info\"], .refund-info, .refund-note')\n      if (await refundInfo.isVisible({ timeout: 3000 }).catch(() => false)) {\n        const refundText = await refundInfo.textContent()\n        console.log(`✓ 退款信息: ${refundText}`)\n        // 应该包含平台承担损失的说明\n      }\n\n      await page.screenshot({ path: 'test-results/return-failed-client-view.png', fullPage: true })\n\n      await logout(page)\n    })\n  })\n})\n"],"mappings":"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","ignoreList":[]}