Skip to content

Build Artifacts and Test Types

Vladislav Alekseev edited this page Jun 17, 2020 · 2 revisions

Emcee needs build artifacts in order to run your tests. There are different build artifacts depending on type of test you want to run. In any case, xcodebuild build-for-testing will produce these artifacts for you. You will need to ZIP and upload them on some HTTP server with direct URLs so Emcee workers would be able to download and use them to run tests.

Read more about organizing your HTTP server here.

Different test types require different set of build artifacts to be provided to Emcee in order to successfully execute tests.

UI Tests

Also known as XC UI native tests. In this test scenario, main app is launched and then controlled by another app (XCTRunner.app). The latter also runs your tests. This allows to achieve black box-like test mode.

The required artifacts are:

  • App under test - .app bundle of the app being tested

  • XCTRunner.app - Xcode will add one into DerivedData folder, typically named after your UI tests target, e.g. UITests-Runner.app

  • xctest bundle - usually it is located inside UITests-Runner.app/PlugIns/.

Application Tests

In this test scenario, the app under test starts and runs your test bundle, thus, the app itself acts like a test hosting app. Tests have access to all objects and memory of the app under test. This allows to write gray or white box tests.

The required artifacts are:

  • App under test - .app bundle of the app being tested

  • xctest bundle - usually it is located inside AppUnderTest.app/PlugIns/.

Logic Tests

This test environment does not require a hosting app. Tests are loaded and executed by xctest process. Usually things like CocoaPods dev pods can be tested in logic test mode.

The required artifacts are:

  • xctest bundle - usually it is located inside your Derived Data folder.
Clone this wiki locally