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
- Editor Review
- Chief Editor Action