BT

GoogleがiOS用アクセシビリティテストフレームワークをオープンソース化

| 作者: Sergio De Simone フォローする 13 人のフォロワー , 翻訳者 西村 美沙 フォローする 0 人のフォロワー 投稿日 2018年5月2日. 推定読書時間: 4 分 |

原文(投稿日:2018/04/04)へのリンク

A note to our readers: You asked so we have developed a set of features that allow you to reduce the noise: you can get email and web notifications for topics you are interested in. Learn more about our new features.

iOS用アクセシビリティテストの自動フレームワークであるGoogle GTXiLibが、Apacheライセンスの下、オープンソース化された。GTXLibはObjective-Cで書かれており、Xcodeに統合されている。

GTXLibをXCodeに統合するには、XCTestのユニットテストフレームワークを通す。どのテストクラスにでもGTXLibをインストールでき、ユニットテストと実行したいアクセシビリティチェックを好きなだけ登録できる。もしひとつでもアクセシビリティチェックが失敗すると、それに伴ってユニットテストも失敗する。

GTXLibが現在サポートするアクセシビリティチェックは、ラベルがボタンに表示されていること、ラベルが途切れていないこと、タップ可能なエリアが最小限のエリアを確保していること、テキストコントラストが十分高いことを確認しようとしている。

GTXLibはまた開発者に対し、自身でカスタムチェックを設定する手法を提供した。checkWithName:block: APIを利用することで可能となる。次に示すものが、ラベルが要素に表示されていることを確かめるアクセシビリティチェックの簡易バージョンである:

  id<GTXChecking> check = [GTXCheckBlock GTXCheckWithName:"LabelMustBePresent"
                                   block:^BOOL(id element, GTXErrorRefType errorOrNil) {

    NSError *error;
    id accessibilityLabel = [element accessibilityLabel];
    if (![accessibilityLabel isKindOfClass:[NSString class]]) {
        *errorOrNil = // set error;
      }
      // Fail
      return NO;
    }
    return NO;
  }];

結果として、上記に例示しているようにaccessibilityLabelプロパティを利用することによって、ローレベルのアクセシビリティチェックがApple独自のUIAccessibility frameworkによって可能となる。GTXLibテストはUIAccessiblityメソッドのみを利用するに限らず、内部動作のためにあらゆる利用可能なフレームワークで使われるだろう。

自分のテストクラスにGTXLibをインストールするには、次のコードを +setupメソッドに追加するだけでいい。

+ (void)setUp {
  [super setUp];

  // ... your other setup code (if any) comes here.

  // Install GTX on all tests in *this* test class.
  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
                       checks:[GTXChecksCollection allGTXChecks]
            elementBlacklists:@[]];
}

これにより、全てのアクセシビリティチェックが、テストクラスで定義されたユニットテストで実行される。アクセシビリティチェックからいくつかのUI要素を除外したい場合は、elementBlackLists配列にリストアップできる。既存のコードベースにアクセシビリティテストを組み込もうとしているなら便利なリソースである。コントロールできない、または後に修正される要素を除外できるからだ。

XCTestに準拠することで、例えばGoogleのUI自動テストフレームワークのEarlGreyなど、GTXLibをあらゆるXCTestベースのフレームワークにも対応するようにできる。

GTXLibはcocoapodsを使えば容易にプロジェクトに追加することができる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT