본문으로 건너뛰기
cccskills
무료GitHub에 공개

selector-self-heal

复核运行期自愈提案并写回 PageObject。触发:选择器失效、定位符漂移、自愈提案、proposals.jsonl、用例误报不通过。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

选择器自愈 — 复核与写回

适用场景

  • 带 --self-heal=on|strict 跑完回归后,终端汇总里出现「选择器自愈」段落
  • 用例失败但功能实际正常,怀疑是定位符过期而非真实缺陷
  • 需要把运行期的临时修复固化回源码

不适用:首次编写定位符(用 locator-replacer);页面真的少了元素(那是真缺陷,不是漂移)。


机制分工

运行期只做两件事:找出可用的替代定位符让用例继续,并把提案写进 reports/self-heal/proposals.jsonl。运行期绝不改源码。 写回是本 skill 的职责,且要经人确认与落库闸门。

这条分界不是洁癖。测试进程里自动改源码,意味着一次跑飞的回归可以静默重写 整个 PageObject 层,而改动淹没在测试输出里没人看见。


复核流程

1. 读提案

python3 -c "import json;[print(json.dumps(json.loads(l),ensure_ascii=False,indent=2)) for l in open('reports/self-heal/proposals.jsonl')]"

每条提案含:intent(常量名、原选择器、注释说明、历史指纹)、 candidates(全部候选及置信度与理由)、chosen(运行期实际采用者,可能为 null)。

2. 逐条判定

现象结论
chosen 为 null,且候选列表为空元素真的不在了 → 真缺陷,不要写回,去查功能
chosen 的 strategy 是 testid 或 id锚点稳定 → 可写回
chosen 的 strategy 是 text文案改动即失效 → 写回前先找有没有 testid 可用
chosen 的 strategy 是 stable-class样式重构即失效 → 优先向前端要 testid
同一常量反复出现在提案里该定位符本身选得不好 → 重新设计,别反复打补丁

触发:chosen 非 null 但 intent 的指纹字段全为 null 时,必须人工确认—— 没有历史指纹意味着判定只依赖注释说明,证据比平时弱。

3. 写回

写回目标是 PageObject 类顶部的定位符常量,只改选择器字符串,不动常量名:

# 改前
LOGIN_BUTTON = "#login-btn"          # P0: 登录按钮
# 改后
LOGIN_BUTTON = '[data-testid="login-submit"]'   # P0: 登录按钮

常量名是全项目引用点,改名会波及所有用例;注释是下次自愈的意图来源, 删掉等于自断依据。

4. 收尾

  • 写回后重跑该用例,不带 --self-heal,确认真绿
  • 确认后清空 proposals.jsonl,避免旧提案被反复复核
  • 若修改涉及定位策略的通用经验,按自我进化机制沉淀(先过落库闸门)

禁止事项

  • 不要把 chosen 为 null 的提案「想办法修好」——那是真缺陷的信号
  • 不要为了让用例变绿而放宽 MIN_CONFIDENCE
  • 不要批量写回:逐条看 strategy 与 confidence,低置信的宁可留着人工处理

相关:自愈边界规则 · locator-replacer · 落库闸门

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

为已有 PageObject 增量添加回归测试点。触发:新增测试点、添加回归点、add test point、增加覆盖、扩展页面方法。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

POM 分层与 context 共享决策树。触发:架构、分层、POM、Page Object、基类设计、新增角色。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

浏览器 viewport / headless / 超时分层配置。触发:viewport、浏览器配置、导航超时、headless、slow_mo、incognito。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

共享 page 下用例离开起点后必须 UI 返回并断言。触发:往返闭合、case round trip、复位超时、scope 共享 page。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

AST 知识图谱:变更审查、探索、调试、重构。触发:知识图谱、代码审查、影响分析、爆炸半径、重构。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

一键生成 PageObject + 配套测试。触发:新增页面、生成页面、gen page、create page、添加页面对象。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DanielSuo117/velocitai1592026년 9월 28일 업데이트

DanielSuo117의 스킬 모두 보기

이 스킬의 문제 신고