835 Views
September 27, 24
スライド概要
PyCon JP 2024
day 1 2024-09-27
スクリーンリーダーNVDAとRobot Frameworkを用いたシステムテストの自動化について紹介します。
主に日本語Windows環境で検証し、独自のテストの組み込み、アクセシビリティサポーテッド(AS)情報への活用を検討します。
Shuaruta Inc. ウェブアクセシビリティ基盤委員会 (WAIC) NVDA日本語版 すごい広島 with Python
Robot Frameworkと NVDAスクリーンリーダーによる アクセシビリティのテスト自動化 2024-09-27 Takuya Nishimoto @24motz / @nishimotz 1
NVDA: NonVisual Desktop Access • Windows用のオープンソースのスクリーンリーダー • GPL v2 • Python と C++ • NVDA日本語版 • 日本語のキーボード、点字、IMEなどに対応 • 日本で「まあまあ使われている」視覚障害者の支援技術 • YouTube「NVDAでアクセシビリティチェック」 • 解説 @nishimotz • アクセシビリティとは? 2
プロモーションを受け取りますか? ここにチェックボックスがある? 3
アクセシビリティのテストの例 • チェックボックスがちゃんと表示される • テキストラベルとの関連付け • Tabキーでフォーカスできる • フォーカスの可視化 • 複数の方法でアクセスできる • ラベルをクリック • Tabキーで移動してスペースキーを押す 4
もともとHTMLはアクセシブル • https://web.dev/articles/the-accessibility-tree 5
ARIA Authoring Practices Guide (APG) • https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/ 6
Switch Pattern • https://www.w3.org/WAI/ARIA/apg/patterns/switch/ 7
WAI-ARIA: role=“switch” • https://w3c.github.io/aria/#switch 8
ちゃんと伝わるか NVDA ブラウザ コンテンツ 9
キー入力 音声・点字 SystemTestSpy NVDA ブラウザ Robot Remote Server コンテンツ 10
ARIA switch role のテスト • 最初の見出しレベル2に移動 • メインキー2 → Example Heading level 2 • スイッチコントロールに移動 • Tab → Notification switch off • トグルスイッチを押す • Space → on • 現在のフォーカスの読み上げ • NVDA+Tab → Notifications switch focused on 11
NVDAのシステムテスト: 現状 • 本家版(NV Access) • ユニットテスト 750個 • システムテスト 100個 • 英語環境 + Chrome のみ • AppVeyor • NVDA日本語版 • Windows日本語環境で runsystemtests • テストをスキップせず直して通す • www.nvda.jp → NVDA 日本語版 開発者メモ 12
Robot テストデータの形式 • 区切り • Tab, 2個の空白など • テストケース名 • テスト設定 • ドキュメント、タグ • キーワード(テストステップ) • given, when などを無視(受け入れテスト駆動) • Pythonコードをキーワードに • NVDA restarts → def NVDA_restarts() • 1個の空白、アンダースコア、大文字小文字の区別を無視 13
NVDAのテストライブラリの例 • prepareChrome • HTMLコードを一時ファイルに保存 • Chrome で開く • getSpeechAfterTab • Tabキーを送信 • NVDAが読み上げたはずのテキストを取得 • テスト失敗時にスクリーンショットの取得 14
15
ウェブコンテンツのアクセシビリティ • システムテストは丁寧すぎる • 一般的にはコンテンツとブラウザの統合テスト • うまくいかないときに何を疑えばいいのか? • 「うまくいくはずの方法」に従っていないから • 「その方法」を支援技術やブラウザがサポートしていないから • アクセシビリティ サポーテッド (AS) 16
AS情報とASテストの整備 • WAIC: ウェブアクセシビリティ基盤委員会 • Web Content Accessibility Guidelines (WCAG) • W3C = ISO = JIS • 原案作成、改正、普及啓発、関連文書の整備と翻訳 • 達成方法集 • WAIC 実装ワーキンググループ • github.com/waic/as_test 17
button 要素に説明ラベルを提供 18
テストコード 19
20
Robot Framework • テスト自動化フレームワーク • Apache-2.0 license • robotframework.org • robotframework-ja.readthedocs.io • PyCon JP 2016 • Robot Frameworkでブラウザテストやってみた話 • Yasushi Masuda 21
@nishimotz / @24motz • WAIC実装WG主査 • waic.jp • 10月10日にオンラインイベント「ASテスト体験会」 • NVDA日本語版 • NVDA日本語チーム → Shuaruta Inc. • www.nvda.jp • 広島地域でのPythonなどのコミュニティ活動 22