# Generated project {#generated-project} ::: warning REQUIREMENTS - A generated project - A Tuist account and project ::: To run tests selectively with your generated project, use the `tuist test` command. The command hashes your Xcode project the same way it does for warming the cache, and on success, it persists the hashes on to determine what has changed in future runs. In future runs `tuist test` transparently uses the hashes to filter down the tests to run only the ones that have changed since the last successful test run. For example, assuming the following dependency graph: - `FeatureA` has tests `FeatureATests`, and depends on `Core` - `FeatureB` has tests `FeatureBTests`, and depends on `Core` - `Core` has tests `CoreTests` `tuist test` will behave as such: | Action | Description | Internal state | | ----------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | `tuist test` invocation | Runs the tests in `CoreTests`, `FeatureATests`, and `FeatureBTests` | The hashes of `FeatureATests`, `FeatureBTests` and `CoreTests` are persisted | | `FeatureA` is updated | The developer modifies the code of a target | Same as before | | `tuist test` invocation | Runs the tests in `FeatureATests` because it hash has changed | The new hash of `FeatureATests` is persisted | | `Core` is updated | The developer modifies the code of a target | Same as before | | `tuist test` invocation | Runs the tests in `CoreTests`, `FeatureATests`, and `FeatureBTests` | The new hash of `FeatureATests` `FeatureBTests`, and `CoreTests` are persisted | `tuist test` integrates directly with binary caching to use as many binaries from your local or remote storage to improve the build time when running your test suite. The combination of selective testing with binary caching can dramatically reduce the time it takes to run tests on your CI. ## UI Tests {#ui-tests} Tuist supports selective testing of UI tests. However, Tuist needs to know the destination in advance. Only if you specify the `destination` parameter, Tuist will run the UI tests selectively, such as: ```sh tuist test --device 'iPhone 14 Pro' # or tuist test -- -destination 'name=iPhone 14 Pro' # or tuist test -- -destination 'id=SIMULATOR_ID' ```