Skip to content

⚡️ 降低网络规则跨页测试成本并固化测试约束 - #1734

Merged
CodFrm merged 3 commits into
scriptscat:mainfrom
cyfung1031:codex/network-rules-cross-page-test
Sep 9, 2026
Merged

⚡️ 降低网络规则跨页测试成本并固化测试约束#1734
CodFrm merged 3 commits into
scriptscat:mainfrom
cyfung1031:codex/network-rules-cross-page-test

Conversation

@cyfung1031

Copy link
Copy Markdown
Collaborator

Checklist / 检查清单

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

背景

NetworkRules 的跨页置顶测试用 PAGE_SIZE + 1 条规则验证第二页行为,但先等待完整快照再输入筛选,导致无关的首屏行先被渲染,在 UI 850ms budget 下出现超时。

本次改动

  • 在搜索触发前暂不 resolve 大快照;搜索后在 act 内释放状态,并断言此时没有无关行,随后只观察跨页匹配规则。
  • 保留筛选时拖拽手柄禁用、行菜单可用,以及发送完整 global order 的断言。
  • 参考 PR 1727 的机械护栏做法,新增 scriptcat/no-test-large-boundary-fixture:仅识别 PAGE_SIZE + 1 / PAGE_ROWS + 1 / PAGE_LIMIT + 1 及一个 const 别名,要求逐处写明分页边界 rationale;不判断实际耗时或渲染顺序。
  • 将 fixture 最小化与异步状态释放时机写入 AGENTS.md 和测试开发规范。

实现考虑

原始问题是测试 setup 的 eager state/DOM materialization,不是产品逻辑变化。规则只提供可重复的边界审查入口;helper 生成的数组、其他构造器、React 渲染量与实际耗时仍由行为测试和同环境 timing 负责。

已知限制

本地并行运行整个 NetworkRules 目录时,仓库现有 850ms UI budget 会出现 worker contention 超时;同目录单 worker 运行通过。该 PR 不提高全局 timeout,也不改变生产代码。

建议审查重点

  • 搜索触发后才释放快照,且 React 状态更新在 act 内完成。
  • 行菜单重排仍使用完整 global order,而非筛选后的可见页。
  • ESLint 规则只追踪一个 const alias,并正确放行 +2、任意 foo + 1let、alias chain、Array 词法遮蔽与非页面测试。

验证

  • 原始基线在同一本地环境曾观测到该用例无 coverage 1044ms、coverage 1015ms,超过 850ms budget;修复后该用例定向运行 18/18 通过,目标案例约 403ms(无 coverage)/389ms(coverage)。这些是本地运行观测,不代表所有 runner 的固定耗时。
  • pnpm exec vitest run --no-coverage eslint-rules/harness.test.mjs:连续 3 次 37/37 passed。
  • pnpm run lint:通过(Prettier、TypeScript、i18n、issue-template、全量 ESLint)。
  • pnpm exec vitest run --project ui --no-coverage --maxWorkers=1 src/pages/options/routes/Tools/NetworkRules:10 files / 61 tests passed。
  • pnpm exec vitest run --project ui --coverage .../NetworkRules/index.test.tsx:18/18 passed。
  • 相关警告:部分既有 Dialog 测试打印缺少 Description 的 Radix 警告,不影响退出状态。

@CodFrm

CodFrm commented Sep 9, 2026

Copy link
Copy Markdown
Member

有时候真想放开那个timeout限制

最近cpu天天是满的,本地跑也跑不动

QQ_1788925194449

@CodFrm
CodFrm merged commit fe4f26b into scriptscat:main Sep 9, 2026
10 checks passed
@cyfung1031

Copy link
Copy Markdown
Collaborator Author

有时候真想放开那个timeout限制

最近cpu天天是满的,本地跑也跑不动

QQ_1788925194449

是測試方法不對才會跑很久吧
Timeout 已經是為了github免費伺服器調到850ms
會超過850ms的話肯定是測試方法不對啦
又不是跑什麼加密解密

改timeout限制也不會讓你cpu負擔下降

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.

2 participants