# SEMSX测试框架 **Repository Path**: zjsj_lize/semsx-test ## Basic Information - **Project Name**: SEMSX测试框架 - **Description**: SEMSX测试框架 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-22 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SEMSX 测试框架(vue3 版本) 针对 semsx-vue(Vue 3 + ele-admin-plus)邮件系统编写的 Playwright + TypeScript E2E 测试。 #### 软件架构 ``` semsx-test/ ├── config/ │ ├── env.config.ts # 入口地址 / API 地址 / 账号密码环境变量 │ └── pageParams.config.ts # 各页面相对路径(vue-router) ├── src/ │ ├── pages/ # Page Object(每个邮件夹 / 公共组件各一个) │ ├── spec/ # 测试用例 │ ├── utils/ # URL 等工具 │ └── fixtures.ts # Playwright 自定义 fixture(登录态复用 + page 工厂) ├── semsxTest.config.ts # Playwright 配置 └── README.md ``` #### 与旧版(jq + iframe)的差异 | 项 | 旧版 | 新版(vue3) | |----|------|---------------| | 入口 URL | `http://host/semsx/jcdp2-ft-debug/smartadmin.html?type=page&dataUrl=xxx` | `http://localhost:5173/semsx/inbox` | | 页面嵌套 | iframe 多层 | 单层 SPA,元素均在顶层 page | | 表格 | dataTables | ele-pro-table(el-table) | | 弹窗 | bootbox | el-message-box | | 登录后跳转 | dataUrl 比对 | 离开 /base-login 路由 | | 邮件删除(草稿/发件) | 按 linkId 走 `/mailetmaillinks/deletebatchids` | 按主表 id 走 `/mailetmailinfo/deletebatchids`(无 linkId) | #### 安装教程 ```bash cd semsx-test npm install npx playwright install chrome ``` #### 环境变量 ```bash # 入口地址(默认 http://localhost:5173/) export TEST_BASE_URL=http://localhost:5173/ # 后端 API(默认 http://172.19.69.108:8083/semsxbackend) export TEST_API_URL=http://172.19.69.108:8083/semsxbackend # 登录账号 export TEST_USERNAME=w08115 export TEST_PASSWORD=Goldengate*2 ``` #### 使用说明 ```bash # 1. 启动 vue3 前端(在 semsx-vue/frontend 目录) cd ../semsx-vue/frontend npm run dev # 2. 跑全部测试 cd ../../semsx-test npm run test # 3. 调试模式(带 UI) npm run test:ui # 4. 跑某个 spec npm run test src/spec/inbox.spec.ts # 5. 按用例名匹配 npm run test src/spec/login.spec.ts -- -g "登录成功后跳转" ``` #### 邮件夹与路由对照 | 邮件夹 | 路由 | 路径常量 | |--------|------|----------| | 登录 | `/base-login` | `pageParamsConfig.login` | | 收件箱 | `/semsx/inbox` | `inbox` | | 发件箱 | `/semsx/send` | `send` | | 草稿箱 | `/semsx/draft` | `draft` | | 待审核 | `/semsx/audit` | `audit` | | 废件箱 | `/semsx/trash` | `trash` | | 自定义 | `/semsx/custom/:folderId` | `custom` | | 已发送 | `/semsx/outbox` | `outbox` | | 写邮件 | `/module-semsx/views/edit-mail` | `editMail` | | 邮件详情 | `/module-semsx/views/view-mail` | `viewMail` | #### 测试用例清单 | spec | 覆盖 | |------|------| | `login.spec.ts` | 未登录跳转、正常登录、错误密码 | | `mail-table.spec.ts` | 表格通用:加载、行数、toolbar、全选、刷新、分页 | | `inbox.spec.ts` | 收件箱:软删除、彻底删除 | | `send.spec.ts` | 发件箱:软删除、彻底删除、召回 | | `draft.spec.ts` | 草稿箱:软删除、彻底删除(主表 id 路径) | | `outbox.spec.ts` | 已发送:软删除、彻底删除(主表 id 路径) | | `trash.spec.ts` | 废件箱:还原、彻底删除 | | `audit.spec.ts` | 待审核:状态过滤切换 | | `custom.spec.ts` | 自定义邮件夹:folderId 进入 | #### 注意事项 - vue3 的 dev 服务(Vite)默认 `http://localhost:5173/`;如部署在 nginx 上需通过 `TEST_BASE_URL` 调整。 - 草稿箱 / 已发送的彻底删除走 `/mailetmailinfo/deletebatchids`(主表 id),对应 page object 的 `hardDeleteSelected`。 - 收件箱 / 发件箱 / 废件箱 / 待审核 / 自定义 走 `/mailetmaillinks/deletebatchids`(linkId)。 - 已保存的登录态文件 `auth/.auth-state.json` 在首次登录时生成,CI 环境应清理该文件以强制重新登录。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request