Skip to content

✅ 添加 CustomEventMessage relatedTarget 生命周期测试 - #1685

Open
cyfung1031 wants to merge 4 commits into
mainfrom
codex/test-related-target-lifecycle
Open

✅ 添加 CustomEventMessage relatedTarget 生命周期测试#1685
cyfung1031 wants to merge 4 commits into
mainfrom
codex/test-related-target-lifecycle

Conversation

@cyfung1031

@cyfung1031 cyfung1031 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Checklist / 检查清单

  • Fixes mentioned issues / 修复已提及的问题
  • Code reviewed by human / 代码通过人工检查
  • Changes tested / 已完成测试

背景

CustomEventMessage.relatedTarget 的生命周期和消息方向隔离补充约束测试,并修复跨实例目标引用未按消息实例归属的问题,同时改善 Vitest CI 中预期错误和真正失败之间的可读性。

本次改动

  • 将 relatedTarget 的接收、读取和删除统一改为当前 CustomEventMessage 实例的 Map。
  • 保留模块加载时捕获的 Map 方法,避免页面改写 Map.prototype 影响消息传递。
  • 增加多目标乱序消费、重复/未知 ID、双向和跨 channel ownership、未 ready 失败,以及普通消息和非目标鼠标事件不污染 map 的回归断言。
  • 增加 content runtime caller-level 测试,覆盖 GM_addStyleGM_addElement 的 parent 与无 parent 路径,确认输入 parent 和返回 element 都被消费。
  • 将 Vitest 分片和 blob report 合并步骤改为 --silent=passed-only,保留失败测试上下文并隐藏通过测试产生的预期日志。

已知限制

本次修复只覆盖 CustomEventMessage 的 relatedTarget 生命周期和 CI 日志呈现,不改变其他消息传输语义。

建议审查重点

  • 目标是否只存放在接收它的消息实例中。
  • 错误方向或其他 event channel 的实例是否既不能读取也不能消费目标。
  • getAndDelRelatedTarget 是否在消费后释放引用,并对重复/未知 ID 保持安全。
  • content runtime 的 DOM caller 是否在每次操作结束后清空两端 map。
  • Map 原型被页面改写后,内部 Map 操作是否仍然可靠。
  • CI 日志是否只在失败测试上下文中保留测试内的 console 输出。

验证

  • pnpm exec vitest run packages/message src/app/service/content/gm_api --silent=passed-only --reporter=default — 10 个测试文件、143 个测试全部通过。
  • pnpm exec vitest run packages/message/custom_event_message.test.ts packages/message/server.test.ts packages/message/message_queue.test.ts --silent=passed-only --reporter=default — 3 个测试文件、42 个测试全部通过。
  • pnpm exec vitest run packages/message/custom_event_message.test.ts src/app/service/content/gm_api/related_target_lifecycle.test.ts --silent=passed-only --reporter=default — 2 个测试文件、8 个测试全部通过。
  • pnpm run typecheck — 通过。
  • ESLint(两个新增/修改后的测试文件)— 通过。
  • Prettier(两个新增/修改后的测试文件)— 通过。
  • git diff --check — 通过。

@cyfung1031
cyfung1031 marked this pull request as ready for review August 21, 2026 23:38
@cyfung1031
cyfung1031 marked this pull request as draft August 21, 2026 23:46
@cyfung1031
cyfung1031 marked this pull request as ready for review August 22, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant