in separate process • New: • XCUIApplication: proxy for tested app • XCUIElement: proxy for elements • XCUIElementQuery: resolves to collections of elements
Relationships and Filtering • Use .element property to get XCUIElement • Elements must be unique (use .exist to check whether elements exists) • Queries are evaluated on demand; will be re- evaluated when UI changes
• View hierarchy is exposed and events are generated • API, DSL (Ruby) for writing tests Xcode 7 • App runs in separate process • UI elements & queries (relationship & filtering); assert values • Events are synthesised on low level of OS • Integrated into Xcode (test target, recording, code completion, running tests, code coverage)
Xcode (debugging, code coverage, …) • Access to advanced scenarios: pickers, tap links in a webView, reordering of table cells • Backgrounding / foregrounding -> test app lifecycle • Not really expressive: similar to writing unit tests with Kiwi / Spectra vs. XCTest
tests in DSL • More flexible (e.g. backdoor feature; get view hierarchy) • But NOT integrated… • Similar to Xcode view debugging & Reveal.app: • Xcode has superior integration (auto layout) • but Reveal has great features
it to learn how to write tests • Queries are evaluated on demand -> keep it DRY • Relationships & filtering -> chain • Integration into Xcode: code coverage, performance testing, screenshots