How to use isEnd method in Playwright Internal

Best JavaScript code snippet using playwright-internal

treeData.js

Source:treeData.js Github

copy

Full Screen

1export default [{2 level: 0,3 tenant: 1292161350684928,4 isShopRelated: false,5 name: '机构人员',6 code: 'pc_organdemployee',7 isDeleted: 0,8 isEnd: false,9 terminalType: '1',10 orderNum: 10,11 icon: 'jigourenyuan',12 isSystem: 1,13 subId: 'PC',14 pubts: '2019-07-02 19:34:23',15 authLevel: 1,16 children: [{17 level: 1,18 tenant: 1292161350684928,19 isShopRelated: false,20 name: '企业',21 code: 'AA00',22 isDeleted: 0,23 isEnd: false,24 terminalType: '1',25 parentCode: 'pc_organdemployee',26 orderNum: 10,27 isSystem: 1,28 subId: 'AA',29 pubts: '2019-07-02 19:34:23',30 authLevel: 1,31 children: [{32 level: 1,33 tenant: 1292161350684928,34 isShopRelated: false,35 name: '企业信息',36 code: 'AA0001',37 isDeleted: 0,38 menuUrl: 'system-setting',39 isEnd: true,40 authCode: 'system-setting',41 terminalType: '1',42 parentCode: 'AA00',43 orderNum: 10,44 isSystem: 1,45 subId: 'AA',46 pubts: '2019-07-02 19:34:23',47 disabled: false,48 authLevel: 1,49 viewType: 'platform'50 }]51 }, {52 level: 1,53 tenant: 1292161350684928,54 isShopRelated: false,55 name: '机构',56 code: 'AA01',57 isDeleted: 0,58 isEnd: false,59 terminalType: '1',60 parentCode: 'pc_organdemployee',61 orderNum: 10,62 isSystem: 1,63 subId: 'AA',64 pubts: '2019-07-02 19:34:23',65 authLevel: 3,66 children: [{67 level: 1,68 tenant: 1292161350684928,69 isShopRelated: false,70 name: '组织',71 code: 'AA0101',72 isDeleted: 0,73 isEnd: true,74 authCode: 'aa_orgtreequerytree',75 terminalType: '1',76 parentCode: 'AA01',77 orderNum: 20,78 isSystem: 1,79 metaKey: 'aa_orgtree',80 subId: 'AA',81 pubts: '2019-07-02 19:34:23',82 disabled: false,83 authLevel: 1,84 metaType: 'TreeArchive',85 viewType: 'meta'86 }, {87 level: 1,88 tenant: 1292161350684928,89 isShopRelated: false,90 name: '部门',91 code: 'AA0102',92 isDeleted: 0,93 isEnd: true,94 authCode: 'aa_departmentquerytree',95 terminalType: '1',96 parentCode: 'AA01',97 orderNum: 30,98 isSystem: 1,99 metaKey: 'aa_department',100 subId: 'AA',101 pubts: '2019-07-02 19:34:23',102 disabled: false,103 authLevel: 1,104 metaType: 'treeArchive',105 viewType: 'meta'106 }]107 }, {108 level: 1,109 tenant: 1292161350684928,110 isShopRelated: false,111 name: '人员',112 code: 'AA02',113 isDeleted: 0,114 isEnd: false,115 authCode: '',116 terminalType: '1',117 parentCode: 'pc_organdemployee',118 orderNum: 30,119 isSystem: 1,120 subId: 'AA',121 pubts: '2019-07-02 19:34:23',122 authLevel: 5,123 children: [{124 level: 0,125 tenant: 1292161350684928,126 isShopRelated: false,127 name: '人员',128 code: 'aa_optlist',129 isDeleted: 0,130 isEnd: true,131 authCode: 'aa_optlistlist',132 terminalType: '1',133 parentCode: 'AA02',134 orderNum: 60,135 icon: 'operator',136 isSystem: 1,137 metaKey: 'aa_optlist',138 subId: 'AA',139 pubts: '2019-07-02 19:34:23',140 disabled: false,141 authLevel: 1,142 metaType: 'voucherList',143 viewType: 'meta'144 }],145 metaType: 'voucherlist'146 }]147}, {148 level: 0,149 tenant: 1292161350684928,150 isShopRelated: false,151 name: '客商管理',152 code: 'aa_merchantmanagement',153 isDeleted: 0,154 isEnd: false,155 terminalType: '1',156 orderNum: 10,157 icon: 'keshangdangan',158 isSystem: 1,159 subId: 'AA',160 pubts: '2019-07-02 19:34:23',161 authLevel: 5,162 children: [{163 level: 1,164 tenant: 1292161350684928,165 isShopRelated: false,166 name: '客户',167 code: 'aa_merchantarchives',168 isDeleted: 0,169 isEnd: false,170 authCode: '',171 terminalType: '1',172 parentCode: 'aa_merchantmanagement',173 orderNum: 1,174 isSystem: 1,175 subId: 'AA',176 pubts: '2019-07-02 19:34:23',177 authLevel: 5,178 children: [{179 level: 2,180 tenant: 1292161350684928,181 isShopRelated: false,182 name: '客户',183 code: 'aa_merchant',184 isDeleted: 0,185 isEnd: true,186 authCode: '',187 terminalType: '1',188 parentCode: 'aa_merchantarchives',189 orderNum: 1,190 isSystem: 1,191 metaKey: 'aa_merchantlist',192 subId: 'AA',193 pubts: '2019-07-02 19:34:23',194 disabled: false,195 authLevel: 5,196 metaType: 'voucherList',197 viewType: 'meta'198 }, {199 level: 2,200 tenant: 1292161350684928,201 isShopRelated: false,202 name: '客户分类',203 code: 'aa_custcategorylist',204 isDeleted: 0,205 isEnd: true,206 authCode: 'aa_custcategorylist',207 terminalType: '1',208 parentCode: 'aa_merchantarchives',209 orderNum: 2,210 isSystem: 1,211 metaKey: 'aa_custcategorylist',212 subId: 'AA',213 pubts: '2019-07-02 19:34:23',214 disabled: false,215 authLevel: 3,216 metaType: 'ArchiveList',217 viewType: 'meta'218 }, {219 level: 2,220 tenant: 1292161350684928,221 isShopRelated: false,222 name: '客户级别',223 code: 'aa_cuslevellist',224 isDeleted: 0,225 isEnd: true,226 authCode: 'aa_cuslevellist',227 terminalType: '1',228 parentCode: 'aa_merchantarchives',229 orderNum: 3,230 isSystem: 1,231 metaKey: 'aa_cuslevellist',232 subId: 'AA',233 pubts: '2019-07-02 19:34:23',234 disabled: false,235 authLevel: 3,236 metaType: 'ArchiveList',237 viewType: 'meta'238 }, {239 level: 2,240 tenant: 1292161350684928,241 isShopRelated: false,242 name: '客户行业',243 code: 'aa_customertradelist',244 isDeleted: 0,245 isEnd: true,246 authCode: 'aa_customertradelistlist',247 terminalType: '1',248 parentCode: 'aa_merchantarchives',249 orderNum: 5,250 isSystem: 1,251 metaKey: 'aa_customertradelist',252 subId: 'AA',253 pubts: '2019-07-02 19:34:23',254 disabled: false,255 authLevel: 3,256 metaType: 'ArchiveList',257 viewType: 'meta'258 }, {259 level: 2,260 tenant: 1292161350684928,261 isShopRelated: false,262 name: '客户属性',263 code: 'aa_customerpro',264 isDeleted: 0,265 isEnd: true,266 authCode: '',267 terminalType: '1',268 parentCode: 'aa_merchantarchives',269 orderNum: 6,270 isSystem: 1,271 metaKey: 'aa_customerprolist',272 subId: 'AA',273 pubts: '2019-07-02 19:34:23',274 disabled: false,275 authLevel: 1,276 metaType: 'voucherList',277 viewType: 'meta'278 }, {279 level: 2,280 tenant: 1292161350684928,281 isShopRelated: false,282 name: '销售区域',283 code: 'aa_salearealist',284 isDeleted: 0,285 isEnd: true,286 authCode: 'aa_salearealist',287 terminalType: '1',288 parentCode: 'aa_merchantarchives',289 orderNum: 400,290 isSystem: 1,291 metaKey: 'aa_salearealist',292 subId: 'AA',293 pubts: '2019-07-02 19:34:23',294 disabled: false,295 authLevel: 3,296 metaType: 'ArchiveList',297 viewType: 'meta'298 }],299 metaType: 'voucherlist'300 }, {301 level: 1,302 tenant: 1292161350684928,303 isShopRelated: false,304 name: '供应商',305 code: 'aa_vendorarchives',306 isDeleted: 0,307 isEnd: false,308 authCode: '',309 terminalType: '1',310 parentCode: 'aa_merchantmanagement',311 orderNum: 2,312 isSystem: 1,313 subId: 'AA',314 pubts: '2019-07-02 19:34:23',315 authLevel: 5,316 children: [{317 level: 2,318 tenant: 1292161350684928,319 isShopRelated: false,320 name: '供应商档案',321 code: 'aa_vendorlist',322 isDeleted: 0,323 isEnd: true,324 authCode: 'aa_vendorlistlist',325 terminalType: '1',326 parentCode: 'aa_vendorarchives',327 orderNum: 1,328 isSystem: 1,329 metaKey: 'aa_vendorlist',330 subId: 'AA',331 pubts: '2019-07-02 19:34:23',332 disabled: false,333 authLevel: 3,334 metaType: 'ArchiveList',335 viewType: 'meta'336 }, {337 level: 2,338 tenant: 1292161350684928,339 isShopRelated: false,340 name: '供应商分类',341 code: 'aa_vendorclassificationlist',342 isDeleted: 0,343 isEnd: true,344 authCode: 'aa_vendorclassificationlist',345 terminalType: '1',346 parentCode: 'aa_vendorarchives',347 orderNum: 2,348 isSystem: 1,349 metaKey: 'aa_vendorclassificationlist',350 subId: 'AA',351 pubts: '2019-07-02 19:34:23',352 disabled: false,353 authLevel: 3,354 metaType: 'ArchiveList',355 viewType: 'meta'356 }, {357 level: 2,358 tenant: 1292161350684928,359 isShopRelated: false,360 name: '供应商属性',361 code: 'pc_vendorprolist',362 isDeleted: 0,363 isEnd: true,364 authCode: 'pc_vendorprolist',365 terminalType: '1',366 parentCode: 'aa_vendorarchives',367 orderNum: 3,368 isSystem: 1,369 metaKey: 'pc_vendorprolist',370 subId: 'AA',371 pubts: '2019-07-02 19:34:23',372 disabled: false,373 authLevel: 3,374 metaType: 'ArchiveList',375 viewType: 'meta'376 }],377 metaType: 'voucherlist'378 }]379}, {380 level: 0,381 tenant: 1292161350684928,382 isShopRelated: false,383 name: '用户及角色',384 code: 'pc_userandrole',385 isDeleted: 0,386 isEnd: false,387 terminalType: '1',388 orderNum: 20,389 icon: 'yonghujijiaose',390 isSystem: 1,391 subId: 'PC',392 pubts: '2019-07-02 19:34:23',393 authLevel: 5,394 children: [{395 level: 2,396 tenant: 1292161350684928,397 isShopRelated: false,398 name: '用户管理',399 code: 'AABS0201',400 isDeleted: 0,401 isEnd: true,402 authCode: 'aa_userlistlist',403 terminalType: '1',404 parentCode: 'pc_userandrole',405 orderNum: 10,406 isSystem: 1,407 metaKey: 'aa_userlist',408 subId: 'AA',409 pubts: '2019-07-02 19:34:23',410 disabled: false,411 authLevel: 5,412 metaType: 'voucherlist',413 viewType: 'meta'414 }, {415 level: 1,416 tenant: 1292161350684928,417 isShopRelated: false,418 name: '角色管理',419 code: 'AABS0202',420 isDeleted: 0,421 isEnd: true,422 authCode: 'sys_rolelistlist',423 terminalType: '1',424 parentCode: 'pc_userandrole',425 orderNum: 20,426 isSystem: 1,427 metaKey: 'sys_rolelist',428 subId: 'AA',429 pubts: '2019-07-02 19:34:23',430 disabled: false,431 authLevel: 1,432 metaType: 'voucherlist',433 viewType: 'meta'434 }, {435 level: 3,436 tenant: 1292161350684928,437 isShopRelated: false,438 name: '数据权限设置',439 code: 'AABS0203',440 isDeleted: 0,441 menuUrl: 'dataauth-set',442 isEnd: true,443 authCode: 'aa_dataauthlistlist',444 terminalType: '1',445 parentCode: 'pc_userandrole',446 orderNum: 40,447 isSystem: 1,448 subId: 'PC',449 pubts: '2019-07-02 19:34:23',450 disabled: false,451 authLevel: 3,452 viewType: 'platform'453 }, {454 level: 4,455 tenant: 1292161350684928,456 isShopRelated: false,457 name: '数据权限',458 code: 'data-permission',459 isDeleted: 0,460 menuUrl: 'data-permission',461 isEnd: true,462 terminalType: '1',463 parentCode: 'pc_userandrole',464 orderNum: 50,465 isSystem: 1,466 subId: 'AA',467 pubts: '2019-07-02 19:34:23',468 disabled: false,469 authLevel: 3,470 viewType: 'platform'471 }]472}, {473 level: 0,474 tenant: 1292161350684928,475 isShopRelated: false,476 name: '商品中心',477 code: 'pc_productcenter',478 isDeleted: 0,479 isEnd: false,480 terminalType: '1',481 orderNum: 30,482 icon: 'shangpinzhongxin',483 isSystem: 1,484 subId: 'PC',485 pubts: '2019-07-02 19:34:23',486 authLevel: 5,487 children: [{488 level: 1,489 tenant: 1292161350684928,490 isShopRelated: false,491 name: '商品档案',492 code: 'pc_productarchives',493 isDeleted: 0,494 isEnd: false,495 authCode: '',496 terminalType: '1',497 parentCode: 'pc_productcenter',498 orderNum: 10,499 isSystem: 1,500 subId: 'PC',501 pubts: '2019-07-02 19:34:23',502 authLevel: 5,503 children: [{504 level: 2,505 tenant: 1292161350684928,506 isShopRelated: false,507 name: '商品档案',508 code: 'pc_product',509 isDeleted: 0,510 isEnd: true,511 authCode: 'pc_productlist',512 terminalType: '1',513 parentCode: 'pc_productarchives',514 orderNum: 10,515 icon: 'shangpindangan',516 isSystem: 1,517 metaKey: 'pc_productlist',518 subId: 'PC',519 pubts: '2019-07-02 19:34:23',520 disabled: false,521 authLevel: 5,522 metaType: 'voucherList',523 viewType: 'meta'524 }, {525 level: 2,526 tenant: 1292161350684928,527 isShopRelated: false,528 name: '货品查询',529 code: 'pc_goodsproductskuprolist',530 isDeleted: 0,531 isEnd: true,532 authCode: 'pc_goodsproductskuprolist',533 terminalType: '1',534 parentCode: 'pc_productarchives',535 orderNum: 20,536 icon: 'huopindangan',537 isSystem: 1,538 metaKey: 'pc_goodsproductskuprolist',539 subId: 'PC',540 pubts: '2019-07-02 19:34:23',541 disabled: false,542 authLevel: 5,543 metaType: 'voucherList',544 viewType: 'meta'545 }, {546 level: 2,547 tenant: 1292161350684928,548 isShopRelated: false,549 name: '商家商品',550 code: 'pc_product_shop',551 isDeleted: 0,552 menuUrl: '?externalData=shop',553 isEnd: true,554 authCode: 'pc_product_shoplist',555 terminalType: '1',556 parentCode: 'pc_productarchives',557 orderNum: 30,558 isSystem: 1,559 metaKey: 'pc_productlist_shop',560 subId: 'PC',561 pubts: '2019-07-02 19:34:23',562 disabled: false,563 authLevel: 1,564 metaType: 'voucherlist',565 viewType: 'meta'566 }, {567 level: 2,568 tenant: 1292161350684928,569 isShopRelated: false,570 name: '商品查询',571 code: 'pc_product_query',572 isDeleted: 0,573 menuUrl: '?externalData=query',574 isEnd: true,575 authCode: 'pc_product_querylist',576 terminalType: '1',577 parentCode: 'pc_productarchives',578 orderNum: 50,579 icon: 'shangpindangan',580 isSystem: 1,581 metaKey: 'pc_productlist_query',582 subId: 'PC',583 pubts: '2019-07-02 19:34:23',584 disabled: false,585 authLevel: 5,586 metaType: 'voucherList',587 viewType: 'meta'588 }],589 metaType: 'voucherlist'590 }, {591 level: 0,592 tenant: 1292161350684928,593 isShopRelated: false,594 name: '商品分类',595 code: 'PC_CLS',596 isDeleted: 0,597 isEnd: false,598 authCode: '',599 terminalType: '1',600 parentCode: 'pc_productcenter',601 orderNum: 20,602 icon: 'shangpinfenlei',603 isSystem: 1,604 metaKey: '',605 subId: 'PC',606 pubts: '2019-07-02 19:34:23',607 authLevel: 1,608 children: [{609 level: 1,610 tenant: 1292161350684928,611 isShopRelated: false,612 name: '商品分类',613 code: 'PC_CLS0101',614 isDeleted: 0,615 isEnd: true,616 authCode: 'pc_presentationclasslist',617 terminalType: '1',618 parentCode: 'PC_CLS',619 orderNum: 1,620 icon: 'jichushezhi',621 isSystem: 1,622 metaKey: 'pc_presentationclasslist',623 subId: 'PC',624 pubts: '2019-07-02 19:34:23',625 disabled: false,626 authLevel: 1,627 metaType: 'voucherList',628 viewType: 'meta'629 }, {630 level: 1,631 tenant: 1292161350684928,632 isShopRelated: false,633 name: '管理分类',634 code: 'PC_CLS0102',635 isDeleted: 0,636 isEnd: true,637 authCode: 'pc_managementclasslist',638 terminalType: '1',639 parentCode: 'PC_CLS',640 orderNum: 2,641 icon: 'shangpinzhongxin',642 isSystem: 1,643 metaKey: 'pc_managementclasslist',644 subId: 'PC',645 pubts: '2019-07-02 19:34:23',646 disabled: false,647 authLevel: 1,648 metaType: 'voucherList',649 viewType: 'meta'650 }],651 metaType: '',652 viewType: ''653 }, {654 level: 0,655 tenant: 1292161350684928,656 isShopRelated: false,657 name: '商品模板',658 code: 'PC_TPL',659 isDeleted: 0,660 isEnd: true,661 authCode: 'pc_producttpllist',662 terminalType: '1',663 parentCode: 'pc_productcenter',664 orderNum: 30,665 icon: 'shangpinmoban',666 isSystem: 1,667 metaKey: 'pc_producttpllist',668 subId: 'PC',669 pubts: '2019-07-02 19:34:23',670 disabled: false,671 authLevel: 1,672 metaType: 'voucherList',673 viewType: 'meta'674 }, {675 level: 0,676 tenant: 1292161350684928,677 isShopRelated: false,678 name: '商品规格',679 code: 'pc_spepro',680 isDeleted: 0,681 isEnd: true,682 authCode: 'pc_speprolist',683 terminalType: '1',684 parentCode: 'pc_productcenter',685 orderNum: 40,686 icon: 'shangpinguige',687 isSystem: 1,688 metaKey: 'pc_speprolist',689 subId: 'PC',690 pubts: '2019-07-02 19:34:23',691 disabled: false,692 authLevel: 1,693 metaType: 'voucherList',694 viewType: 'meta'695 }, {696 level: 0,697 tenant: 1292161350684928,698 isShopRelated: false,699 name: '商品品牌',700 code: 'pc_brand01',701 isDeleted: 0,702 isEnd: false,703 terminalType: '1',704 parentCode: 'pc_productcenter',705 orderNum: 50,706 icon: 'shangpinpinpai',707 isSystem: 1,708 subId: 'pc',709 pubts: '2019-07-02 19:34:23',710 authLevel: 1,711 children: [{712 level: 1,713 tenant: 1292161350684928,714 isShopRelated: false,715 name: '品牌分组',716 code: 'pc_brandclass',717 isDeleted: 0,718 isEnd: true,719 authCode: 'pc_brandclasslist',720 terminalType: '1',721 parentCode: 'pc_brand01',722 orderNum: 10,723 icon: 'huyuanzhongxin',724 isSystem: 1,725 metaKey: 'pc_brandclasslist',726 subId: 'pc',727 pubts: '2019-07-02 19:34:23',728 disabled: false,729 authLevel: 1,730 metaType: 'voucherList',731 viewType: 'meta'732 }, {733 level: 1,734 tenant: 1292161350684928,735 isShopRelated: false,736 name: '品牌列表',737 code: 'PC_BRAND',738 isDeleted: 0,739 isEnd: true,740 authCode: 'pc_brandlist',741 terminalType: '1',742 parentCode: 'pc_brand01',743 orderNum: 20,744 icon: 'jichushezhi',745 isSystem: 1,746 metaKey: 'pc_brandlist',747 subId: 'PC',748 pubts: '2019-07-02 19:34:23',749 disabled: false,750 authLevel: 1,751 metaType: 'voucherList',752 viewType: 'meta'753 }, {754 level: 1,755 depends: 'isOpenTenant',756 tenant: 1292161350684928,757 isShopRelated: false,758 name: '品牌属性',759 code: 'pc_productbrandpro',760 isDeleted: 0,761 isEnd: true,762 authCode: 'pc_productbrandprolist',763 terminalType: '1',764 parentCode: 'pc_brand01',765 orderNum: 30,766 icon: 'jichushezhi',767 isSystem: 1,768 metaKey: 'pc_productbrandprolist',769 subId: 'pc',770 pubts: '2019-07-02 19:34:23',771 disabled: false,772 authLevel: 1,773 metaType: 'voucherList',774 viewType: 'meta'775 }]776 }, {777 level: 0,778 tenant: 1292161350684928,779 isShopRelated: false,780 name: '产品线',781 code: 'pc_productline',782 isDeleted: 0,783 isEnd: true,784 authCode: 'pc_productlinelist',785 terminalType: '1',786 parentCode: 'pc_productcenter',787 orderNum: 50,788 isSystem: 1,789 metaKey: 'pc_productlinelist',790 subId: 'PC',791 pubts: '2019-07-02 19:34:23',792 disabled: false,793 authLevel: 1,794 metaType: 'voucherList',795 viewType: 'meta'796 }, {797 level: 0,798 tenant: 1292161350684928,799 isShopRelated: false,800 name: '商品标签',801 code: 'pc_tag01',802 isDeleted: 0,803 isEnd: false,804 terminalType: '1',805 parentCode: 'pc_productcenter',806 orderNum: 60,807 icon: 'shangpinbiaoqian',808 isSystem: 1,809 subId: 'pc',810 pubts: '2019-07-02 19:34:23',811 authLevel: 1,812 children: [{813 level: 1,814 tenant: 1292161350684928,815 isShopRelated: false,816 name: '标签分组',817 code: 'pc_tagclass',818 isDeleted: 0,819 isEnd: true,820 authCode: 'pc_tagclasslist',821 terminalType: '1',822 parentCode: 'pc_tag01',823 orderNum: 1,824 icon: 'huyuanzhongxin',825 isSystem: 1,826 metaKey: 'pc_tagclasslist',827 subId: 'PC',828 pubts: '2019-07-02 19:34:23',829 disabled: false,830 authLevel: 1,831 metaType: 'voucherList',832 viewType: 'meta'833 }, {834 level: 1,835 tenant: 1292161350684928,836 isShopRelated: false,837 name: '标签列表',838 code: 'pc02',839 isDeleted: 0,840 isEnd: true,841 authCode: 'pc_taglist',842 terminalType: '1',843 parentCode: 'pc_tag01',844 orderNum: 2,845 icon: 'huyuanzhongxin',846 isSystem: 1,847 metaKey: 'pc_taglist',848 subId: 'PC',849 pubts: '2019-07-02 19:34:23',850 disabled: false,851 authLevel: 1,852 metaType: 'voucherList',853 viewType: 'meta'854 }]855 }, {856 level: 0,857 tenant: 1292161350684928,858 isShopRelated: false,859 name: '计量单位',860 code: 'pc01',861 isDeleted: 0,862 isEnd: true,863 authCode: 'pc_unitlist',864 terminalType: '1',865 parentCode: 'pc_productcenter',866 orderNum: 70,867 icon: 'jiliangdanwei',868 isSystem: 1,869 metaKey: 'pc_unitlist',870 subId: 'PC',871 pubts: '2019-07-02 19:34:23',872 disabled: false,873 authLevel: 1,874 metaType: 'voucherList',875 viewType: 'meta'876 }, {877 level: 0,878 depends: 'isOpenTenant',879 tenant: 1292161350684928,880 isShopRelated: false,881 name: '商品属性',882 code: 'pc_productproperty',883 isDeleted: 0,884 isEnd: false,885 authCode: '',886 terminalType: '1',887 parentCode: 'pc_productcenter',888 orderNum: 80,889 icon: 'shangpinshuxing',890 isSystem: 1,891 metaKey: '',892 subId: 'PC',893 pubts: '2019-07-02 19:34:23',894 authLevel: 1,895 children: [{896 level: 1,897 tenant: 1292161350684928,898 isShopRelated: false,899 name: '商品属性',900 code: 'pc_productpro',901 isDeleted: 0,902 isEnd: true,903 authCode: 'pc_productprolist',904 terminalType: '1',905 parentCode: 'pc_productproperty',906 orderNum: 42,907 icon: 'jichushezhi',908 isSystem: 1,909 metaKey: 'pc_productprolist',910 subId: 'pc',911 pubts: '2019-07-02 19:34:23',912 disabled: false,913 authLevel: 1,914 metaType: 'voucherList',915 viewType: 'meta'916 }, {917 level: 1,918 tenant: 1292161350684928,919 isShopRelated: false,920 name: 'SKU属性',921 code: 'pc_productskupro',922 isDeleted: 0,923 isEnd: true,924 authCode: 'pc_productskuprolist',925 terminalType: '1',926 parentCode: 'pc_productproperty',927 orderNum: 43,928 icon: 'jichushezhi',929 isSystem: 1,930 metaKey: 'pc_productskuprolist',931 subId: 'pc',932 pubts: '2019-07-02 19:34:23',933 disabled: false,934 authLevel: 1,935 metaType: 'voucherList',936 viewType: 'meta'937 }, {938 level: 1,939 tenant: 1292161350684928,940 isShopRelated: false,941 name: '商品订单属性',942 code: 'pc_productorderpro',943 isDeleted: 0,944 isEnd: true,945 authCode: 'pc_productorderprolist',946 terminalType: '1',947 parentCode: 'pc_productproperty',948 orderNum: 44,949 icon: 'jichushezhi',950 isSystem: 1,951 metaKey: 'pc_productorderprolist',952 subId: 'pc',953 pubts: '2019-07-02 19:34:23',954 disabled: false,955 authLevel: 1,956 metaType: 'voucherList',957 viewType: 'meta'958 }],959 metaType: '',960 viewType: ''961 }]962}, {963 level: 0,964 tenant: 1292161350684928,965 isShopRelated: false,966 name: '业务档案',967 code: 'aa_businessarchives',968 isDeleted: 0,969 isEnd: false,970 terminalType: '1',971 orderNum: 50,972 icon: 'huaban1',973 isSystem: 1,974 subId: 'AA',975 pubts: '2019-07-02 19:34:23',976 authLevel: 5,977 children: [{978 level: 1,979 tenant: 1292161350684928,980 isShopRelated: false,981 name: '资金收付',982 code: 'aa_payOfCapital',983 isDeleted: 0,984 isEnd: false,985 authCode: '',986 terminalType: '1',987 parentCode: 'aa_businessarchives',988 orderNum: 10,989 isSystem: 1,990 subId: 'AA',991 pubts: '2019-07-02 19:34:23',992 authLevel: 5,993 children: [{994 level: 2,995 tenant: 1292161350684928,996 isShopRelated: false,997 name: '结算方式',998 code: 'aa_settlemethod',999 isDeleted: 0,1000 isEnd: true,1001 authCode: '',1002 terminalType: '1',1003 parentCode: 'aa_payOfCapital',1004 orderNum: 10,1005 isSystem: 1,1006 metaKey: 'aa_settlemethodlist',1007 subId: 'AA',1008 pubts: '2019-07-02 19:34:23',1009 disabled: false,1010 authLevel: 1,1011 metaType: 'TreeArchive',1012 viewType: 'meta'1013 }, {1014 level: 2,1015 tenant: 1292161350684928,1016 isShopRelated: false,1017 name: '立账规则',1018 code: 'aa_paymentrotocol',1019 isDeleted: 0,1020 isEnd: true,1021 authCode: '',1022 terminalType: '1',1023 parentCode: 'aa_payOfCapital',1024 orderNum: 20,1025 isSystem: 1,1026 metaKey: 'aa_paymentrotocollist',1027 subId: 'AA',1028 pubts: '2019-07-02 19:34:23',1029 disabled: false,1030 authLevel: 1,1031 metaType: 'ArchiveList',1032 viewType: 'meta'1033 }],1034 metaType: 'voucherlist'1035 }, {1036 level: 1,1037 tenant: 1292161350684928,1038 isShopRelated: false,1039 name: '发运',1040 code: 'aa_sendtrans',1041 isDeleted: 0,1042 isEnd: false,1043 authCode: '',1044 terminalType: '1',1045 parentCode: 'aa_businessarchives',1046 orderNum: 20,1047 isSystem: 1,1048 subId: 'AA',1049 pubts: '2019-07-02 19:34:23',1050 authLevel: 5,1051 children: [{1052 level: 0,1053 tenant: 1292161350684928,1054 isShopRelated: false,1055 name: '发运方式',1056 code: 'aa_sendtranswaylist',1057 isDeleted: 0,1058 isEnd: true,1059 authCode: 'aa_sendtranswaylistlist',1060 terminalType: '1',1061 parentCode: 'aa_sendtrans',1062 orderNum: 10,1063 icon: 'dutygrade',1064 isSystem: 1,1065 metaKey: 'aa_sendtranswaylist',1066 subId: 'AA',1067 pubts: '2019-07-02 19:34:23',1068 disabled: false,1069 authLevel: 1,1070 metaType: 'voucherList',1071 viewType: 'meta'1072 }, {1073 level: 0,1074 tenant: 1292161350684928,1075 isShopRelated: false,1076 name: '物流公司',1077 code: 'aa_deliverycorplist',1078 isDeleted: 0,1079 isEnd: true,1080 authCode: 'aa_deliverycorplistlist',1081 terminalType: '1',1082 parentCode: 'aa_sendtrans',1083 orderNum: 50,1084 icon: 'delivery',1085 isSystem: 1,1086 metaKey: 'aa_deliverycorplist',1087 subId: 'PC',1088 pubts: '2019-07-02 19:34:23',1089 disabled: false,1090 authLevel: 1,1091 metaType: 'voucherList',1092 viewType: 'meta'1093 }, {1094 level: 2,1095 tenant: 1292161350684928,1096 isShopRelated: false,1097 name: '原因码',1098 code: 'aa_reasonlist',1099 isDeleted: 0,1100 isEnd: true,1101 authCode: 'aa_reasonlist',1102 terminalType: '1',1103 parentCode: 'aa_sendtrans',1104 orderNum: 300,1105 isSystem: 1,1106 metaKey: 'aa_reasonlist',1107 subId: 'AA',1108 pubts: '2019-07-02 19:34:23',1109 disabled: false,1110 authLevel: 3,1111 metaType: 'ArchiveList',1112 viewType: 'meta'1113 }, {1114 level: 1,1115 tenant: 1292161350684928,1116 isShopRelated: false,1117 name: '地址档案',1118 code: 'pc_addressarchiveslist',1119 isDeleted: 0,1120 isEnd: true,1121 authCode: 'pc_addressarchiveslist',1122 terminalType: '1',1123 parentCode: 'aa_sendtrans',1124 orderNum: 300,1125 isSystem: 1,1126 metaKey: 'pc_addressarchiveslist',1127 subId: 'AA',1128 pubts: '2019-07-02 19:34:23',1129 disabled: false,1130 authLevel: 3,1131 metaType: 'TreeList',1132 viewType: 'meta'1133 }],1134 metaType: 'voucherlist'1135 }]1136}, {1137 level: 0,1138 tenant: 1292161350684928,1139 isShopRelated: false,1140 name: '系统设置',1141 code: 'pc_systemsetting',1142 isDeleted: 0,1143 isEnd: false,1144 terminalType: '1',1145 orderNum: 60,1146 icon: 'xitongshezhi',1147 isSystem: 1,1148 subId: 'PC',1149 pubts: '2019-07-02 19:34:23',1150 authLevel: 1,1151 children: [{1152 level: 1,1153 tenant: 1292161350684928,1154 isShopRelated: false,1155 name: '编码规则',1156 code: 'pc_syssetting_billcode',1157 isDeleted: 0,1158 isEnd: true,1159 authCode: '',1160 terminalType: '1',1161 parentCode: 'pc_systemsetting',1162 orderNum: 10,1163 isSystem: 1,1164 subId: 'PC',1165 pubts: '2019-07-02 19:34:23',1166 disabled: true,1167 authLevel: 1,1168 metaType: 'voucherlist'1169 }, {1170 level: 1,1171 depends: 'isOpenTenant',1172 tenant: 1292161350684928,1173 isShopRelated: false,1174 name: '设置',1175 code: 'pc_syssetting_setting',1176 isDeleted: 0,1177 isEnd: true,1178 authCode: '',1179 terminalType: '1',1180 parentCode: 'pc_systemsetting',1181 orderNum: 20,1182 isSystem: 1,1183 subId: 'PC',1184 pubts: '2019-07-02 19:34:23',1185 authLevel: 1,1186 children: [{1187 level: 3,1188 tenant: 1292161350684928,1189 isShopRelated: false,1190 name: '菜单管理',1191 code: 'AABS0340',1192 isDeleted: 0,1193 isEnd: true,1194 authCode: 'aa_menutreequerytree',1195 terminalType: '1',1196 parentCode: 'pc_syssetting_setting',1197 orderNum: 10,1198 isSystem: 1,1199 metaKey: 'aa_menu',1200 subId: 'AA',1201 pubts: '2019-07-02 19:34:23',1202 disabled: false,1203 authLevel: 1,1204 metaType: 'TreeArchive',1205 viewType: 'meta'1206 }, {1207 level: 2,1208 tenant: 1292161350684928,1209 isShopRelated: false,1210 name: '自定义项',1211 code: 'pc_syssetting_definesetting',1212 isDeleted: 0,1213 menuUrl: 'user-define-archives',1214 isEnd: true,1215 authCode: 'userdefine',1216 terminalType: '1',1217 parentCode: 'pc_syssetting_setting',1218 orderNum: 90,1219 isSystem: 1,1220 subId: 'PC',1221 pubts: '2019-07-02 19:34:23',1222 disabled: false,1223 authLevel: 1,1224 viewType: 'platform'1225 }],1226 metaType: 'voucherlist'1227 }, {1228 level: 1,1229 depends: 'isOpenTenant',1230 tenant: 1292161350684928,1231 isShopRelated: false,1232 name: '模板',1233 code: 'pc_syssetting_templet',1234 isDeleted: 0,1235 isEnd: true,1236 authCode: '',1237 terminalType: '1',1238 parentCode: 'pc_systemsetting',1239 orderNum: 30,1240 isSystem: 1,1241 subId: 'PC',1242 pubts: '2019-07-02 19:34:23',1243 authLevel: 1,1244 children: [{1245 level: 2,1246 tenant: 1292161350684928,1247 isShopRelated: false,1248 name: '表单模版设计',1249 code: 'AABS0309',1250 isDeleted: 0,1251 menuUrl: 'bill-design',1252 isEnd: true,1253 authCode: 'bill_design',1254 terminalType: '1',1255 parentCode: 'pc_syssetting_templet',1256 orderNum: 20,1257 isSystem: 1,1258 subId: 'AA',1259 pubts: '2019-07-02 19:34:23',1260 disabled: false,1261 authLevel: 1,1262 viewType: 'platform'1263 }],1264 metaType: 'voucherlist'1265 }]...

Full Screen

Full Screen

rule.js

Source:rule.js Github

copy

Full Screen

1const rgxRule = {2 //done3 title: {4 type: "title",5 rgx: /^#{1,6} +$/,6 html: '<h>'7 },8 // 一个paragraph至少需要两个及以上个linebreak9 paragraph: {10 type: "paragraph",11 rgx: /^((\r\n){2,}|(\n){2,}|(\r){2,})$/,12 html: '<p>'13 },14 //done15 linebreak: {16 type: 'linebreak',17 rgx: /^(\r\n|\n|\r)$/,18 html: '<none>'19 },20 //done21 newline: {22 type: 'newline',23 rgx: /^ {2,}((\r\n)|(\n)|(\r))$/,24 html: '<br>'25 },26 //done27 bold: {28 type: 'bold',29 rgx: /^(\*\*|__)$/,30 html: '<strong>'31 },32 //done33 italic: {34 type: 'italic',35 rgx: /^(\*|_)$/,36 html: '<em>'37 },38 //done39 blockquote: {40 type: 'blockquote',41 rgx: /^>+ +$/,42 html: '<blockquote>'43 },44 //done45 orderlist: {46 type: 'orderlist',47 rgx: /^[0-9]\. +$/,48 html: '<ol>'49 },50 //done51 unorderlist: {52 type: 'unorderlist',53 rgx: /^[-\*\+] +$/,54 html: '<ul>'55 },56 //done57 sublist: {58 type: 'sublist',59 rgx: /^( {4}|\t)$/,60 html: '<any>'61 },62 //done63 horizontal: {64 type: 'horizontal',65 rgx: /^[\*-_]{3,}((\r\n)|(\n)|(\r))$/,66 html: '<hr>'67 },68 //done69 code: {70 type: 'code',71 rgx: /$`^/,72 html: '<code>'73 },74 //done75 codeblock: {76 type: 'codeblock',77 rgx: /^```$/,78 html: '<pre>'79 },80 link: {81 type: 'link',82 rgx: /^([a-zA-Z]+:)?(\/\/|\\\\)?([\w-]+(\.[\w-]+)+)?((\.|\.\.)?((\\|\/)[^\?\*\\\/\<\>\:"\|\n\r]+)+)(\\|\/)?([^\?\*\\\/\<\>\:"\|\n\r]+(\.[a-zA-Z])?)?(\?([\w-]+=.+)(&[\w-]+=.+)*)?(#.+)?$/,83 rgxP: /a/,84 html: '<none>'85 },86 email: {87 type: 'email',88 rgx: /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/,89 html: '<none>'90 },91 //done92 escape: {93 type: 'escape',94 rgx: /^\\[\\`\*_\{\}\[\]\(\)#\+-\.!\|]$/,95 html: '<none>'96 },97 //done98 imgtag: {99 type: 'imgtag',100 rgx: /^\!$/,101 html: '<img>'102 },103 //done104 tipbegin: {105 type: 'tipbegin',106 rgx: /^\[$/,107 html: '<none>'108 },109 //done110 tipend: {111 type: 'tipend',112 rgx: /^\]$/,113 html: '<none>'114 },115 //done116 linkbegin: {117 type: 'linkbegin',118 rgx: /^\($/,119 html: '<none>'120 },121 //done122 linkend: {123 type: 'linkend',124 rgx: /^\)$/,125 html: '<none>'126 },127 //done128 urlbegin: {129 type: 'urlbegin',130 rgx: /^<$/,131 html: '<none>'132 },133 //done134 urlend: {135 type: 'urlend',136 rgx: /^>$/,137 html: '<none>'138 }139}140//isEnd=false时默认belongto="child"141//isEnd=true时默认belongto="none"142//required默认为true143const grammarRule = {144 article: {145 funcName: "article",146 nodeStruct: {147 nodeName: "article",148 attributes: {149 class: "md-article"150 },151 children: []152 },153 grammarStruct: [154 "and",//操作155 [156 "loop",157 [158 "or",159 { isEnd: false, type: "h"},160 { isEnd: false, type: "p" },161 { isEnd: false, type: "list" },162 { isEnd: false, type: "blockcode" },163 { isEnd: false, type: "blockquote" },164 { isEnd: false, type: "figture" },165 { isEnd: false, type: "horizontal" },166 { isEnd: false, type: "html" },167 { isEnd: true, type: "linebreak" }168 ]169 ],170 { isEnd: true, type: "endfile" }171 ]172 },173 h: {174 funcName: 'h',175 nodeStruct: {176 nodeName: "h$",//上下文匹配177 attributes: {178 class: "md-h$",179 nodeValue: ""180 }181 },182 grammarStruct: [183 "and",184 [185 "or",186 {isEnd:true,type:"h1",$:"1"},187 {isEnd:true,type:"h2",$:"2"},188 {isEnd:true,type:"h3",$:"3"},189 {isEnd:true,type:"h4",$:"4"},190 {isEnd:true,type:"h5",$:"5"},191 {isEnd:true,type:"h6",$:"6"}192 ],193 {isEnd:true,type:"text",belongto:"nodeValue"},194 {isEnd:true,type:"linebreak"}195 ]196 },197 p:{198 funcName : 'p',199 nodeStruct : {200 nodeName:'p',201 attributes:{202 class:'md-p',203 nodeValue:null 204 },205 child:null206 },207 grammarStruct : [208 "and",209 [210 "loop",211 [212 "and",213 [214 "loop",215 {isEnd:false,type:"pitem"}216 ],217 {isEnd:true,type:"linebreak"}218 ]219 ],220 {isEnd:true,type:"linebreak"}221 ]222 },223 pitem : {224 funcName : 'pitem',225 nodeStruct : this.p.nodeStruct,226 grammarStruct : [227 "or",228 {isEnd:false,type:"content"},229 {isEnd:false,type:"inlinecode"},230 {isEnd:false,type:"link"}231 ]232 },233 content : {234 funcName : 'content',235 nodeStruct : this.pitem.nodeStruct,236 grammarStruct : [237 "or",238 {isEnd:true,type:"text"}, //???239 {isEnd:false,type:"bold"},240 {isEnd:false,type:"italic"},241 {isEnd:false,type:"bolditalic"}242 ]243 },244 bold : {245 funcName : 'bold',246 nodeStruct : {247 nodeName:"strong",248 attributes:{249 class:'md-strong',250 nodeValue : null251 },252 child:null253 },254 grammarStruct : [255 "and",256 {isEnd:true,type:" strong"},257 {isEnd:true,type:"text"},258 {isEnd:true,type:"strong"}259 ]260 },261 italic : {262 funcName : 'italic',263 nodeStruct : {264 nodeName:'em',265 attributes:{266 class:'md-em',267 nodeValue:null268 },269 child:null270 },271 grammarStruct : [272 "and",273 {isEnd:true,type:"em"},274 {isEnd:true,type:"text"},275 {isEnd:true,type:"em"}276 ]277 },278 bolditalic : {279 funcName : 'bolditalic',280 nodeStruct : {281 nodeName:'strong',282 attributes:{283 },284 child : {285 nodeName:'em',286 attributes:{287 },288 child:null289 }290 },291 grammarStruct : [292 "and",293 {isEnd:true,type:"emstrong"},294 {isEnd:true,type:"text"},295 {isEnd:true,type:"emstrong"}296 ]297 },298 inlinecode : {299 funcName : 'inlinecode',300 nodeStruct : {301 nodeName:"code",302 attributes:{303 },304 child : null305 },306 grammarStruct : [307 "and",308 {isEnd:true,type:"code"},309 {isEnd:true,type:"text"},310 {isEnd:true,type:"code"}311 ]312 },313 link : {314 funcName : 'link',315 nodeStruct : this.pitem.nodeStruct,316 grammarStruct : [317 "or",318 {isEnd:false,type:"tiplink"},319 {isEnd:false,type:"nottiplink"}320 ]321 },322 tiplink : {323 funcName : 'tiplink',324 nodeStruct : {325 },326 grammarStruct : [327 "and",328 {isEnd:true,type:"tipbegin"},329 {isEnd:false,type:"content",required:false},330 {isEnd:true,type:"tipend"},331 {isEnd:true,type:"linkbegin"},332 {isEnd:true,type:"text"},333 {isEnd:true,type:"linkend"}334 ]335 },336 nottiplink : {337 funcName : 'nottiplink',338 nodeStruct : {339 },340 grammarStruct : [341 "and",342 {isEnd:true,type:"urlbegin"},343 {isEnd:true,type:"text"},344 {isEnd:true,type:"urlend"}345 ]346 },347 list : {348 funcName : 'list',349 nodeStruct : {350 },351 grammarStruct : [352 "and",353 [354 "loop",355 [356 "or",357 {isEnd:false,type:"ulistitem"},358 {isEnd:false,type:"olistitem"},359 {isEnd:false,type:"slist"},360 ]361 ],362 {isEnd:true,type:'linebreak'}363 ]364 },365 ulistitem : {366 funcName : 'ulistitem',367 nodeStruct : {368 },369 grammarStruct : [370 "and",371 {isEnd:true,type:"ul"},372 {isEnd:false,type:"content"},373 {isEnd:true,type:"linebreak"}374 ]375 },376 olistitem : {377 funcName : 'olistitem',378 nodeStruct : {379 },380 grammarStruct : [381 "and",382 {isEnd:true,type:"ol"},383 {isEnd:false,type:"content"},384 {isEnd:true,type:"linebreak"}385 ]386 },387 slist : {388 funcName : 'slist',389 nodeStruct : {390 },391 grammarStruct : [392 "and",393 [394 "loop",395 {isEnd:false,type:"slistitem"}396 ],397 {isEnd:true,type:"linebreak"}398 ]399 },400 slistitem : {401 funcName : 'slistitem',402 nodeStruct : {403 },404 grammarStruct : [405 "and",406 {isEnd:true,type:'sublist'},407 [408 "or",409 {isEnd:false,type:"ulistitem"},410 {isEnd:false,type:"olistitem"},411 {isEnd:false,type:"blockquote"},412 {isEnd:false,type:"blockcode"},413 {isEnd:false,type:"figure"},414 {isEnd:false,type:"p"}415 ]416 ]417 },418 blockcode : {419 funcName : 'blockcode',420 nodeStruct : {421 },422 grammarStruct : [423 ]424 },425 blockquote : {426 funcName : 'blockquote',427 nodeStruct : {428 },429 grammarStruct : [430 "and",431 [432 "loop",433 {isEnd:false,type:"bqitem"}434 ],435 {isEnd:true,type:"linebreak"}436 ]437 },438 bqitem : {439 funcName : 'bqitem',440 nodeStruct : {441 },442 grammarStruct : [443 "and",444 {isEnd:true,type:"bqtag"},445 [446 "or",447 {isEnd:false,type:"pitem"},448 {isEnd:false,type:"list"}449 ],450 {isEnd:true,type:"linebreak"}451 ]452 },453 figure : {454 funcName : 'figure',455 nodeStruct : {456 nodeName : 'figure',457 attributes:{458 class:'md-figure',459 },460 children:[461 {462 nodeName:"img",463 attributes:{464 class:"md-img"465 }466 },467 {468 nodeName:'figcaption',469 attributes:{470 class:'md-figcaption'471 }472 }473 ]474 },475 grammarStruct : [476 "and",477 {isEnd:true,type:"imgtag"},478 {isEnd:true,type:"tipbegin"},479 {isEnd:false,type:"content",required:false},480 {isEnd:true,type:"tipend"},481 {isEnd:true,type:"linkbegin"},482 {isEnd:true,type:"text"},483 {isEnd:true,type:"linkend"},484 {isEnd:true,type:"linebreak"}485 ]486 },487 horizontal : {488 funcName : 'horizontal',489 nodeStruct : {490 nodeName:"hr",491 attributes:{492 class:'md-hr',493 }494 },495 grammarStruct : [496 "and",497 [498 "or",499 {isEnd:true,type:"hr"},500 {isEnd:true,type:"emstrong"}501 ],502 {isEnd:true,type:"linebreak"}503 ]504 },505 html : {506 funcName : 'html',507 nodeStruct : {508 },509 grammarStruct : [510 ]511 }512}513function test(obj, str) {514 console.log(obj.type, obj.rgx.test(str), str)515}516// 517test(rule.title, "")518test(rule.title, "# ")519test(rule.title, "% ")520test(rule.title, "######### ")521//522test(rule.paragraph, "\r\n")523test(rule.paragraph, "\n")524test(rule.paragraph, "\n\r")525test(rule.paragraph, "\r")526test(rule.paragraph, "\r\n\r\n")527//528test(rule.line, " \r\n")529test(rule.line, " \r\n")530test(rule.line, " \n")531test(rule.line, " \n\r")532//533test(rule.bold, "**")534test(rule.bold, "__")535test(rule.bold, "___")536test(rule.bold, "***")537//538test(rule.blockquote, "> ")539test(rule.blockquote, ">> ")540test(rule.blockquote, ">>>")541test(rule.blockquote, ">>> ")542//543test(rule.orderlist, "1. ")544test(rule.orderlist, "1. ")545test(rule.orderlist, "#. ")546test(rule.orderlist, "0.")547//548test(rule.unorderlist, "# ")549test(rule.unorderlist, "- ")550test(rule.unorderlist, "+ ")551test(rule.unorderlist, "2 ")552test(rule.unorderlist, "* ")553//554test(rule.sublist, " ")555test(rule.sublist, " ")556test(rule.sublist, " ")557//558test(rule.horizontal, "***\r\n")559test(rule.horizontal, "---\r\n")560test(rule.horizontal, "___\r\n")561test(rule.horizontal, "__\r\n")562test(rule.horizontal, "*****\n")563test(rule.horizontal, "*****\n\r")564//565test(rule.escape, "\\\\")566//567test(rule.link, "https://www.jb51.net/tools/sdfdf12122")568test(rule.link, "/tools/")569test(rule.link, "/assets/images/tux.png")570test(rule.link, "https://blog.csdn.net/AngelLover2017/article/details/104614774")571test(rule.link, "https://img-blog.csdnimg.cn/20200321181137847.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FuZ2VsTG92ZXIyMDE3,size_16,color_FFFFFF,t_70#pic_center")572test(rule.link, "https://www.markdownguide.org/basic-syntax/#code")573test(rule.link, "D:\\毕业设计\\论文相关文档\\软件学院关于开展2020届本科毕业设计(论文)工作的通知\\2020届毕业设计论文附件模板\\2020(届毕业)设计论文附件模板")574test(rule.link, "D:\\毕业设计\\论文相关文档\\软件学院关于开展2020届本科毕业设计(论文)工作的通知\\2020届毕业设计论文附件模板\\2020(届毕业)设计论文附件模板\\")575test(rule.link, "\\毕业设计\\论文相关文档\\软件学院关于开展2020届本科毕业设计(论文)工作的通知\\2020届毕业设计(论文)附件模板\\2020届毕业设计(论文)附件模板")576test(rule.link, "\\毕业设计\\论文相关文档\\软件学院关于开展2020届本科毕业设计(论文)工作的通知\\2020届毕业设计(论文)附件模板\\2020届毕业设计(论文)附件模板\\")...

Full Screen

Full Screen

Home.js

Source:Home.js Github

copy

Full Screen

1import React, { Fragment } from "react";2import {3 FixedLayout,4 Panel,5 PanelHeader,6 Title,7 Div,8 Text,9 Button,10 PanelHeaderButton,11 Placeholder,12} from "@vkontakte/vkui";13import {14 SwitchTransition,15 CSSTransition,16 TransitionGroup,17} from "react-transition-group";18import Icon56RecentOutline from "@vkontakte/icons/dist/56/recent_outline";19import "./home.css";20import Icon28PrivacyOutline from "@vkontakte/icons/dist/28/privacy_outline";21import { connect } from "react-redux";22import {23 nextFact,24 welcomeComplete,25 OpenMenu,26 OpenModal,27} from "../store/actions";28import Icon28MoreVertical from "@vkontakte/icons/dist/28/more_vertical";29const Home = ({30 id,31 currentFact,32 currentIndex,33 nextFact,34 welcomeCompleted,35 welcomeComplete,36 isEnd,37 OpenMenu,38 menuOpen,39 OpenModal,40 notification,41}) => {42 const clickHandler = () => {43 if (!isEnd) {44 if (welcomeCompleted) {45 nextFact();46 } else {47 welcomeComplete();48 }49 }50 };51 return (52 <Panel id={id} className="home_panel" centered>53 <PanelHeader54 visor={false}55 transparent56 separator={false}57 left={58 menuOpen || isEnd || !welcomeCompleted ? null : (59 <PanelHeaderButton onClick={OpenMenu}>60 <Icon28MoreVertical />61 </PanelHeaderButton>62 )63 }64 >65 facts66 </PanelHeader>67 <div className="content">68 <TransitionGroup>69 <CSSTransition70 key={isEnd ? "isend" : welcomeCompleted ? currentIndex : "welcome"}71 timeout={300}72 classNames="slide"73 >74 {currentFact && !isEnd && welcomeCompleted ? (75 <div76 key={77 isEnd ? "isend" : welcomeCompleted ? currentIndex : "welcome"78 }79 className="fact_background"80 style={{ backgroundImage: `url(${currentFact.image})` }}81 />82 ) : (83 <div84 className="fact_background"85 style={{ backgroundColor: "#4e7fff" }}86 />87 )}88 </CSSTransition>89 </TransitionGroup>90 <SwitchTransition mode="out-in">91 <CSSTransition92 key={isEnd ? "isend" : welcomeCompleted ? currentIndex : "welcome"}93 addEndListener={(node, done) => {94 node.addEventListener("transitionend", done, false);95 }}96 classNames="fade"97 >98 {isEnd ? (99 <div100 style={{101 margin: "40px",102 display: "flex",103 alignItems: "center",104 flexDirection: "column",105 zIndex: 9,106 }}107 key={108 isEnd ? "isend" : welcomeCompleted ? currentIndex : "welcome"109 }110 >111 <Placeholder112 style={{ zIndex: 9 }}113 icon={<Icon56RecentOutline />}114 header=" На этом все"115 action={116 <Button117 mode="overlay_primary"118 size="xl"119 onClick={() => OpenModal("add")}120 stretched121 style={{ zIndex: 9 }}122 >123 Предложить факт124 </Button>125 }126 >127 Совсем скоро мы добавим новый факты128 </Placeholder>129 {/* <Div style={{ width: "100%" }}>130 <Button size="xl" mode="overlay_secondary" stretched>131 Начать заново132 </Button>133 </Div> */}134 </div>135 ) : (136 <div137 style={{ margin: "40px" }}138 key={139 isEnd ? "isend" : welcomeCompleted ? currentIndex : "welcome"140 }141 >142 <Title level="1" weight="medium">143 {currentFact && welcomeCompleted144 ? currentFact.text145 : "Давайте узнаем самые паразительные факты со всей вселенной"}146 </Title>147 </div>148 )}149 </CSSTransition>150 </SwitchTransition>151 {!isEnd && (152 <FixedLayout vertical="bottom">153 <Div>154 <div className="bottom-helper">155 <Fragment>156 <div className="bottom-helper-icon">157 <Icon28PrivacyOutline fill="#fff" />158 </div>159 <Text weight="regular">160 Нажмите на экран, чтобы161 {welcomeCompleted ? " увидит новый факт" : " продолжить"}162 </Text>163 </Fragment>164 </div>165 </Div>166 </FixedLayout>167 )}168 </div>169 {notification}170 <div className="clickable_area" onClick={clickHandler}></div>171 </Panel>172 );173};174const mapStatetoProps = (state) => ({175 currentFact: state.fact.facts[state.fact.currentIndex],176 currentIndex: state.fact.currentIndex,177 welcomeCompleted: state.app.welcomeCompleted,178 isEnd: state.fact.isEnd,179 menuOpen: state.app.menuOpen,180 notification: state.app.notification,181});182const mapDispatchtoProps = {183 nextFact,184 welcomeComplete,185 OpenMenu,186 OpenModal,187};...

Full Screen

Full Screen

12.实现一个字典树.js

Source:12.实现一个字典树.js Github

copy

Full Screen

1/**2* 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。3你可以假设所有的输入都是由小写字母 a-z 构成的。4保证所有输入均为非空字符串。5*/6class TrieNode {7 constructor(val, isEnd) {8 this.val = val9 this.isEnd = isEnd10 this.children = []11 }12}13class Trie {14 constructor() {15 this.root = new TrieNode(null, false)16 }17 insert(word) {18 let preCNode = this.root19 for (let i = 0; i < word.length; i++) {20 // 如果上一个字符的children中已经存在该字符,则不做操作21 const findChar = preCNode.children.find(child => child.val === word[i])22 if (!findChar) {23 // 如果上一个节点中没有该字符,就新建字符并push到上一个节点的children中24 // 拿到的每个字符依次生成node放到root下面25 let cNode = new TrieNode(word[i], i === word.length - 1)26 preCNode.children.push(cNode)27 preCNode = cNode28 } else {29 // 上一个节点的children中已经存在该字符30 // 如果是最后一个节点了,让该字符的isEnd变为true31 if(i === word.length - 1){32 findChar.isEnd = true33 }34 // 则拿到该字符继续其他操作35 preCNode = findChar36 }37 }38 }39 search(word) {40 let len = word.length41 let preCNode = this.root42 for (let i = 0; i < len; i++) {43 const findChar = preCNode.children.find(child => child.val === word[i])44 if (preCNode.children && findChar) {45 if (i === len - 1) {46 // 最后一个字符47 return findChar.isEnd === true48 }49 preCNode = findChar50 } else {51 return false52 }53 }54 }55 startsWith(word) {56 let len = word.length57 let preCNode = this.root58 for (let i = 0; i < len; i++) {59 const findChar = preCNode.children.find(child => child.val === word[i])60 if (preCNode.children && findChar) {61 preCNode = findChar62 } else {63 return false64 }65 }66 return true67 }68}69/**70 * 思考:树的基本结构是71 每个节点有三个属性:val,children,isEnd72 */73var trieTest = {74 val: null,75 isEnd: false,76 children: [77 {78 val: 'b', isEnd: false, children: [79 { val: 'y', isEnd: true, children: null }80 ]81 },82 {83 val: 'h', isEnd: false, children: [84 {85 val: 'e', isEnd: false, children: [86 {87 val: 'l', isEnd: false, children: [88 {89 val: 'l', isEnd: false, children: [90 { val: 'o', isEnd: true, children: null }91 ]92 }93 ]94 },95 {96 val: 'a', isEnd: false, children: [97 { val: 't', isEnd: true, children: null }98 ]99 }100 ]101 }102 ]103 },104 {105 val: 't', isEnd: false, children: [106 {107 val: 'h', isEnd: false, children: [108 { val: 'e', isEnd: true, children: null }109 ]110 }111 ]112 }113 ]114}115// 测试用例116let trie = new Trie()117trie.insert("apple");118console.log(trie.search("apple")); // 返回 true119console.log(trie.search("app")); // 返回 false120console.log(trie.startsWith("app")); // 返回 true121trie.insert("app");122console.log(trie.search("app")); // 返回 true...

Full Screen

Full Screen

dirTree.js

Source:dirTree.js Github

copy

Full Screen

1var fs = require('fs');2function needIgnore(name, ignoreList) {3 var result = false;4 ignoreList.forEach(function(regExp) {5 if (regExp.test(name)) result = true;6 });7 return result;8}9function dirDFS(path, dirName, ignoreList) {10 var rootStat = fs.statSync(path);11 if (!rootStat.isDirectory()) {12 console.log('"' + path + '" is not directory');13 return null;14 }15 var result = new Object();16 result['name'] = dirName;17 result['type'] = 'dir';18 result['childD'] = [];19 result['childF'] = [];20 files = fs.readdirSync(path);21 files.forEach(function(fileName) {22 var stat = fs.statSync(path + '/' + fileName);23 if (needIgnore(fileName, ignoreList)) {24 } else if (stat.isDirectory()) {25 var dirObj = dirDFS(path + '/' + fileName, fileName, ignoreList);26 result['childD'].push(dirObj);27 } else {28 var fileObj = new Object();29 fileObj['name'] = fileName;30 fileObj['type'] = 'file';31 result['childF'].push(fileObj);32 }33 });34 return result;35}36function stringifyHelper(type, obj, depth, isEnd) {37 var tmpStr = '';38 if (obj['type'] == 'dir') {39 if (type != 'simple') {40 for (let i = 1; i <= depth - 1; i++) {41 tmpStr += ' ' + (isEnd[i] ? ' ' : '│');42 }43 tmpStr += ' │\r\n';44 }45 for (let i = 1; i <= depth - 1; i++) {46 tmpStr += ' ' + (isEnd[i] ? ' ' : '│');47 }48 tmpStr += ' ' + (isEnd[depth] ? '└─' : '├─');49 tmpStr += obj['name'] + '\r\n';50 var arrLength = obj['childD'].length + obj['childF'].length;51 for (let i = 0; i < obj['childD'].length; i++) {52 isEnd[depth + 1] = --arrLength ? false : true;53 tmpStr += stringifyHelper(type, obj['childD'][i], depth + 1, isEnd);54 }55 for (let i = 0; i < obj['childF'].length; i++) {56 isEnd[depth + 1] = --arrLength ? false : true;57 tmpStr += stringifyHelper(type, obj['childF'][i], depth + 1, isEnd);58 }59 } else {60 if (type != 'simple') {61 for (let i = 1; i <= depth - 1; i++) {62 tmpStr += ' ' + (isEnd[i] ? ' ' : '│');63 }64 tmpStr += ' │\r\n';65 }66 for (let i = 1; i <= depth - 1; i++) {67 tmpStr += ' ' + (isEnd[i] ? ' ' : '│');68 }69 tmpStr += ' ' + (isEnd[depth] ? '└─' : '├─');70 tmpStr += obj['name'] + '\r\n';71 }72 return tmpStr;73}74function stringifyDirTree(dirTree, type) {75 var str = '';76 var depth = 0;77 var arrLength = dirTree['childD'].length + dirTree['childF'].length;78 var isEnd = [true];79 str += dirTree['name'] + '\r\n';80 for (let i = 0; i < dirTree['childD'].length; i++) {81 isEnd[depth + 1] = --arrLength ? false : true;82 str += stringifyHelper(type, dirTree['childD'][i], depth + 1, isEnd);83 }84 for (let i = 0; i < dirTree['childF'].length; i++) {85 isEnd[depth + 1] = --arrLength ? false : true;86 str += stringifyHelper(type, dirTree['childF'][i], depth + 1, isEnd);87 }88 return str;89}90module.exports = {91 dirDFS: dirDFS,92 stringifyDirTree: stringifyDirTree...

Full Screen

Full Screen

betManager.js

Source:betManager.js Github

copy

Full Screen

1import store from '../store'2import client from '../main.js'3import {endBets} from '../App.vue'4let exports = {}5var isEnd = true;6exports.endMatch = (score, MVP) => {7 let reward = {}8 for (const each of store.state.bets) {9 let gain = 010 let getMVP = false;11 let getScore = false;12 if(each.score == score){13 getScore = true;14 }15 if(each.MVP.toLowerCase() == MVP.toLowerCase()){16 getMVP = true17 }18 if(getMVP){19 gain += 2500;20 }21 if(getScore){22 gain += 2500;23 }24 //console.log(each.pseudo + " gain " + gain);25 if(gain > 0){26 reward[each.pseudo] = gain27 }28 }29 isEnd = true;30 exports.isEnd = isEnd;31 client.sendReward(reward)32 store.commit("cleanBet")33}34exports.StopCountdown = () => {35 isEnd = true;36 exports.isEnd = isEnd;37 endBets();38}39function countdown(timer){40 if(!isEnd){41 if(timer > 0){42 timer--;43 document.getElementById('countdown').innerHTML = Math.floor(timer / 60) + ':' + (timer % 60)44 setTimeout(() => {45 countdown(timer)46 }, 1000);47 }48 else if(timer == 0){49 isEnd = true;50 exports.isEnd = isEnd;51 endBets();52 document.getElementById('countdown').innerHTML = "Paris fermé";53 document.getElementById('StateIndicator').style.backgroundColor = "#FF0000"54 }55 }56 else{57 document.getElementById('countdown').innerHTML = "Paris fermé";58 document.getElementById('StateIndicator').style.backgroundColor = "#FF0000"59 } 60}61exports.StartCountdown = (timer) => {62 isEnd = false63 exports.isEnd = isEnd;64 document.getElementById('StateIndicator').style.backgroundColor = "#00FF00"65 countdown(timer)66}67exports.isEnd = isEnd;...

Full Screen

Full Screen

juggling-async.js

Source:juggling-async.js Github

copy

Full Screen

1var http = require('http');2var result = ['','',''];3var isEnd = [false, false, false];4 http.get(process.argv[2], function(res){5 res.setEncoding('utf8');6 res.on('data', function(data){7 result[0] += data;8 });9 res.on('end', function(data){10 isEnd[0] = true;11 if(isEnd[0]&&isEnd[1]&&isEnd[2]){12 console.log(result[0]);13 console.log(result[1]);14 console.log(result[2]);15 }16 });17 });18 http.get(process.argv[3], function(res){19 res.setEncoding('utf8');20 res.on('data', function(data){21 result[1] += data;22 });23 res.on('end', function(data){24 isEnd[1] = true;25 if(isEnd[0]&&isEnd[1]&&isEnd[2]){26 console.log(result[0]);27 console.log(result[1]);28 console.log(result[2]);29 }30 });31 });32 http.get(process.argv[4], function(res){33 res.setEncoding('utf8');34 res.on('data', function(data){35 result[2] += data;36 });37 res.on('end', function(data){38 isEnd[2] = true;39 if(isEnd[0]&&isEnd[1]&&isEnd[2]){40 console.log(result[0]);41 console.log(result[1]);42 console.log(result[2]);43 }44 });...

Full Screen

Full Screen

Elseif.js

Source:Elseif.js Github

copy

Full Screen

1Parser.Statement.Elseif = Ext.extend(Parser.Statement.If, {2 isEnd: function(line, stream) {3 var statement,4 isEnd = false;5 if (statement = Parser.parseStatement(line)) {6 if (statement.type == 'elseif' || statement.type == 'else')7 isEnd = true;8 } else if (this.parent.isEnd.apply(this.parent, arguments))9 isEnd = true;10 if (isEnd)11 stream.goBack(line.length + 1);12 return isEnd;13 }...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const elementHandle = await page.$('text=Get started');7 await elementHandle.click();8 await page.waitForNavigation();9 await page.goBack();10 const isEnd = await page.evaluate(() => window.history.state.isEnd);11 console.log(isEnd);12 await browser.close();13})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 const elementHandle = await page.$('text=Get started');6 const isEnd = await elementHandle.evaluateHandle(el => el.isEnd);7 console.log(await isEnd.jsonValue());8 await browser.close();9})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { isEnd } = require('playwright/lib/server/chromium/crNetworkManager');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.route('**/*', route => {7 console.log(route.request().url());8 if (isEnd(route.request().url())) {9 console.log('Found end request');10 }11 route.continue();12 });13 await browser.close();14})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { isEnd } = require('@playwright/test/lib/utils');2const { isEnd } = require('@playwright/test/lib/utils');3const { isEnd } = require('@playwright/test/lib/utils');4const { isEnd } = require('@playwright/test/lib/utils');5const { isEnd } = require('@playwright/test/lib/utils');6const { isEnd } = require('@playwright/test/lib/utils');7const { isEnd } = require('@playwright/test/lib/utils');8const { isEnd } = require('@playwright/test/lib/utils');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');2const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');3const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');4const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');5const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');6const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');7const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');8const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');9const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');10const { isEnd } = require('playwright/lib/server/supplements/recorder/recorderSupplement');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { isEnd } = require('playwright/lib/internal/recorder/frames');2const { isEnd } = require('playwright/lib/internal/recorder/frames');3const { isEnd } = require('playwright/lib/internal/recorder/frames');4const { isEnd } = require('playwright/lib/internal/recorder/frames');5const { isEnd } = require('playwright/lib/internal/recorder/frames');6const { isEnd } = require('playwright/lib/internal/recorder/frames');7const { isEnd } = require('playwright/lib/internal/recorder/frames');8const { isEnd } = require('playwright/lib/internal/recorder/frames');9const { isEnd } = require('playwright/lib/internal/recorder/frames');10const { isEnd } = require('playwright/lib/internal/recorder/frames');11const { isEnd } = require('playwright/lib/internal/recorder/frames');12const { isEnd } = require('playwright/lib/internal/recorder/frames');13const { isEnd } = require('playwright/lib/internal/recorder/frames');14const { isEnd } = require('playwright/lib/internal/recorder/frames');15const { isEnd } = require('playwright/lib/internal/recorder/frames');16const { isEnd } = require('playwright/lib/internal/recorder/frames');17const { isEnd } = require('playwright/lib/internal/recorder/frames');18const { isEnd } = require('playwright/lib/internal/recorder/frames');19**Environment (please complete the following information):**

Full Screen

Using AI Code Generation

copy

Full Screen

1const { isEnd } = require('@playwright/test/lib/test');2const { test } = require('@playwright/test');3const { expect } = require('@playwright/test');4test('test', async ({ page }) => {5 expect(await page.isVisible('#footer')).toBeTruthy();6 const footer = page.locator('#footer');7 expect(await footer.isVisible()).toBeTruthy();8 expect(await isEnd()).toBeTruthy();9});

Full Screen

Using AI Code Generation

copy

Full Screen

1const {test, expect} = require('@playwright/test');2test('should work', async ({page}) => {3 await page.click('text="Get Started"');4 await page.click('text="Docs"');5 await page.click('text="Writing Tests"');6 expect(page.url()).toBeEnd('test-intro');7 expect(page.url()).toBeEnd('test-intro', {ignoreCase: true});8 expect(page.url()).toBeEnd('test-intro', {ignoreCase: false});9});10const {test, expect} = require('@playwright/test');11test('should work', async ({page}) => {12 await page.click('text="Get Started"');13 await page.click('text="Docs"');14 await page.click('text="Writing Tests"');15 expect(page.url()).toBeNotEnd('test-intro');16 expect(page.url()).toBeNotEnd('test-intro', {ignoreCase: true});17 expect(page.url()).toBeNotEnd('test-intro', {ignoreCase: false});18});19const {test, expect} = require('@playwright/test');20test('should work', async ({page}) => {21 await page.click('text="Get Started"');22 await page.click('text="Docs"');23 await page.click('text="Writing Tests"');24 expect(page.url()).toBeStart('https');25 expect(page.url()).toBeStart('https', {ignoreCase: true});26 expect(page.url()).toBeStart('https', {ignoreCase: false});27});28const {test, expect} = require('@playwright/test');29test('should work', async ({page}) => {30 await page.click('text="Get Started"');

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful