BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

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

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

ブックマーク

原文(投稿日: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
 
 

この記事に星をつける

おすすめ度
スタイル

BT