SuperAPI AI 工具集

dotnet-ui-testing-core

测试与质量

查看项目

更新于 10-16 01:12

技能介绍

用途:为 .NET 各 UI 框架(Blazor、MAUI、Uno Platform)提供通用的 UI 测试模式,解决测试结构、元素定位、异步等待与无障碍验证问题。基线为 .NET 8.0+,框架专属 API 由各自技能负责(bUnit、Appium/XHarness、Uno WASM、Playwright、测试脚手架)。

主要能力:

  1. 页面对象模型(POM):用类封装页面结构与交互,UI 变化时只改页面对象。原则包括导航动作返回下一个页面对象、不暴露原始选择器、断言留在测试中、用可复用组件组合页面对象。
  2. 测试选择器策略:按可靠性排序为 data-testid、无障碍角色+名称、标签文本、占位符、CSS 类、XPath/DOM 结构。推荐为交互元素添加 data-testid(Blazor 用 data-testid,MAUI 用 AutomationId,Uno 用 AutomationProperties.AutomationId),避免依赖 CSS 实现、DOM 结构或动态内容。
  3. 异步等待:按元素是否在 DOM、是否可见可操作、是否由网络加载选择等待方式。Playwright 默认自动等待,可用 WaitForResponseAsync、WaitForAsync、Expect 断言重试;bUnit 用 WaitForState、WaitForAssertion。禁止 Task.Delay、Thread.Sleep 等硬编码等待。
  4. 无障碍测试:用 Deque.AxeCore.Playwright 运行 axe 检查,可限定 WCAG 2.1 AA 规则;覆盖颜色对比、键盘导航、ARIA 标签、焦点管理、屏幕阅读器文本等检查项,并给出 Tab 顺序测试示例。

使用方式:需先通过 dotnet-add-testing 搭建测试项目,并了解 dotnet-testing-strategy 的测试策略决策。页面对象按框架继承不同驱动类型(Playwright 用 IPage,bUnit 用 IRenderedComponent,Appium 用 AppiumDriver)。

限制与注意:不要未经团队同意在生产代码添加 data-testid;不要用 WaitForTimeout;列表未加载完不要断言元素数量;不要因“非需求”跳过无障碍测试;避免页面对象深层嵌套,一层组件组合即可。框架专属测试 API 与浏览器自动化细节不在本技能范围内。