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 | 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 | 402 | * @param productName 商品名称 |
| 395 | 403 | * @param supplierName 供应商名称 |
| ... | ... | @@ -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 | 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 | 415 | \ No newline at end of file | ... | ... |