团队成员 Playwright 助手
@bigbinary/neeto-team-members-playwright 包含团队成员和角色
POMs, 选取者, 和这种纳米拥有的类型。 已编辑出版
独立 @bigbinary/neeto-team-members-frontend。 。 。 .
普通帮助人员留在其中 @bigbinary/neeto-playwright-commons。这些POM使用
用于页面命令、常见选择器、过滤器和 exampleEmail。 。 。 .
使用量
装入消耗品中 playwright-tests/ 目录 :
yarn add -D @bigbinary/neeto-team-members-playwright
产品提供列于 package.json,包括:
@bigbinary/neeto-playwright-commons。不需要前端软件包.
和普通人一样,软件包仅是ES模块,而Playwright加载的规格是
常见JS. 在旁边添加路径别名 @neetoplaywright 在产品中
playwright-tests/tsconfig.json,然后通过它导入.
"paths": {
"@neetoteammembers": [
"./node_modules/@bigbinary/neeto-team-members-playwright"
]
}
import {
MEMBER_SELECTORS,
Member,
MemberApis,
ROLES_SELECTORS,
RoleApis,
RolesPage,
TeamMembers,
} from "@neetoteammembers";
- 构造
TeamMembers与{ page, neetoPlaywrightUtilities }它驱动 需要的原子表UI: 收音机,menuitem批量动作和列菜单 从列头按钮打开. searchMemberByEmail(email)小写地址,然后搜索 验出行相.new Member(neetoPlaywrightUtilities)通过 纳米的REST API. 创建发送user(单位:千美元)emails, (中文(简体) ),organization_role, (中文(简体) ),app_roles) (中文(简体) ). 更新发送team(单位:千美元)active, (中文(简体) ),first_name, (中文(简体) ),last_name, (中文(简体) ),organization_role, (中文(简体) ),email选择profile) (中文(简体) ). 批量更新发送users(单位:千美元)organization_role, (中文(简体) ),active, (中文(简体) ),emails) (中文(简体) ).- 构造
RolesPage与(page, neetoPlaywrightUtilities)它检查 通过标签获得权限.new RoleApis(neetoPlaywrightUtilities)发送organization_role(单位:千美元)name, (中文(简体) ),kind, (中文(简体) ),description, (中文(简体) ),permission_ids和 删除new_role_id。 。 。 . - 宿主的i18next sixture 必须在 POM 之前装入纳米翻译 创建.
成员助手
MemberApis.fetchByEmail(email)使用服务器端查询活动成员neeto_filters电子邮件条件和小写邮件.fetch(params = {})仍可供其他瞄准镜和标记.Member.getUserIdViaAPI(email)过滤最多60项请求的民调 秒,在大小写不敏感的情况下匹配,并返回成员ID。 没有就失败了 现役成员可以参加.Member.addMemberViaRequest({ email, appName, ... })等待创建 任务完成后,使用该搜索返回成员id.Member.editMemberViaRequest, (中文(简体) ),deactivateMemberViaRequest,以及updateEmailViaAPI更新配置文件,取消成员,并更改电子邮件.generateRandomTeamMembers({ count, role })创建测试数据对象.MemberApis.create, (中文(简体) ),jobStatus, (中文(简体) ),fetchPermissions, (中文(简体) ),update,以及bulkUpdate揭露创造成员、就业投票、许可列名和 成员最新情况.TeamMembers.pageTitle是纳米的会员页标题taxonomyDefaultLabels.member.plural翻译。 在页面标题中使用 声明而不是文本的硬编码.TeamMembers.openMemberShowPage(email)通过电子邮件搜索,打开匹配 名称单元格,并验证成员页标题.TeamMembers.navigateToTeamMembers, (中文(简体) ),openMemberPane, (中文(简体) ),fillMemberForm, (中文(简体) ),submit, (中文(简体) ),addMemberViaUI, (中文(简体) ),editMemberViaUI,以及removeMemberViaUI驱动 成员表和V2成员表.searchAndVerifyMemberByEmail({ email })财务报告和审定财务报表searchMemberByEmail(email)搜索和验证一行;getMemberRowByName(name)返回其行定位符.openFilterPane, (中文(简体) ),filterMembersByMultiSelect,以及filterMembers设置成员 过滤器.takeActionOnMembers开展散装行动;performColumnAction财务报告和审定财务报表toggleMemberColumns控制表列.verifyMemberInTable({ name, email })检查行细节;verifyNoDataTitle(email)核实空搜索结果;exportDetails(fileType, adminEmail)请求成员导出.
角色帮助者
-
RolesPage.pageTitle是纳米制中的角色页标题neetoTeamMembers.common.role翻译(平面). 在页面标题中使用 而不是硬编码"罗斯". -
fetchSortedPermissions()以数字表示的返回权限sequence秩序。 秩序. -
getPermissionIdsByName(names)核实每个请求名称是否存在 返回其编号顺序.getPermissionDescriptionsByName(names)返回相同顺序的匹配描述. -
addCustomRoleByPermissionNamesViaRequest(roleName, names)创建角色 以内部名称选择权限. -
grantPermissionsByNameViaRequest(roleName, names)替换该角色的 允许并核实所要求的身份。 它的要求包括:id, (中文(简体) ),kind, (中文(简体) ),name,以及permission_ids,没有organization_id。 。 。 . -
getRolePermissionCheckboxes(roleName, category)返回分类 允许复选框,不包括其第一个类别级复选框. -
getTableCheckboxBesidePermission(roleName, description)返回复选框 对齐许可描述,不包括类别级行. -
verifyRolePermissionCheckboxStates({ roleName, checkedPermissionNames })在整个扩大的、未过滤的检查和未检查权限 页:1.verifyAddRolePanePermissionStates(checkedPermissionNames)核实 使用每个权限的内部名称打开的角色表. -
getPermissionIds(targetPermissions, isGranularPermission)抬头看 允许 id 按类别, 或者第二个参数时的描述 没错. -
getRoleIdAndOrganizationId(roleName)解决一个角色的标识符.addCustomRoleViaRequest, (中文(简体) ),editRoleViaRequest,以及deleteRoleViaRequest通过 API 创建、编辑和删除角色. -
addRoleViaUI, (中文(简体) ),editRoleViaUI, (中文(简体) ),selectAndSubmitPermissions,以及deleteRoleViaUI驱动角色表和表格动作. -
verifyAddAndDeleteRole({ route, roleName })打开角色页面,然后添加 并删除一个没有权限通过 UI 的角色.route默认为 常识'ROUTES.adminPanel.roles,以及roleName随机 8 字符 名称。 生产健康测试通过普通人health.verifyAppIsLive(customSteps),不再检查角色本身:test("should verify application is live", ({ health, page, neetoPlaywrightUtilities, }) => health.verifyAppIsLive(() => test.step("3: Verify adding & removing roles", () => new RolesPage(page, neetoPlaywrightUtilities).verifyAddAndDeleteRole()) ));角色页在别处通过的产品
route:客户关系管理的使用/admin/admin-panel/manageUsers/roles规划员/admin-panel/general/roles, (中文(简体) ), 代码、 运行者、 CI、 Git、 Tower 和 Quiz/admin/admin-panel/roles。 。 。 . -
verifyPermissions检查许可集的元素能见度;verifyRoleSpecificLinkAccess检查产品供应路线. -
RoleApis.fetch, (中文(简体) ),addRole, (中文(简体) ),editRole,以及deleteRole揭露 基本成员/成员/角色清单和角色突变请求.
VerifyRolePermissionCheckboxStatesParams 与
现有公共论据和反应类型.
选择器更改( 打破)
已添加 MEMBER_SELECTORS.manageRolesButton, (中文(简体) ), changeRoleButton, (中文(简体) ),
rolesSearchInput, (中文(简体) ), changeRoleOption(role),以及 filteredMembersCount 从
V2的动作挡. 已添加 ROLES_SELECTORS.tablePermissionCard(category), (中文(简体) ),
tableCategoryTitle,以及 emptyCategoryRow 从V2角色表.
删除了在纳米中没有文字或生成对应物的选择器 :
MEMBER_SELECTORS.deactivatedAgentsButtonMEMBER_SELECTORS.activatedMembersButtonMEMBER_SELECTORS.menuBarHeadingMEMBER_SELECTORS.statusTagMEMBER_SELECTORS.subscriptionPlanTagROLES_SELECTORS.searchTextField
这些清除量要求 minor 释放。 现有的工作表选择器
ROLES_SELECTORS.permissionCard, (中文(简体) ), permissionCategoryTitle,以及
permissionCheckbox(name) 与表格选择器区分开来.
地方发展
要尝试产品中未释放的更改,请与 yalc 从此目录,
然后在产品中添加包装 playwright-tests/ 目录。 删除
雅尔克链接之前, 执行所以产品显示和锁定文件停留
不变:
yarn build && yalc publish
cd path/to/product/playwright-tests
yalc add --dev @bigbinary/neeto-team-members-playwright
第一次出版后, yalc push 从 playwright/ 更新每个产品
加上了包裹 以
yalc remove @bigbinary/neeto-team-members-playwright。 。 。 .
释放
将 PR 合并到 playwright 标签和a patch, (中文(简体) ), minor,或 major 标签.
现有的 NeetoCI 凸起工作流程发布此软件包并打开
Bump version 公关.