Files
shz-backend/docs/test-reports/job-fair/2026-07-25/bugs/BUG-008-enterprise-outdoor-job-dialog-accessibility.md

51 lines
3.0 KiB
Markdown
Raw Normal View History

# BUG-008企业端户外招聘会“报名岗位”弹窗筛选字段缺少语义关联
- 严重级别P3弹窗表单可访问性问题
- 状态:代码已修复,待测试环境浏览器复验
- 环境test
- 角色PC 企业端(已登录测试企业角色)
- 入口:`/shihezi/jobfair/jobfair/outdoorfair`
- 招聘会:`id=7`“2026年石河子市金秋就业援助户外招聘会”
- 发现时间2026-07-25
## 复现步骤
1. 在企业端户外招聘会列表中找到已通过报名的 `id=7`
2. 点击“查看报名岗位”。
3. 在弹出的“2026年石河子市金秋就业援助户外招聘会 - 报名岗位”窗口中查看“岗位名称”“学历要求”“工作经验”筛选字段。
4. 查看 Chrome DevTools Issues/Console。
## 预期结果
弹窗内每个筛选字段都应有唯一 `id/name`,并与可见标签正确关联;读屏用户应能在弹窗中明确知道输入框和两个下拉框各自的用途。
## 实际结果
打开弹窗后 Chrome DevTools Issue 计数从列表基线的 1 个未关联标签/1 个无 `id/name` 字段增加为:
- `No label associated with a form field (count: 2)`
- `A form field element should have an id or name attribute (count: 2)`
只读 DOM 检查显示弹窗中的岗位名称原生 `input` 没有 `id``name``aria-label``aria-labelledby`;学历和工作经验下拉原生控件虽有 `id=education/experience`,但没有 `name` 或显式 `aria` 字段关联。
## 浏览器证据
- 页面截图:[JF-EN-009-outdoor-registered-jobs-empty.png](../screenshots/JF-EN-009-outdoor-registered-jobs-empty.png)
- accessibility snapshot 显示弹窗标题“报名岗位”,以及“岗位名称 :”“学历要求 :”“工作经验 :”字段。
- `GET /api/shihezi/cms/outdoor-fair/7/jobs?current=1&pageSize=10`HTTP 200返回 `total=0``rows=[]`;数据为空不是请求失败,但空结果弹窗仍显示可用的筛选和“添加岗位”控件。
- 控制台 Issue`No label associated with a form field (count: 2)`
- 控制台 Issue`A form field element should have an id or name attribute (count: 2)`
- 页面只读 DOM 检查确认岗位名称输入字段没有 `id/name/aria-label/aria-labelledby`
## 影响范围
企业用户在维护户外招聘会报名岗位时,读屏和自动化工具无法稳定识别弹窗中的岗位名称筛选字段;该问题也会增加企业端招聘会功能的无障碍问题总量。
## 初步定位
问题位于户外招聘会报名岗位弹窗的查询表单字段配置,与 [BUG-005](./BUG-005-enterprise-outdoor-filter-accessibility.md) 的列表筛选表单是不同组件,但表现同属字段属性/label 透传缺失。优先检查 `shz-admin/src/pages/Jobfair/Outdoorfair` 的报名岗位弹窗组件。
## 建议
为岗位名称、学历要求、工作经验字段补充稳定 `id/name`,并通过 Form.Item label、`htmlFor``aria-labelledby` 形成显式关联;空数据场景下保留筛选没有问题,但应同时给出清晰的空状态说明和维护权限提示。