LoginSignup
0

More than 5 years have passed since last update.

EarlGreyのAssertsとActionを自作する

Posted at

Assert編

Assertを頻繁に使ったりしますが、やはり自作UIパーツの特定の値が変わったかどうか、確かめたいですよね。

そんな時は、'Assert'を作ってやりましょう。

例:HogeButtonという自作ボタンに、isHogeというBool型変数がある場合。

func grey_confirmToButtonHighlighted() -> GREYAssertionBlock {
  return GREYAssertionBlock.assertion(withName: "grey confirmToIsHighlighted") { (ele, err) -> Bool in
    guard let _ = err else { return false }
    guard let button = ele as? HogeButton else { return false }

    return button.isHoge
  }
}
EarlGrey.select(elementWithMatcher: grey_kindOfClass(HogeClass.self))
        .inRoot(grey_kindOfClass(UIView.self))
        .assert(self.grey_confirmToButtonHighlighted())

こんな感じで良い感じにAssertできます。

Action編

Actionといっても、画面操作のメソッドはほとんど備わっているので、主に取得したい要素などに使ったりしています。

ほとんどAssertと同じ作り方ですが、要素に対して確認するか、働きかけるかで使い分けています。


func grey_getButtonInstance(completion: ((UIButton) -> Void)?) -> GREYActionBlock {
  return GREYActionBlock.action(withName: "grey getButtonInstance") { (ele, err) -> Bool in
    guard let _ = err else { return false }
    guard let button = ele as? UIButton else { return }

    completion?(button)

    return true
  }
}

let storeButton: UIButton!

EarlGrey.select(elementWithMatcher: grey_kindOfClass(UIButton.self))
        .inRoot(grey_kindOfClass(UIView.self))
        .assert(grey_getButtonInstance { button in
           storeButton = button
        })

こんな感じで取得できます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0