---
title: Robot FrameworkとNVDAスクリーンリーダーによるアクセシビリティのテスト自動化
tags: 
author: [Takuya Nishimoto](https://www.docswell.com/user/nishimotz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VJP6LQ13E8.jpg?width=480
description: PyCon JP 2024 day 1 2024-09-27 スクリーンリーダーNVDAとRobot Frameworkを用いたシステムテストの自動化について紹介します。 主に日本語Windows環境で検証し、独自のテストの組み込み、アクセシビリティサポーテッド（AS）情報への活用を検討します。
published: September 27, 24
canonical: https://www.docswell.com/s/nishimotz/ZWWXED-2024-09-27-064615
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/VJP6LQ13E8.jpg)

Robot Frameworkと
NVDAスクリーンリーダーによる
アクセシビリティのテスト自動化
2024-09-27
Takuya Nishimoto
@24motz / @nishimotz
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/2EV3Q5YN7Q.jpg)

NVDA: NonVisual Desktop Access
• Windows用のオープンソースのスクリーンリーダー
• GPL v2
• Python と C++
• NVDA日本語版
• 日本語のキーボード、点字、IMEなどに対応
• 日本で「まあまあ使われている」視覚障害者の支援技術
• YouTube「NVDAでアクセシビリティチェック」
• 解説 @nishimotz
• アクセシビリティとは？
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/57G3W695JL.jpg)

プロモーションを受け取りますか？
ここにチェックボックスがある？
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4EQ534WLJP.jpg)

アクセシビリティのテストの例
• チェックボックスがちゃんと表示される
• テキストラベルとの関連付け
• Tabキーでフォーカスできる
• フォーカスの可視化
• 複数の方法でアクセスできる
• ラベルをクリック
• Tabキーで移動してスペースキーを押す
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/KJ491QK571.jpg)

もともとHTMLはアクセシブル
• https://web.dev/articles/the-accessibility-tree
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LE1KGPX2JG.jpg)

ARIA Authoring Practices Guide (APG)
• https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GEWDK2N2J2.jpg)

Switch Pattern
• https://www.w3.org/WAI/ARIA/apg/patterns/switch/
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/47ZGZD34E3.jpg)

WAI-ARIA: role=“switch”
• https://w3c.github.io/aria/#switch
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YJ6YZ1XG7V.jpg)

ちゃんと伝わるか
NVDA
ブラウザ
コンテンツ
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJ5GW4XXJ4.jpg)

キー入力
音声・点字
SystemTestSpy
NVDA
ブラウザ
Robot
Remote
Server
コンテンツ
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LE3R4GX475.jpg)

ARIA switch role のテスト
• 最初の見出しレベル2に移動
• メインキー2 → Example Heading level 2
• スイッチコントロールに移動
• Tab → Notification switch off
• トグルスイッチを押す
• Space → on
• 現在のフォーカスの読み上げ
• NVDA+Tab → Notifications switch focused on
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/8EDYQ125EG.jpg)

NVDAのシステムテスト: 現状
• 本家版(NV Access)
• ユニットテスト 750個
• システムテスト 100個
• 英語環境 + Chrome のみ
• AppVeyor
• NVDA日本語版
• Windows日本語環境で runsystemtests
• テストをスキップせず直して通す
• www.nvda.jp → NVDA 日本語版 開発者メモ
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/V7P6LQ1DJ8.jpg)

Robot テストデータの形式
• 区切り
• Tab, 2個の空白など
• テストケース名
• テスト設定
• ドキュメント、タグ
• キーワード（テストステップ）
• given, when などを無視（受け入れテスト駆動）
• Pythonコードをキーワードに
• NVDA restarts → def NVDA_restarts()
• 1個の空白、アンダースコア、大文字小文字の区別を無視
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/2JV3Q5YGEQ.jpg)

NVDAのテストライブラリの例
• prepareChrome
• HTMLコードを一時ファイルに保存
• Chrome で開く
• getSpeechAfterTab
• Tabキーを送信
• NVDAが読み上げたはずのテキストを取得
• テスト失敗時にスクリーンショットの取得
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/5EG3W6WD7L.jpg)

15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4JQ5343X7P.jpg)

ウェブコンテンツのアクセシビリティ
• システムテストは丁寧すぎる
• 一般的にはコンテンツとブラウザの統合テスト
• うまくいかないときに何を疑えばいいのか？
• 「うまくいくはずの方法」に従っていないから
• 「その方法」を支援技術やブラウザがサポートしていないから
• アクセシビリティ サポーテッド (AS)
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/K7491Q12E1.jpg)

AS情報とASテストの整備
• WAIC: ウェブアクセシビリティ基盤委員会
• Web Content Accessibility Guidelines (WCAG)
• W3C = ISO = JIS
• 原案作成、改正、普及啓発、関連文書の整備と翻訳
• 達成方法集
• WAIC 実装ワーキンググループ
• github.com/waic/as_test
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/LJ1KGPGK7G.jpg)

button 要素に説明ラベルを提供
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/GJWDK2KP72.jpg)

テストコード
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4EZGZDZ6J3.jpg)

20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/Y76YZ1ZLEV.jpg)

Robot Framework
• テスト自動化フレームワーク
• Apache-2.0 license
• robotframework.org
• robotframework-ja.readthedocs.io
• PyCon JP 2016
• Robot Frameworkでブラウザテストやってみた話
• Yasushi Masuda
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/G75GW4WM74.jpg)

@nishimotz / @24motz
• WAIC実装WG主査
• waic.jp
• 10月10日にオンラインイベント「ASテスト体験会」
• NVDA日本語版
• NVDA日本語チーム → Shuaruta Inc.
• www.nvda.jp
• 広島地域でのPythonなどのコミュニティ活動
22


