diff --git a/activities/part-substitution-assessment/__tests__/activity.test.ts b/activities/part-substitution-assessment/__tests__/activity.test.ts index 4f0b99a..bc33b67 100644 --- a/activities/part-substitution-assessment/__tests__/activity.test.ts +++ b/activities/part-substitution-assessment/__tests__/activity.test.ts @@ -40,6 +40,41 @@ const viewHtml = (name: string) => manifest.assets.viewTemplates.find((t) => t.n const ledgerOf = (address: string) => manifest.declarations.ledger.find((l) => `${l.domain}.${l.object}` === address); const colOf = (address: string, name: string) => ledgerOf(address)?.fields.find((f) => f.name === name); +/** + * 从一段 CSS 文本里摘出**选择器里提到过的所有 class token**(2026-08-30 task-12,缺陷③用)。 + * 只扫选择器,不扫规则体(`content:"…"` 这类属性值里的文字不算);`@media`/`@supports` + * 这类带嵌套一层规则体的 at-rule 会往里再走一遍(本仓三份件的 `@media(max-width:600px)` 与 + * `@media (prefers-reduced-motion: reduce)` 都嵌着真正的选择器,不能漏)。 + * 这是**存在性**扫描(选择器里出没出现过这个 class),不判断它是不是复合选择器的一部分 —— + * `.zic` 完全不存在是这份扫描要抓的那种漏(缺陷③的两个真实事故都是这一种:某个 class + * 在目标件自己的 `