csv
This commit is contained in:
parent
2291e7261b
commit
8a802ad40f
7
package-lock.json
generated
7
package-lock.json
generated
@ -9,6 +9,7 @@
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"csv-parse": "^5.5.6",
|
||||
"sharp": "^0.33.5",
|
||||
"tesseract.js": "^5.1.1"
|
||||
},
|
||||
@ -480,6 +481,12 @@
|
||||
"simple-swizzle": "^0.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/csv-parse": {
|
||||
"version": "5.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/csv-parse/-/csv-parse-5.5.6.tgz",
|
||||
"integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz",
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
"hlk_codegen": "npx playwright codegen https://hlk.meiguanjia.net/#/",
|
||||
"mgj_codegen": "npx playwright codegen https://vip1.meiguanjia.net/shair/?v=mgj",
|
||||
"zhb_codegen": "npx playwright codegen https://shengyibao.meiguanjia.net/young/",
|
||||
"zhb_csv-100": "npx playwright test ./tests/zhb/csv-demo.spec.js:13 --repeat-each=100",
|
||||
"ui": "npx playwright test --ui",
|
||||
"pwi": "npm ci && npx playwright install",
|
||||
"pwu": "npx playwright install --with-deps"
|
||||
@ -21,6 +22,7 @@
|
||||
"dotenv": "^16.4.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"csv-parse": "^5.5.6",
|
||||
"sharp": "^0.33.5",
|
||||
"tesseract.js": "^5.1.1"
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ for (let i = 0; i < 3; i++) {
|
||||
await h5Page.locator('.bar_item', { hasText: '商城' }).click();
|
||||
await expect(h5Page.locator('.title', { hasText: '商城' })).toBeVisible();
|
||||
await h5Page.locator('.li span', { hasText: '全部' }).click();
|
||||
await h5Page.locator('.p-item').nth(1).click();
|
||||
await h5Page.locator('.p-item').nth(2).click();
|
||||
await h5Page.waitForLoadState();
|
||||
await h5Page.getByText('立即购买').click();
|
||||
await h5Page
|
||||
|
||||
118
tests/zhb/csv-demo.spec.js
Normal file
118
tests/zhb/csv-demo.spec.js
Normal file
@ -0,0 +1,118 @@
|
||||
const path = require('path');
|
||||
const { parse } = require('csv-parse/sync');
|
||||
const fs = require('fs');
|
||||
const { faker } = require('@faker-js/faker');
|
||||
const { test, expect } = require('./fixture/common');
|
||||
const { Customer } = require('./pom/customerPage');
|
||||
|
||||
const records = parse(fs.readFileSync(path.join(__dirname, 'zhb.csv')), {
|
||||
columns: true,
|
||||
skip_empty_lines: true,
|
||||
});
|
||||
|
||||
test('csv', async ({ zhbPage }, workerInfo) => {
|
||||
console.log(records.length);
|
||||
const $area = zhbPage
|
||||
.locator('.area')
|
||||
.filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) });
|
||||
const $$room = $area.locator('.room-list .room');
|
||||
|
||||
// 随机csv文件中的任意一个顾客
|
||||
const record = records[faker.number.int({ min: 0, max: records.length - 1 })];
|
||||
const { name, phone } = record;
|
||||
console.log({ name, phone });
|
||||
const customer = new Customer({ name: name, phone: name });
|
||||
|
||||
// 使用房间名称
|
||||
let useRoomName;
|
||||
await test.step('购买商品', async () => {
|
||||
await zhbPage.locator('#tab_main li').filter({ hasText: '营业' }).click();
|
||||
const $emptyRoom = $$room
|
||||
.filter({ has: zhbPage.getByText('空房') })
|
||||
.nth(workerInfo.workerIndex % 3);
|
||||
useRoomName = await $emptyRoom.locator('.roomName').innerText();
|
||||
expect(useRoomName).not.toBeNull();
|
||||
await $emptyRoom.click();
|
||||
await expect(async () => {
|
||||
if (await zhbPage.locator('.close > .iconfont').first().isVisible()) {
|
||||
await zhbPage.locator('.close > .iconfont').first().click();
|
||||
}
|
||||
await zhbPage.getByRole('button', { name: '选择顾客' }).click({ timeout: 3000 });
|
||||
await expect(zhbPage.locator('#page_searchMember').getByText('创建会员')).toBeVisible();
|
||||
}).toPass();
|
||||
await zhbPage
|
||||
.getByRole('textbox', { name: '输入会员手机号或姓名或卡号搜索' })
|
||||
.fill(customer.phone, { delay: 100 });
|
||||
await zhbPage.locator('#page_searchMember svg').click();
|
||||
|
||||
const $customerTr = zhbPage
|
||||
.locator('.list-warp')
|
||||
.filter({ has: zhbPage.locator('.name', { hasText: customer.name }) });
|
||||
await $customerTr.locator('.list-body').first().click();
|
||||
|
||||
await zhbPage.getByText('项目开单').click();
|
||||
await expect(zhbPage.locator('#page_roomDetail').getByText('服务项目')).toBeVisible();
|
||||
await zhbPage.getByText('选择', { exact: true }).nth(1).click();
|
||||
await expect(zhbPage.locator('#serviceSelector').getByText('项目选择')).toBeVisible();
|
||||
await zhbPage
|
||||
.locator('.goods-content-item')
|
||||
.nth(faker.number.int({ min: 0, max: 14 }))
|
||||
.click();
|
||||
await zhbPage.locator('#serviceSelector').getByText('确认').click();
|
||||
await zhbPage
|
||||
.locator('div')
|
||||
.filter({ hasText: /^明星足浴$/ })
|
||||
.locator('span')
|
||||
.first()
|
||||
.click();
|
||||
await zhbPage.getByRole('button', { name: '完成开单' }).click();
|
||||
await expect(zhbPage.getByRole('button', { name: '结账' })).toBeVisible({ timeout: 30_000 });
|
||||
await zhbPage.getByRole('button', { name: '结账' }).click();
|
||||
await zhbPage.locator('#page_footBathPay').getByText('结算签字').click();
|
||||
|
||||
await expect(async () => {
|
||||
await zhbPage.locator('#page_footBathPay li').filter({ hasText: '现金' }).click();
|
||||
await expect(zhbPage.locator('#page_footBathPay li').filter({ hasText: '现金' })).toHaveClass(
|
||||
/selected/
|
||||
);
|
||||
await zhbPage
|
||||
.locator('#page_footBathPay span')
|
||||
.filter({ hasText: /结\s算/ })
|
||||
.click();
|
||||
await expect(zhbPage.getByText('顾客满意度点评')).toBeVisible({ timeout: 2000 });
|
||||
}).toPass();
|
||||
|
||||
await zhbPage.getByText('不想评价').click();
|
||||
await zhbPage.locator('#page_footBathPay').getByText('立即返回').click();
|
||||
});
|
||||
|
||||
await test.step('起钟下钟,清理房间', async () => {
|
||||
const $cleanRoom = $$room.filter({
|
||||
has: zhbPage.locator('.roomName', { hasText: new RegExp(`^${useRoomName}$`) }),
|
||||
});
|
||||
await expect($cleanRoom).toContainText('已结清');
|
||||
await $cleanRoom.click();
|
||||
await zhbPage.getByText('技师操作').click();
|
||||
await zhbPage.getByText('起钟', { exact: true }).click();
|
||||
await zhbPage.getByText('起钟成功!').click();
|
||||
await zhbPage.getByText('技师操作').click();
|
||||
await zhbPage.getByText('下钟', { exact: true }).click();
|
||||
await zhbPage
|
||||
.locator('div')
|
||||
.filter({ hasText: /^确认返回$/ })
|
||||
.locator('div')
|
||||
.first()
|
||||
.click();
|
||||
await zhbPage.getByRole('button', { name: '不需要' }).click();
|
||||
|
||||
await expect($cleanRoom).toContainText('打扫');
|
||||
await $cleanRoom.click();
|
||||
await zhbPage
|
||||
.locator('div')
|
||||
.filter({ hasText: /^确定取消$/ })
|
||||
.locator('div')
|
||||
.first()
|
||||
.click();
|
||||
await expect($cleanRoom).toContainText('空房');
|
||||
});
|
||||
});
|
||||
201
tests/zhb/zhb.csv
Normal file
201
tests/zhb/zhb.csv
Normal file
@ -0,0 +1,201 @@
|
||||
name,phone
|
||||
郸志国,12334502225
|
||||
纵佳琪,12352301430
|
||||
马熙瑶,12350424001
|
||||
应国平,12314501244
|
||||
委强,12322301255
|
||||
吕苡沫,12314440133
|
||||
柴沐辰,12311131155
|
||||
史国香,12333211154
|
||||
易天娇,12351430503
|
||||
靖敬彪,12321535101
|
||||
贡秀珍,12352123355
|
||||
悉艺涵,12311403141
|
||||
丁国芳,12343515153
|
||||
喻芳,12311322132
|
||||
析晨阳,12344201554
|
||||
酒建国,12332133555
|
||||
窦智杰,12304133243
|
||||
玉子豪,12314500535
|
||||
渠建军,12314142045
|
||||
甲婷婷,12340453445
|
||||
巫娟,12320023214
|
||||
扈斌,12324211053
|
||||
位杰,12311524133
|
||||
斛沐阳,12311151435
|
||||
驹志国,12305534111
|
||||
盘美方,12322214351
|
||||
柯婷,12314322025
|
||||
马涛,12340204331
|
||||
东政君,12332111030
|
||||
梁玉兰,12355420144
|
||||
安丽,12302350005
|
||||
赫俊杰,12341541431
|
||||
尉迟海燕,12313530222
|
||||
礼国珍,12321141225
|
||||
行梓豪,12343224431
|
||||
拉国荣,12351411412
|
||||
练国栋,12312010324
|
||||
戎沐宸,12343432310
|
||||
翟宇,12344114011
|
||||
桂梓晨,12340344054
|
||||
斋志明,12305321102
|
||||
及万佳,12335454335
|
||||
前雪,12345534331
|
||||
伦英,12321322045
|
||||
柏立伟,12345251522
|
||||
招欣怡,12324401040
|
||||
首茗泽,12323330351
|
||||
计乙萍,12303514002
|
||||
线婷方,12324501502
|
||||
九秀珍,12344040353
|
||||
茂蒙,12312210221
|
||||
红婷方,12340215445
|
||||
扈倩,12354532031
|
||||
原立伟,12342524245
|
||||
祖丽芳,12322124425
|
||||
蓬雨欣,12340321430
|
||||
定瑜,12350252355
|
||||
望丽萍,12311313430
|
||||
铁家豪,12352502012
|
||||
闳雅鑫,12313242150
|
||||
单于燕,12314042132
|
||||
杜奕泽,12345103503
|
||||
尉丽芳,12323404415
|
||||
徭国平,12321014220
|
||||
羽志国,12311511234
|
||||
弥安琪,12322541510
|
||||
阮梓玥,12302200542
|
||||
呼波,12351535225
|
||||
玉呈轩,12304451524
|
||||
针熙瑶,12354523544
|
||||
帖国平,12305535553
|
||||
班天娇,12330411042
|
||||
藏秀珍,12304203153
|
||||
计国琴,12351531450
|
||||
鄢国珍,12343500300
|
||||
屈国兰,12313202405
|
||||
齐子欣,12355341152
|
||||
曹安琪,12355140413
|
||||
甫建华,12354544421
|
||||
苗丽芬,12311142041
|
||||
完倩,12324441204
|
||||
綦雯静,12304221302
|
||||
蔺志明,12322530542
|
||||
磨晨阳,12315334001
|
||||
友秀珍,12312034423
|
||||
历燕,12330435540
|
||||
飞文昊,12315150424
|
||||
萧鹏,12333512443
|
||||
用中海,12334505210
|
||||
竭智杰,12312530202
|
||||
次国琴,12331300513
|
||||
乙一诺,12304041145
|
||||
析志明,12340411012
|
||||
曲红,12320421131
|
||||
闫馨羽,12332235531
|
||||
卷语桐,12305350101
|
||||
旷丹,12351401021
|
||||
植玉梅,12340034300
|
||||
祖国栋,12310142153
|
||||
乙艺涵,12301532402
|
||||
海芳,12313345003
|
||||
枝敬彪,12324501125
|
||||
雍国秀,12340243412
|
||||
章佳紫林,12320333352
|
||||
充丽萍,12322423001
|
||||
百雅鑫,12333040513
|
||||
鹿治涛,12324533401
|
||||
慎文韬,12350423141
|
||||
谯梓涵,12301052044
|
||||
针振东,12353344501
|
||||
绍奕辰,12350005540
|
||||
仉文昊,12332320502
|
||||
元梓玥,12335424410
|
||||
祝浩宇,12311335301
|
||||
来斌,12300325534
|
||||
刁志明,12320244541
|
||||
首兰英,12311150011
|
||||
练安琪,12342301055
|
||||
唐雯静,12312505520
|
||||
郝天娇,12312520301
|
||||
庄丽芳,12353444410
|
||||
源依诺,12342341501
|
||||
诸丽芬,12312415203
|
||||
朱慧,12344511420
|
||||
绍国辉,12341315304
|
||||
肥志明,12304445132
|
||||
包文韬,12330305102
|
||||
钱倩,12350342140
|
||||
樊丽芳,12332020302
|
||||
钱雨欣,12304114004
|
||||
鱼静,12331411232
|
||||
速宇泽,12331502245
|
||||
叔沐宸,12335305514
|
||||
进国英,12314454234
|
||||
费慧,12304155020
|
||||
漆治文,12352421501
|
||||
示雪,12353154301
|
||||
劳颖,12343235112
|
||||
谈馥君,12343113130
|
||||
兆呈轩,12320135205
|
||||
萧文韬,12304320034
|
||||
漫军,12321552123
|
||||
施国珍,12330141235
|
||||
纳静怡,12341035053
|
||||
贰阳,12305451142
|
||||
呼义轩,12315402403
|
||||
植语桐,12335354425
|
||||
路国荣,12304330054
|
||||
支梓豪,12333434504
|
||||
蔚宇航,12321411124
|
||||
第宇航,12342053534
|
||||
校海燕,12301142130
|
||||
纳喇诗雨,12323221524
|
||||
浑呈轩,12351243530
|
||||
弓梓馨,12353030231
|
||||
常玉梅,12352425540
|
||||
冀丽萍,12343501540
|
||||
北民,12321312355
|
||||
栋勇,12321145441
|
||||
原桂兰,12352325455
|
||||
陈榕融,12315235050
|
||||
况伟,12353031413
|
||||
丁浩辰,12345310354
|
||||
郭斌,12352334430
|
||||
巴蒙,12344251134
|
||||
可艳,12310255512
|
||||
玄浩辰,12331503043
|
||||
沙呈轩,12302013431
|
||||
荤成,12344214445
|
||||
林熙瑶,12305423343
|
||||
葛梓睿,12314114055
|
||||
湛斌,12345150514
|
||||
由静,12300130254
|
||||
侯振东,12324015213
|
||||
贺单,12301145101
|
||||
所宇轩,12331420152
|
||||
颜颖,12300005420
|
||||
咎玉梅,12352454144
|
||||
占俊杰,12324402343
|
||||
觉罗秀珍,12311240034
|
||||
范姜丽,12330542141
|
||||
弘梓浩,12343343451
|
||||
通雨欣,12331513024
|
||||
丘梓诚,12344112043
|
||||
贵梓晨,12311414030
|
||||
狄悦,12332305454
|
||||
穆凤英,12335205455
|
||||
金智杰,12301542505
|
||||
蒙癸霖,12305252022
|
||||
诺兰英,12303005354
|
||||
帛娟,12304243114
|
||||
在国英,12355121223
|
||||
严芳,12355412233
|
||||
狄治文,12320503352
|
||||
律雨欣,12345523042
|
||||
偶敬彪,12332433431
|
||||
求佳琪,12300144202
|
||||
唐中海,12351305521
|
||||
第治涛,12300442432
|
||||
壬家明,12335343552
|
||||
|
Reference in New Issue
Block a user