wide and shallow life.

四十路アプリ開発者の備忘録

fastlane/snapshotで複数パターンのスクリーンショットを撮る方法

前回はfastlane/snapshotのご紹介をしました。

yokada3.hatenablog.com

今回は複数パターンでスクリーンショットを撮り分ける方法をご紹介します。

Snapfileを見るとわかるのですが、fastlane/snapshotはShemeを指定して実行できます。 この仕組みを利用して、Xcode複数Schemeを作成しSchemeごとにテストを分けることで、スクリーンショット複数パターン撮り分けを実現します。

それでは早速やってみましょう!

テストを追加作成する

まずはテストの追加です。テストメソッド命名規則に従い、「test」で始まるメソッド(testExample2)を追加し、スクリーンショットを撮りたい画面を変えましょう。例では単純に初期画面のスクリーンショットを撮る命令のみ記述しました。

- (void)testExample {

    XCUIApplication *app = [[XCUIApplication alloc] init];
    
    //Tap Navifation Rght (+) Button
    [[app.navigationBars[@"Master"].buttons elementBoundByIndex:2] tap];
    
    sleep(1);
    [Snapshot snapshot:@"master" waitForLoadingIndicator:YES];
    
    
    [[app.tables.cells elementBoundByIndex:0] tap];
    sleep(1);
    [Snapshot snapshot:@"detail" waitForLoadingIndicator:YES];

}

- (void)testExample2 {

    sleep(1);
    [Snapshot snapshot:@"master" waitForLoadingIndicator:YES];
    
}

Shemeを追加する

  1. Xcodeのメニューから「Product」-> 「Scheme」-> 「New Scheme」と選択します。
  2. TargetはsnapshotのUIテストのターゲットを選択し、Nameを識別できるよう設定します。

f:id:yokada3:20160217135204p:plain

Schemeの設定を行う

  1. 作成したSchemeの編集画面に移動します(Xcodeのメニューから「Product」-> 「Scheme」-> 「Edit Scheme」)
  2. 左ペインの「Run」を選択し、「Info」の「Executable」に起動できるappを設定します。
  3. 左ペインの「Test」を選択し、「Info」の「Tests」を展開し、実行したいテストメソッド以外のチェックを外しCloseします。 f:id:yokada3:20160217141149p:plain f:id:yokada3:20160217141204p:plain

fastlane/snapshotをSchemeを指定して起動

ターミナルを開き、プロジェクト直下まで移動しSchemeを指定してsnapshotを実行します。

$ snapshot -s HSASnapshotUITests2

あとは待つだけ!指定したテストのみ実行されるので、スクリーンショットの撮り分けができました〜

f:id:yokada3:20160217141907p:plain

ちなみに存在しないSchemeを指定して起動すると親切にもScheme選択画面になるあたりがニクイ。

$ snapshot -s Hogehoge

f:id:yokada3:20160217142217p:plain

それではまた〜(次回こそdeliver)