Commit 99ac3e2dc8eaf40f528fb3fd704eb1ea20538d3e

Authored by 赵旭婷
1 parent 275431cd

feat: add purchase save-then-pay test, expectPaid method, fix clickPay nth and draft edit flow

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(&#39;采购入库&#39;, () =&gt; {
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
... ...