{"version":3,"names":["test","expect","login","waitForElement","fillForm","expectToastMessage","describe","beforeEach","page","skip","process","env","E2E_TEST_ORDER_AWAITING_WH","testOrderId","step","goto","warehouseForm","locator","toBeVisible","instructions","toContainText","testTrackingNumber","trackingInput","fill","barcodeInput","waitForTimeout","barcodeValue","inputValue","toBe","toBeEnabled","clear","newValue","customBarcode","value","click","trackingNumber","Date","now","internalBarcode","responsePromise","waitForResponse","response","url","includes","status","timeout","form","isVisible","catch","submitButton","toBeDisabled","statusBadge","toHaveURL","orderCards","count","i","Math","min","card","nth","qcButtons","qcButtonCount","toBeLessThanOrEqual","qcButton","first","hasQcButton","isNavigated","waitForURL","then","hasDialog","toHaveAttribute","RegExp","buttonText","textContent","isDisabled","toBeTruthy","E2E_DUPLICATE_TRACKING_NUMBER","duplicateTrackingNumber","errorMessage","route","fulfill","body","JSON","stringify","detail"],"sources":["warehouse-scanning.spec.js"],"sourcesContent":["/**\n * 仓库扫码功能 E2E 测试\n *\n * 测试仓库收货扫码功能的完整流程\n */\n\nimport { test, expect } from '@playwright/test'\nimport { login, waitForElement, fillForm, expectToastMessage } from './utils/test-helpers.js'\n\ntest.describe('仓库扫码功能', () => {\n  test.beforeEach(async ({ page }) => {\n    // 以合伙人身份登录\n    await login(page, 'partner')\n  })\n\n  test('应该为 awaiting_warehouse 状态的订单显示仓库收货表单', async ({ page }) => {\n    // 注意：此测试需要一个状态为 awaiting_warehouse 的测试订单\n    // 如果没有合适的测试数据，可以跳过此测试\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n\n    await test.step('导航到订单详情页', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"order-detail\"]')\n    })\n\n    await test.step('验证仓库收货表单显示', async () => {\n      // 验证表单存在\n      const warehouseForm = page.locator('[data-testid=\"warehouse-receiving-form\"]')\n      await expect(warehouseForm).toBeVisible()\n\n      // 验证表单字段\n      await expect(page.locator('[data-testid=\"tracking-number-input\"]')).toBeVisible()\n      await expect(page.locator('[data-testid=\"internal-barcode-input\"]')).toBeVisible()\n      await expect(page.locator('[data-testid=\"submit-warehouse-receiving\"]')).toBeVisible()\n    })\n\n    await test.step('验证表单标题和说明', async () => {\n      // 验证表单标题\n      await expect(page.locator('text=仓库收货')).toBeVisible()\n      await expect(page.locator('text=Warehouse Receiving')).toBeVisible()\n\n      // 验证说明文字\n      const instructions = page.locator('[data-testid=\"warehouse-form-instructions\"]')\n      await expect(instructions).toContainText(/扫描.*快递单号/i)\n    })\n  })\n\n  test('应该在输入快递单号后自动填充内部条码', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n    const testTrackingNumber = 'SF1234567890'\n\n    await test.step('导航到订单详情页', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n    })\n\n    await test.step('输入快递单号', async () => {\n      const trackingInput = page.locator('[data-testid=\"tracking-number-input\"]')\n      await trackingInput.fill(testTrackingNumber)\n    })\n\n    await test.step('验证内部条码自动填充', async () => {\n      const barcodeInput = page.locator('[data-testid=\"internal-barcode-input\"]')\n\n      // 等待自动填充（可能有短暂延迟）\n      await page.waitForTimeout(500)\n\n      // 验证内部条码已填充且与快递单号相同\n      const barcodeValue = await barcodeInput.inputValue()\n      expect(barcodeValue).toBe(testTrackingNumber)\n    })\n\n    await test.step('验证内部条码字段仍可编辑', async () => {\n      const barcodeInput = page.locator('[data-testid=\"internal-barcode-input\"]')\n\n      // 验证字段未被禁用\n      await expect(barcodeInput).toBeEnabled()\n\n      // 验证可以修改\n      await barcodeInput.clear()\n      await barcodeInput.fill('CUSTOM-BARCODE-001')\n\n      const newValue = await barcodeInput.inputValue()\n      expect(newValue).toBe('CUSTOM-BARCODE-001')\n    })\n  })\n\n  test('应该允许修改自动填充的内部条码', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n    const testTrackingNumber = 'YTO9876543210'\n    const customBarcode = 'WH-2026-001'\n\n    await test.step('导航到订单详情页并填写快递单号', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n\n      await page.locator('[data-testid=\"tracking-number-input\"]').fill(testTrackingNumber)\n      await page.waitForTimeout(500) // 等待自动填充\n    })\n\n    await test.step('修改内部条码', async () => {\n      const barcodeInput = page.locator('[data-testid=\"internal-barcode-input\"]')\n\n      // 清空并输入自定义条码\n      await barcodeInput.clear()\n      await barcodeInput.fill(customBarcode)\n\n      // 验证修改成功\n      const value = await barcodeInput.inputValue()\n      expect(value).toBe(customBarcode)\n    })\n\n    await test.step('验证修改后的值保持不变', async () => {\n      // 点击页面其他地方触发 blur 事件\n      await page.locator('[data-testid=\"tracking-number-input\"]').click()\n\n      // 验证内部条码值未被重置\n      const barcodeInput = page.locator('[data-testid=\"internal-barcode-input\"]')\n      const value = await barcodeInput.inputValue()\n      expect(value).toBe(customBarcode)\n    })\n  })\n\n  test('应该成功提交仓库收货表单', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n    const trackingNumber = `TEST-TN-${Date.now()}`\n    const internalBarcode = `TEST-BC-${Date.now()}`\n\n    await test.step('导航到订单详情页', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n    })\n\n    await test.step('填写表单', async () => {\n      await fillForm(page, {\n        'tracking-number-input': trackingNumber,\n        'internal-barcode-input': internalBarcode\n      })\n    })\n\n    await test.step('提交表单', async () => {\n      // 监听 API 请求\n      const responsePromise = page.waitForResponse(\n        response => response.url().includes('/api/v1/partner/orders/') &&\n                   response.url().includes('/warehouse-receive') &&\n                   response.status() === 200,\n        { timeout: 15000 }\n      )\n\n      // 点击提交按钮\n      await page.locator('[data-testid=\"submit-warehouse-receiving\"]').click()\n\n      // 等待 API 响应\n      await responsePromise\n    })\n\n    await test.step('验证提交成功', async () => {\n      // 验证成功提示消息\n      await expectToastMessage(page, /收货成功|successfully/i)\n\n      // 验证表单消失或被禁用\n      const form = page.locator('[data-testid=\"warehouse-receiving-form\"]')\n      const isVisible = await form.isVisible().catch(() => false)\n\n      if (isVisible) {\n        // 如果表单仍可见，验证按钮被禁用\n        const submitButton = page.locator('[data-testid=\"submit-warehouse-receiving\"]')\n        await expect(submitButton).toBeDisabled()\n      }\n    })\n\n    await test.step('验证订单状态更新', async () => {\n      // 等待页面更新\n      await page.waitForTimeout(1000)\n\n      // 验证状态徽章更新为 in_warehouse\n      const statusBadge = page.locator('[data-testid=\"order-status-badge\"]')\n      await expect(statusBadge).toContainText(/已入库|in.*warehouse/i)\n    })\n  })\n\n  test('应该在合伙人仪表板中移除重复的 QC 按钮', async ({ page }) => {\n    await test.step('导航到合伙人仪表板', async () => {\n      // 已经通过 beforeEach 登录，直接验证在仪表板页面\n      await expect(page).toHaveURL(/.*partner.*/)\n      await waitForElement(page, '[data-testid=\"partner-dashboard\"]')\n    })\n\n    await test.step('查找订单卡片', async () => {\n      // 等待订单列表加载\n      await page.waitForTimeout(2000)\n\n      const orderCards = page.locator('[data-testid^=\"order-card-\"]')\n      const count = await orderCards.count()\n\n      // 如果有订单卡片，检查每个卡片\n      if (count > 0) {\n        for (let i = 0; i < Math.min(count, 5); i++) {\n          const card = orderCards.nth(i)\n\n          // 查找卡片内的所有 QC 按钮\n          const qcButtons = card.locator('button:has-text(\"QC\"), button:has-text(\"质检\")')\n          const qcButtonCount = await qcButtons.count()\n\n          // 验证每个卡片最多只有一个 QC 按钮\n          expect(qcButtonCount).toBeLessThanOrEqual(1)\n        }\n      }\n    })\n\n    await test.step('验证 QC 按钮功能正常', async () => {\n      // 查找第一个有 QC 按钮的订单卡片\n      const qcButton = page.locator('button:has-text(\"QC\"), button:has-text(\"质检\")').first()\n\n      const hasQcButton = await qcButton.isVisible().catch(() => false)\n\n      if (hasQcButton) {\n        // 点击 QC 按钮\n        await qcButton.click()\n\n        // 验证导航到订单详情页或打开 QC 对话框\n        // 这取决于具体实现，这里检查两种可能性\n        const isNavigated = await page.waitForURL(/.*orders\\/.*/, { timeout: 5000 }).then(() => true).catch(() => false)\n        const hasDialog = await page.locator('[data-testid=\"qc-dialog\"]').isVisible().catch(() => false)\n\n        // 至少一种情况应该发生\n        expect(isNavigated || hasDialog).toBe(true)\n      }\n    })\n  })\n})\n\ntest.describe('仓库扫码表单验证', () => {\n  test.beforeEach(async ({ page }) => {\n    await login(page, 'partner')\n  })\n\n  test('应该验证必填字段', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n\n    await test.step('导航到订单详情页', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n    })\n\n    await test.step('验证快递单号为必填', async () => {\n      const trackingInput = page.locator('[data-testid=\"tracking-number-input\"]')\n      await expect(trackingInput).toHaveAttribute('required', '')\n    })\n\n    await test.step('验证内部条码为必填', async () => {\n      const barcodeInput = page.locator('[data-testid=\"internal-barcode-input\"]')\n      await expect(barcodeInput).toHaveAttribute('required', '')\n    })\n\n    await test.step('尝试提交空表单', async () => {\n      const submitButton = page.locator('[data-testid=\"submit-warehouse-receiving\"]')\n      await submitButton.click()\n\n      // 浏览器应该阻止提交（HTML5 验证）\n      // 验证仍在同一页面\n      await expect(page).toHaveURL(new RegExp(`/partner/orders/${testOrderId}`))\n    })\n  })\n\n  test('应该在提交时显示加载状态', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n\n    await test.step('导航并填写表单', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n\n      await fillForm(page, {\n        'tracking-number-input': `TEST-${Date.now()}`,\n        'internal-barcode-input': `BC-${Date.now()}`\n      })\n    })\n\n    await test.step('点击提交并验证加载状态', async () => {\n      const submitButton = page.locator('[data-testid=\"submit-warehouse-receiving\"]')\n\n      // 点击提交\n      await submitButton.click()\n\n      // 验证按钮显示加载状态（可能很快，所以使用 or 条件）\n      const buttonText = await submitButton.textContent()\n      const isDisabled = await submitButton.isDisabled().catch(() => false)\n\n      // 按钮应该被禁用或显示加载文本\n      expect(isDisabled || buttonText.includes('提交中') || buttonText.includes('Submitting')).toBeTruthy()\n    })\n  })\n})\n\ntest.describe('仓库扫码错误处理', () => {\n  test.beforeEach(async ({ page }) => {\n    await login(page, 'partner')\n  })\n\n  test('应该处理重复的快递单号', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n    test.skip(!process.env.E2E_DUPLICATE_TRACKING_NUMBER, '需要已存在的快递单号用于测试')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n    const duplicateTrackingNumber = process.env.E2E_DUPLICATE_TRACKING_NUMBER\n\n    await test.step('导航并填写重复的快递单号', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n\n      await fillForm(page, {\n        'tracking-number-input': duplicateTrackingNumber,\n        'internal-barcode-input': `BC-${Date.now()}`\n      })\n    })\n\n    await test.step('提交并验证错误消息', async () => {\n      await page.locator('[data-testid=\"submit-warehouse-receiving\"]').click()\n\n      // 验证错误提示\n      const errorMessage = page.locator('[data-testid=\"error-message\"], [data-testid=\"toast-message\"]')\n      await expect(errorMessage).toBeVisible({ timeout: 5000 })\n      await expect(errorMessage).toContainText(/已存在|duplicate|already/i)\n    })\n  })\n\n  test('应该处理网络错误', async ({ page }) => {\n    test.skip(!process.env.E2E_TEST_ORDER_AWAITING_WH, '需要 awaiting_warehouse 状态的测试订单')\n\n    const testOrderId = process.env.E2E_TEST_ORDER_AWAITING_WH\n\n    await test.step('设置网络拦截模拟错误', async () => {\n      // 拦截 API 请求并返回错误\n      await page.route('**/api/v1/partner/orders/*/warehouse-receive', route => {\n        route.fulfill({\n          status: 500,\n          body: JSON.stringify({ detail: 'Internal server error' })\n        })\n      })\n    })\n\n    await test.step('导航并填写表单', async () => {\n      await page.goto(`/partner/orders/${testOrderId}`)\n      await waitForElement(page, '[data-testid=\"warehouse-receiving-form\"]')\n\n      await fillForm(page, {\n        'tracking-number-input': `TEST-${Date.now()}`,\n        'internal-barcode-input': `BC-${Date.now()}`\n      })\n    })\n\n    await test.step('提交并验证错误处理', async () => {\n      await page.locator('[data-testid=\"submit-warehouse-receiving\"]').click()\n\n      // 验证错误提示\n      const errorMessage = page.locator('[data-testid=\"error-message\"], [data-testid=\"toast-message\"]')\n      await expect(errorMessage).toBeVisible({ timeout: 5000 })\n\n      // 验证表单仍可用（可以重试）\n      const submitButton = page.locator('[data-testid=\"submit-warehouse-receiving\"]')\n      await expect(submitButton).toBeEnabled()\n    })\n  })\n})\n"],"mappings":"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","ignoreList":[]}