Commit 99ac3e2dc8eaf40f528fb3fd704eb1ea20538d3e
1 parent
275431cd
feat: add purchase save-then-pay test, expectPaid method, fix clickPay nth and draft edit flow
Showing
2 changed files
with
118 additions
and
2 deletions
pages/purchasePage.ts
| @@ -390,6 +390,14 @@ export class PurchasePage extends BasePage { | @@ -390,6 +390,14 @@ export class PurchasePage extends BasePage { | ||
| 390 | } | 390 | } |
| 391 | 391 | ||
| 392 | /** | 392 | /** |
| 393 | + * 验证采购单状态为已支付 | ||
| 394 | + */ | ||
| 395 | + async expectPurchaseOrderStatusPaid(): Promise<void> { | ||
| 396 | + const statusLabel = this.page.getByText('已支付').nth(1); | ||
| 397 | + await expect(statusLabel).toBeVisible({ timeout: 10000 }); | ||
| 398 | + } | ||
| 399 | + | ||
| 400 | + /** | ||
| 393 | * 创建采购入库草稿(完整流程) | 401 | * 创建采购入库草稿(完整流程) |
| 394 | * @param productName 商品名称 | 402 | * @param productName 商品名称 |
| 395 | * @param supplierName 供应商名称 | 403 | * @param supplierName 供应商名称 |
| @@ -525,9 +533,10 @@ export class PurchasePage extends BasePage { | @@ -525,9 +533,10 @@ export class PurchasePage extends BasePage { | ||
| 525 | 533 | ||
| 526 | /** | 534 | /** |
| 527 | * 点击付款按钮 | 535 | * 点击付款按钮 |
| 536 | + * @param index 第几个付款按钮,默认0(表单页),列表页使用1 | ||
| 528 | */ | 537 | */ |
| 529 | - async clickPay(): Promise<void> { | ||
| 530 | - await this.payButton.click(); | 538 | + async clickPay(index: number = 0): Promise<void> { |
| 539 | + await this.payButton.nth(index).click(); | ||
| 531 | } | 540 | } |
| 532 | 541 | ||
| 533 | /** | 542 | /** |
tests/purchase.spec.ts
| @@ -304,4 +304,111 @@ test.describe('采购入库', () => { | @@ -304,4 +304,111 @@ test.describe('采购入库', () => { | ||
| 304 | await purchasePage.expectPurchaseListContainsProduct(productName); | 304 | await purchasePage.expectPurchaseListContainsProduct(productName); |
| 305 | }); | 305 | }); |
| 306 | }); | 306 | }); |
| 307 | + | ||
| 308 | + test('采购入库保存后付款', async ({ page }, testInfo) => { | ||
| 309 | + const purchasePage = new PurchasePage(page); | ||
| 310 | + | ||
| 311 | + // 添加allure元素 | ||
| 312 | + await allure.epic('仓储管理'); | ||
| 313 | + await allure.feature('采购入库'); | ||
| 314 | + await allure.story('采购入库保存后付款'); | ||
| 315 | + | ||
| 316 | + // 测试数据 | ||
| 317 | + let supplierName: string; | ||
| 318 | + let warehouseName: string; | ||
| 319 | + let productName: string; | ||
| 320 | + | ||
| 321 | + // 步骤1:进入采购入库页面 | ||
| 322 | + await allure.step('进入采购入库页面', async () => { | ||
| 323 | + await purchasePage.openPurchaseInbound(); | ||
| 324 | + }); | ||
| 325 | + | ||
| 326 | + // 步骤2:随机选择商品 | ||
| 327 | + await allure.step('随机选择商品', async () => { | ||
| 328 | + productName = await purchasePage.selectRandomProduct(); | ||
| 329 | + console.log('商品:', productName); | ||
| 330 | + }); | ||
| 331 | + | ||
| 332 | + // 步骤3:输入数量 | ||
| 333 | + await allure.step('输入数量', async () => { | ||
| 334 | + await purchasePage.enterQuantity('1'); | ||
| 335 | + }); | ||
| 336 | + | ||
| 337 | + // 步骤4:输入单价 | ||
| 338 | + await allure.step('输入单价', async () => { | ||
| 339 | + await purchasePage.enterPrice('1'); | ||
| 340 | + }); | ||
| 341 | + | ||
| 342 | + // 步骤5:点击完成 | ||
| 343 | + await allure.step('点击完成', async () => { | ||
| 344 | + await purchasePage.clickDone(); | ||
| 345 | + }); | ||
| 346 | + | ||
| 347 | + // 步骤6:添加入库费用 | ||
| 348 | + await allure.step('添加入库费用', async () => { | ||
| 349 | + await purchasePage.addExpense(0, '1'); | ||
| 350 | + }); | ||
| 351 | + | ||
| 352 | + // 步骤7:随机选择供应商 | ||
| 353 | + await allure.step('随机选择供应商', async () => { | ||
| 354 | + supplierName = await purchasePage.getRandomSupplier(); | ||
| 355 | + console.log('供应商:', supplierName); | ||
| 356 | + }); | ||
| 357 | + | ||
| 358 | + // 步骤8:随机选择仓库 | ||
| 359 | + await allure.step('随机选择仓库', async () => { | ||
| 360 | + warehouseName = await purchasePage.getRandomWarehouse(); | ||
| 361 | + console.log('仓库:', warehouseName); | ||
| 362 | + }); | ||
| 363 | + | ||
| 364 | + // 步骤9:选择采购员 | ||
| 365 | + await allure.step('选择采购员', async () => { | ||
| 366 | + await purchasePage.selectPurchaser(); | ||
| 367 | + }); | ||
| 368 | + | ||
| 369 | + // 步骤10:输入车牌号 | ||
| 370 | + await allure.step('输入车牌号', async () => { | ||
| 371 | + await purchasePage.enterLicensePlate('渝YUNI99'); | ||
| 372 | + }); | ||
| 373 | + | ||
| 374 | + // 步骤11:输入备注 | ||
| 375 | + await allure.step('输入备注', async () => { | ||
| 376 | + await purchasePage.enterRemark('自动化测试'); | ||
| 377 | + }); | ||
| 378 | + | ||
| 379 | + // 步骤12:点击保存 | ||
| 380 | + await allure.step('点击保存', async () => { | ||
| 381 | + await purchasePage.clickSave(); | ||
| 382 | + }); | ||
| 383 | + | ||
| 384 | + // 步骤13:搜索商品 | ||
| 385 | + await allure.step('搜索商品', async () => { | ||
| 386 | + await purchasePage.searchInPurchaseList(productName); | ||
| 387 | + }); | ||
| 388 | + | ||
| 389 | + // 步骤14:验证采购单状态为待支付 | ||
| 390 | + await allure.step('验证采购单状态为待支付', async () => { | ||
| 391 | + await purchasePage.expectPurchaseOrderStatusPending(productName); | ||
| 392 | + }); | ||
| 393 | + | ||
| 394 | + // 步骤15:点击付款 | ||
| 395 | + await allure.step('点击付款', async () => { | ||
| 396 | + await purchasePage.clickPay(1); | ||
| 397 | + }); | ||
| 398 | + | ||
| 399 | + // 步骤16:选择结算账户(支付成功,无确认弹窗) | ||
| 400 | + await allure.step('选择结算账户', async () => { | ||
| 401 | + await purchasePage.selectSettlementAccount('微信支付'); | ||
| 402 | + }); | ||
| 403 | + | ||
| 404 | + // 步骤17:搜索商品 | ||
| 405 | + await allure.step('搜索商品', async () => { | ||
| 406 | + await purchasePage.searchInPurchaseList(productName); | ||
| 407 | + }); | ||
| 408 | + | ||
| 409 | + // 步骤18:验证采购单状态为已支付 | ||
| 410 | + await allure.step('验证采购单状态为已支付', async () => { | ||
| 411 | + await purchasePage.expectPurchaseOrderStatusPaid(); | ||
| 412 | + }); | ||
| 413 | + }); | ||
| 307 | }); | 414 | }); |
| 308 | \ No newline at end of file | 415 | \ No newline at end of file |