> For the complete documentation index, see [llms.txt](https://learning.contextqa.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learning.contextqa.com/mobile-testing/uploading-apps.md).

# Uploading Apps (APK & IPA)

## Quick answer

Open **Uploads**, select **Create Folder**, enter a descriptive name, and choose **APK** or **IPA** as the file type. Add the matching application build and wait for **Completed** status before using it. After execution, the run result identifies the saved build name and offers **Download build** while that artifact is retained.

![ContextQA Create Folder dialog showing Attachment, APK, and IPA upload types](/files/ehqFqf22oHdH452haQxn)

## Supported mobile upload types

| Upload type    | Use for                                                         |
| -------------- | --------------------------------------------------------------- |
| **APK**        | Android application builds                                      |
| **IPA**        | iOS application builds                                          |
| **Attachment** | General test files; do not use this type for a mobile app build |

## Upload an app build

### 1. Open Uploads

Select **Uploads** from the left navigation. The table shows the upload name, type, file path, last-modified date, folder size, status, and actions.

![Uploads list filtered to an Android training build with Completed status](/files/xW1190RaOSNLlT0fc5Rj)

### 2. Create the build folder

1. Select **Create Folder**.
2. Enter a name that identifies the app, platform, and release, such as `Sample App — Android 2.4.1`.
3. Under **File Type**, choose **APK** for Android or **IPA** for iOS.
4. Review **Versioning** and **Overwrite existing file**:
   * With versioning enabled, later uploads can create versions.
   * With overwrite enabled, a same-name upload replaces the existing file.
5. Select **Create**.

Folder names must contain 4–30 characters. Choose the upload type carefully: after the folder is created, its **File Type** is locked.

### 3. Add the application file

Open the new folder and follow the upload control to select the matching `.apk` or `.ipa` from your computer. Do not rename the extension.

### 4. Verify processing

Return to the Uploads list and confirm:

* The expected name and platform type appear.
* **File Path** shows the uploaded build.
* **Folder Size** is greater than zero.
* **Status** is **Completed**.

Do not start a test while the upload is still processing or has failed.

## Naming and versioning recommendations

Use a predictable pattern:

```
<app> — <platform> <semantic-version> <environment>
```

Example: `Sample App — Android 2.4.1 Staging`.

Keep old builds only while they are needed for regression comparisons. Before replacing or deleting a build, confirm that no active suite, plan, or scheduled execution depends on it.

### Manage versions and audit history

Open an upload folder to view **Folder Details**. From this panel you can:

* Review or change **Versioning** and **Overwrite existing file**.
* See the **Default Version**, including its date, uploader, and size.
* Select **Upload New Version** when versioning is enabled.
* Select **Upload Replacement File** when overwrite is enabled.
* Rename a version, set or unset the default version, and download a version.
* Review **Version History** and **Audit History**.
* Use **Copy Path** when another configuration needs the stored build reference.

Versioning and overwrite are mutually exclusive. Enabling versioning disables overwrite; turning versioning off enables replacement behavior.

## Use the build in a mobile test

During mobile test configuration:

1. Select **Android** or **iOS**.
2. Select a compatible **Device**.
3. Select the upload under **App Build**.
4. Start generation and execution only after all required fields are complete.

After execution, open the run result and confirm the header shows the saved build name used by that run. When the artifact is still retained, the adjacent **Download build** action retrieves the same package for reproduction. This helps distinguish failures across app versions without relying on an opaque build identifier.

## Troubleshooting uploads

<details>

<summary>The app build does not appear in the App Build list</summary>

Check that the upload type matches the selected platform and the upload status is **Completed**. Refresh the Uploads list and reopen the test-configuration dialog.

</details>

<details>

<summary>The upload shows zero bytes or no status</summary>

The folder may exist without an application file. Open it and upload the build, then confirm that a file path, non-zero size, and **Completed** status appear.

</details>

<details>

<summary>Should I enable versioning or overwrite?</summary>

Use versioning when you need rollback or run-to-run build comparison. Use overwrite only when your release process intentionally keeps a single replaceable build reference.

</details>

<details>

<summary>Can I change an APK folder into an IPA folder?</summary>

No. The upload type is locked after folder creation. Create a separate IPA folder and upload the iOS build there.

</details>

Next, [create and run a mobile test](/mobile-testing/creating-mobile-tests.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://learning.contextqa.com/mobile-testing/uploading-apps.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
