Skip to content

[AT] 语音记事本 AT-SPI 测试套件(场景1) - #515

Draft
dengzhongyuan365-dev wants to merge 2 commits into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:agent/at/1788835383
Draft

dengzhongyuan365-dev wants to merge 2 commits into
linuxdeepin:develop/snipefrom
dengzhongyuan365-dev:agent/at/1788835383

Conversation

@dengzhongyuan365-dev

@dengzhongyuan365-dev dengzhongyuan365-dev commented Sep 8, 2026

Copy link
Copy Markdown
Member

AT-SPI 测试套件 — 语音记事本 场景1

目标: 验证应用默认进入 Tiptap 编辑器,主窗口、笔记列表、详情页编辑区、TiptapWebView 可访问,新建笔记后编辑区仍可用。

覆盖内容

  • 启动应用验证主窗口
  • 验证笔记列表
  • 验证详情页编辑区
  • 验证 TiptapWebView 可访问
  • 新建笔记后编辑区仍可用

测试套件统计

  • 17 个 suite YAML 文件,覆盖 19 个模块切片
  • 42 个可执行用例
  • 46 个元素清单(全部 name_source: accessible)
  • 100% 元素覆盖率门禁 PASS(44/44,2 个动态名称豁免)

验证状态

  • ✅ pipeline_assemble.py 组装通过(0 errors)
  • ✅ cover.py 覆盖率门禁 100% PASS
  • ⚠️ Gate 5/Gate 4 运行时验证需桌面环境(AT-SPI bus 不可用)

交付物

  • tests/at/yaml/elements.yaml — 元素清单
  • tests/at/yaml/**/*.suite.yaml — 17 个 suite 文件
  • tests/at/element-coverage-manifest.yaml — 元素覆盖清单
  • tests/at/coverage-report.yaml — 覆盖率报告
  • tests/at/cases_mapped.yaml — 映射用例集
  • tests/at/unreachable.yaml — 不可达元素豁免清单

Summary by Sourcery

Establish focused AT-SPI coverage for the default Tiptap editor workflow in Voice Note.

New Features:

  • Add an AT-SPI accessibility test scenario covering application startup, folder and note lists, the detail editor, TiptapWebView access, and editor availability after creating notes.

Enhancements:

  • Replace the previous broad case mapping with a focused scenario-based suite and accessible element inventory for the Tiptap startup flow.
  • Document accessibility coverage exclusions for dynamic or out-of-scope elements.

Tests:

  • Add accessibility coverage manifests and reports, achieving 100% coverage for the in-scope named elements.

Chores:

  • Remove legacy scenario-specific suite files and unsupported case mappings that are outside the new scope.

Generate AT-SPI accessibility test suite covering Scenario 1:
Tiptap default launch, main window, note list, detail edit area,
TiptapWebView accessibility, and new note creation keeps edit area usable.

- 17 suite YAML files across 19 module slices (42 testable cases)
- 46 elements in coverage manifest, 44 covered (100% gate PASS)
- 2 dynamic-name elements exempted via unreachable.yaml
- cases_mapped.yaml, element-coverage-manifest.yaml, coverage-report.yaml

Co-authored-by: AT-测试套件生成助手 <agent@multica>
@deepin-ci-robot

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dengzhongyuan365-dev

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sourcery-ai

sourcery-ai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Reviewer's Guide

本 PR 将语音记事本场景 1 的 AT-SPI 测试重构为按模块拆分的 suite YAML,围绕默认主窗口、列表、详情页和 TiptapWebView 可访问性及新建笔记流程组织 42 个用例,并配套 accessible 元素清单、动态名称豁免和 100% 元素覆盖率报告;静态组装和覆盖率检查已通过,但实际 AT-SPI 运行仍需桌面总线环境。

File-Level Changes

Change Details Files
将 AT-SPI 用例从旧的按功能原始用例映射重构为场景 1 的 suite YAML 集合,覆盖应用启动、记事本/笔记列表、详情页编辑区、Tiptap WebView、快捷键、菜单、搜索、录音及对话框交互。
  • 新增 17 个按模块组织的 suite 文件,共 42 个可执行用例
  • 使用统一的 accessible name 选择器和 element_action、键盘、DTK 菜单及断言步骤描述测试流程
  • 保留部分超出场景目标的菜单、录音、多选和设置验证用例
tests/at/yaml/**/*.suite.yaml
tests/at/cases_mapped.yaml
建立可访问元素清单及覆盖率门禁产物,确保 suite 引用的 UI 元素均来自可访问名称。
  • 将元素定义切换为 46 个 accessible-name 元素,并记录其 QML 来源、类型和角色
  • 生成元素覆盖 manifest 与覆盖率报告,44/44 可覆盖元素通过 100% 门禁
  • 为两个动态名称元素增加不可达豁免及原因说明
tests/at/yaml/elements.yaml
tests/at/element-coverage-manifest.yaml
tests/at/coverage-report.yaml
tests/at/unreachable.yaml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

移除场景1范围外的全部 suite(18个模块目录),仅保留场景1:
- 启动应用验证主窗口
- 创建文件夹后验证笔记列表
- 新建笔记验证TiptapWebView与详情页编辑区
- 新建笔记后编辑区仍可用

更新 elements.yaml(10个场景1元素)、element-coverage-manifest.yaml、
unreachable.yaml(36个范围外元素豁免)、cases_mapped.yaml、coverage-report.yaml。
覆盖门禁 100% PASS(10/10)。
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