# Introduction

Welcome to Device Farm, your all-in-one platform for manual and automated testing on real devices. Device Farm provides developers with a powerful testing environment to ensure the quality and performance of their applications across a wide range of devices and configurations.

### **Key Features**

* **Access to Real Devices & Cloud Farm:** Device Farm offers a diverse catalog of real Android and iOS smartphones, tablets, as well as Cloud Devices (AWS Device Farm integration), allowing you to test applications across physical hardware and cloud instances.
* **Manual Testing with Modern Workspace:** Interactively test devices with real-time WebRTC streaming, mouse and touch gestures, hardware controls, and a split-pane layout for concurrent log and vitals analysis.
* **In-Session App Management:** Upload and install new applications (`.apk`, `.ipa`, `.apks`, `.aab`) on-the-fly directly inside an active testing session without disconnecting.
* **Automated Testing with Appium:** Automate your test suites using modern Appium (v1 & v2) across Java, Python, and JavaScript frameworks, complete with live execution preview and live Appium logs streaming.
* **Element Explorer & XPath Tester:** Inspect UI elements, view full XML DOM hierarchies, highlight components on an interactive canvas, and verify XPath expressions live.
* **Comprehensive Test Reports & Vitals:** Generate rich reports containing time-series device vitals (CPU, Memory, Network) with CSV/PNG export, device and Appium logs, full video recordings, and screenshots.
* **Enterprise Collaboration & Security:** Integrated Jira bug reporting (with sub-tasks and Xray test integration), secure Project and User API tokens, and custom network profiles.

> Experience Device Farm right away by visiting [**Device Farm**](https://www.qyrus.com/solutions/device-farm-testing/).

***

## **User Guide**

1. [**Getting Started**](/device-farm/getting-started#getting-started)
   * [Top Navigation Bar (Navbar)](/device-farm/getting-started#top-navigation-bar-navbar)
   * [Interactive Product Tour Guide](/device-farm/getting-started#interactive-product-tour-guide)
   * [Navigating the Dashboard & Dashboard Details](/device-farm/getting-started#navigating-the-dashboard--dashboard-details)
   * [Navigating to Projects](/device-farm/getting-started#navigating-to-projects)
   * [Navigating to History & Filter Details](/device-farm/getting-started#navigating-to-history-sessions-summary--filter-details)
   * [Accessing Real Devices](/device-farm/getting-started#accessing-real-devices)
   * [Accessing Real Browsers](/device-farm/getting-started#accessing-real-browsers)
   * [Supported Browsers and Devices](/device-farm/supported-browser-and-device#supported-devices-and-browsers-list)
2. [**Project Creation and Setup**](/device-farm/project-creation-and-setup#project-creation--setup)
   * [Creating a Project](/device-farm/project-creation-and-setup#creating-a-project)
   * [Searching & Managing Projects](/device-farm/project-creation-and-setup#searching--managing-projects)
   * [Inside Project (Tests, Devices, Apps, Reports, Integrations, Filters)](/device-farm/project-creation-and-setup#inside-project-project-workspace)
   * [Application Management (Upload & Multipart)](/device-farm/project-creation-and-setup#application-management)
   * [Authentication Management (Project & User API Tokens)](/device-farm/project-creation-and-setup#authentication-management)
   * [Integrations Management (Jira & Xray)](/device-farm/project-creation-and-setup#integrations-management)
   * [Network Profiles Management (Presets & Custom)](/device-farm/project-creation-and-setup#network-profiles-management)
   * [Remote Devices Management](/device-farm/project-creation-and-setup#remote-devices-management)
   * [Swagger Documentation](/device-farm/project-creation-and-setup#swagger-documentation)
3. [**Running Manual Tests**](/device-farm/manual#manual-testing)
   * [Creating a Manual Device Session](/device-farm/manual#creating-a-manual-session)
   * [New Split-Pane Workspace vs Classic View](/device-farm/manual#workspace-layout)
   * [Navigation & Control Bar Tools](/device-farm/manual#navigation-bar)
   * [In-Session App Installation](/device-farm/manual#in-session-app-installation)
   * [Send Keys and Keyboard Capture](/device-farm/manual#send-keys-and-keyboard-capture)
   * [Device Logs & Live Streaming](/device-farm/manual#device-logs)
   * [Network Shaping & Wi-Fi Simulation](/device-farm/manual#network-shaping)
   * [Creating a Manual Browser Session](/device-farm/manual#creating-a-manual-browser-session)
4. [**Running Automated Tests**](/device-farm/automation#running-automation-session)
   * [Setting Up Automated Tests](/device-farm/automation#setting-up-automated-tests)
   * [Configuring Test Parameters & JSON Capabilities](/device-farm/automation#configuring-test-parameters)
   * [Code Examples (Java, Python, JavaScript)](/device-farm/automation#code-examples)
   * [Cloud Device Farm (AWS) Automation](/device-farm/automation#cloud-device-farm-automation)
   * [Running and Managing Automated Tests](/device-farm/automation#running-and-managing-automated-tests)
5. [**Test Reports and Analysis**](/device-farm/test-reports-and-analysis#test-reports)
   * [Steps to View Reports](/device-farm/test-reports-and-analysis#steps-to-view-reports)
   * [Viewing Device Vitals (CPU, Memory, Network Graphs & CSV Export)](/device-farm/test-reports-and-analysis#viewing-device-vitals)
   * [Accessing Logs, Screenshots & Video](/device-farm/test-reports-and-analysis#accessing-logs-screenshots--video)
   * [Sharing Reports via Email](/device-farm/test-reports-and-analysis#steps-to-view-reports)
6. [**Collaboration and Sharing**](/device-farm/integrations)
   * [Integrations with Collaboration Tools (Jira & Xray)](/device-farm/integrations#integrations-with-collaboration-tools)
7. [**Troubleshooting and FAQs**](/device-farm/faq#frequently-asked-questions-faq)
   * [Frequently Asked Questions](/device-farm/faq#frequently-asked-questions-faq)
8. **Advanced Features**
   * [App Upload / Application Management](/device-farm/project-creation-and-setup#application-management)
   * [In-Session App Installer](/device-farm/manual#in-session-app-installation)
   * [File Upload to Remote Storage](/device-farm/file-upload#1-introduction)
   * [Biometrics Bypass](/device-farm/biometrics#1-introduction) (**BETA**)
   * [Element Explorer & XPath Tester](/device-farm/element-explorer#element-explorer-feature-for-appium-automation-testing)
   * [Network Shaping](/device-farm/manual#network-shaping)
   * [Interrupt Testing (Call & SMS)](/device-farm/interrupt#interrupts)
9. **API Documentation**
   * [Accessing Device Farm via APIs](/device-farm/project-creation-and-setup#swagger-documentation)
   * [API Authentication & Token Management](/device-farm/project-creation-and-setup#authentication-management)
10. **AI Session**
    * [Record for Automation](/device-farm/ai-session/record-for-automation)
    * [Run a Session Without an App](/device-farm/ai-session/run-a-session)
    * [Upload an App to a Session](/device-farm/ai-session/upload-an-app)
    * [Run a Web Session](/device-farm/ai-session/run-a-session-with-web)
    * [Understand Agent Execution](/device-farm/ai-session/understand-agent-execution)
    * [Save a Session as a Project Test](/device-farm/ai-session/save-a-session-as-a-project-test)
    * [View Session Reports](/device-farm/ai-session/view-session-reports)
    * [Re-run a Session and View Its Reports](/device-farm/ai-session/rerun-a-session)
    * [Configure Jira and TestRail](/device-farm/ai-session/configure-jira-and-testrail)
    * [Manage Projects and Tests](/device-farm/ai-session/manage-projects-and-tests)
    * [Analyze Session Activity](/device-farm/ai-session/analyze-session-activity)
    * [Qyrion CLI](/device-farm/ai-session/qyrion-cli)
11. **AI Session**
    * [Run a Session Without an App](/device-farm/ai-session/run-a-session)
    * [Upload an App to a Session](/device-farm/ai-session/upload-an-app)
    * [Run a Web Session](/device-farm/ai-session/run-a-session-with-web)
    * [Understand Agent Execution](/device-farm/ai-session/understand-agent-execution)
    * [Save a Session as a Project Test](/device-farm/ai-session/save-a-session-as-a-project-test)
    * [View Session Reports](/device-farm/ai-session/view-session-reports)
    * [Re-run a Session and View Its Reports](/device-farm/ai-session/rerun-a-session)
    * [Configure Jira and TestRail](/device-farm/ai-session/configure-jira-and-testrail)
    * [Manage Projects and Tests](/device-farm/ai-session/manage-projects-and-tests)
    * [Analyze Session Activity](/device-farm/ai-session/analyze-session-activity)
    * [Record for Automation](/device-farm/ai-session/record-for-automation)
    * [Qyrion CLI](/device-farm/ai-session/qyrion-cli)
    * [AI Session FAQs](/device-farm/ai-session/aisession-faqs)

### Intended Audience

Device Farm caters to a wide range of users, including:

* **Developers:** Test your applications on various devices and configurations to ensure they work flawlessly across the spectrum.
* **Quality Assurance Teams:** Conduct thorough testing to catch bugs, identify performance bottlenecks, and ensure a high-quality user experience.
* **Testers:** Simulate user interactions on real devices, ensuring your app's functionality and user interface are up to the mark.

Whether you're a solo developer, a part of a development team, or a dedicated tester, Device Farm is designed to streamline your testing processes and help you deliver robust applications to your users.


# Project Creation & Setup

* [Project Setup & Configuration](#project-setup--configuration)
  * [Application Management](#application-management)
  * [Authentication Management](#authentication-management)
  * [Integrations Management](#integrations-management)
  * [Network Profiles Management](#network-profiles-management)
  * [Remote Devices Management](#remote-devices-management)
  * [Swagger Documentation](#swagger-documentation)

## **Project Setup & Configuration**

Click the **‘Project Setup’** button on any project card to configure foundational settings across Applications, Tokens, Integrations, Network Profiles, Remote Devices, and Swagger API Documentation.

***

### **Application Management**

The Application Management screen allows you to upload, organize, and manage mobile application binaries for testing on the Device Farm platform.

#### Supported Application Types:

* **APK**: Android Package files (`.apk`)
* **IPA**: iOS Application Archive files (`.ipa`)
* **APKS**: Android Package Set files (`.apks`)
* **AAB**: Android App Bundle files (`.aab`)

#### 1. Uploading Application Files:

* Navigate to the **Application Files** tab inside Project Setup.
* Click on the **‘Upload File’** button.
* Choose your binary file or use the drag-and-drop area.
* *Multipart Upload:* The platform automatically utilizes optimized multipart upload strategies for large build files to ensure fast and resilient uploads.
* A progress bar tracks the upload progress in real time.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9a75a0b372221a452ab34e362d7be7494947a9fc%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.004.png?alt=media) ![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-fbe5ecb2ae479a968b887d56c8a1041899272cac%2FUpload-File.gif?alt=media)

#### 2. Managing Uploaded Applications:

* Uploaded binaries appear in the applications table with details such as File Name, Artifact Type, Size, Upload Date, and Status.
* **Upload Status:** When a file is first uploaded, its status shows as `Processing`. Once internal validation and activity extraction are complete, the status turns to `Completed`.
* **Deleting Application Files:** You can delete an uploaded file by clicking the Delete icon. A confirmation modal will ask for confirmation before permanent deletion.

> [Click here to learn more about using uploaded applications in Manual Testing](/device-farm/manual#choose-the-application-to-test-from-the-dropdown-list)

***

### **Authentication Management**

Authentication is critical for securing your Qyrus Device Farm account and protecting your testing data.

#### 1. Token Types:

* **Project Token:** A unique key representing the specific Project. This token is required when executing automation test scripts (such as Appium capabilities) and making project-scoped REST API calls.
* **User Token (API Key):** A unique key tied to your user account. It is passed as the `Custom` header in API requests and Appium authentication capabilities.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-08ba0bec5367e987b90192675389092590b6d43f%2FDF-auth-page.png?alt=media)

#### 2. Enhanced API Security & User Token Management:

* **Consolidated User Tokens:** User API tokens are centrally managed. You can view, activate, deactivate, or refresh them from your **Profile** page or the Authentication tab.
* **Active / Inactive Status Switch:** You can toggle your user token status between *Active* and *Inactive* at any time using the status switch.
* **Deprecation of Basic Auth:** Basic Auth (username/password) has been phased out in favor of secure token-based authentication.

#### 3. Token Generation & Regeneration Safety Modal:

* **Generate Token:** Click **‘Generate Token’** to create your initial token.
* **Copy Token:** Use the **‘Copy Token’** button to quickly copy the token to your clipboard.
* **Regenerate Token Safety Confirmation:** To regenerate a token, click the refresh button. A security confirmation modal will appear explaining that your existing key will be permanently invalidated. You must type `"Generate"` into the confirmation field before the key is regenerated.

***

### **Integrations Management**

Integrations empower you to streamline bug reporting and collaborate efficiently. By connecting Qyrus Device Farm with your issue tracking systems, you can create defect tickets directly from active sessions and test reports.

#### Steps to Configure Jira Integration:

1. Navigate to **Project Setup** > **Integrations** tab, or access the centralized Jira configuration directly from the global integrations dashboard.
2. Click on **Add Configuration**.
3. Fill in the integration details:
   * **Configuration Name:** Enter a descriptive identifier for this connection.
   * **Domain URL:** Enter the valid base URL of your Jira instance (e.g., `https://yourdomain.atlassian.net`).
   * **User Email & API Token:** Provide your Jira user email and API token ([Click here to learn how to generate an Atlassian API Token](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)).
4. **Test Connection:** Click **‘Test Connection’** to verify credentials and connectivity with Jira.
5. **Team & Project Mapping:** Select the Team, Service Store, and Projects that will utilize this Jira configuration.
6. Click **Create / Update Configuration** to save.

![Jira Configuration From setup Page](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-2906007bebe04114804b480b9be204917c8a29a2%2Fdf_jira_config.gif?alt=media) ![Jira Configuration From Dashboard](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e36ca8e1826b7be315045f03035b151a93a2954b%2Fdashboard_jira_config.gif?alt=media)

***

### **Network Profiles Management**

Network profiles in Qyrus Device Farm allow you to simulate different real-world network conditions. You can control bandwidth, latency (delay), and packet loss to ensure your mobile apps perform reliably under varying network conditions.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-15bf6afd4f5cb1db2e6e4641b71cabf9576b142f%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.008.png?alt=media) ![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f672f12d05fbc2b7cd2f900638a3b21b5b0c942e%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.009.png?alt=media)

#### 1. Predefined Presets vs Custom Profiles:

* **Preset Profiles:** Built-in standard profiles representing typical network environments (2G, 3G, 4G, Good, Poor, High Latency).
* **Custom Profiles:** Create custom network profiles tailored to your specific test scenarios.

#### 2. Creating a Custom Network Profile:

1. In the **Network Profiles** tab, click **‘New Profile’**.
2. Enter the profile parameters:
   * **Profile Name (Required):** A descriptive name for the profile.
   * **Bandwidth (Required):** Set the connection speed (in `mbps`, range: 1 to 100).
   * **Delay (Required):** Define the simulated latency (in `ms`, range: 0 to 1000).
   * **Packet Loss (Required):** Specify the packet loss percentage (`%`, range: 0 to 100).
3. Click **‘Add Profile’** to save.

#### 3. Editing and Deleting Profiles:

* Click the edit or delete icon next to any custom profile in the network profiles table to adjust its values or remove it.

***

### **Remote Devices Management**

Remote devices allow you to generate JSON capability configurations for Appium automation sessions and connect devices directly to your automated testing scripts.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-c205f68f887ca0deeaf8bb30d603234df18f86da%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.010.png?alt=media)

#### Steps to Generate JSON Data for Automation:

1. **Filter and Select Device:** Filter by **Region** and **Platform** (`All`, `iOS`, `Android`, or `Cloud`). Select the target device.
2. **Select Application File:** Choose the uploaded binary from the dropdown. For Android, the system automatically detects the **App Package** and launch **App Activity**. Click **‘Copy URL’** to copy the binary endpoint.
3. **Generate JSON Capabilities:** Click **‘Generate JSON’** (or *‘Generate Payload JSON’* for cloud devices). Copy the formatted JSON capabilities into your test framework.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9d18d12e2b0b64c82647ffbbddeb734df3971cc2%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.011.png?alt=media)

#### Cloud Device Farm (AWS) Automation Workflow:

* **Start Session Endpoint:** `POST /device-farm/automation/provider/start?projectId={projectId}`
* **Stop Session Endpoint:** `POST /device-farm/automation/provider/stop?projectId={projectId}`

***

### **Swagger Documentation**

Device Farm provides an interactive Swagger UI built right into the platform. This documentation exposes all available REST APIs for developers to automate session management, network speed adjustments, device queries, and artifacts management.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-790d4a1058c45391cfc28a59ab1be21f8c7e27de%2FSwagger.png?alt=media) ![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-2b26270c5d188fd2214c7741900929c725655ba0%2FSwagger-1.png?alt=media)

#### Key Authentication Headers and Parameters:

* **`projectId` / `projectUUID`:** Your unique Project Token.
* **`Custom`:** Your User API Token.
* **`sessionId` / `sessionUUID`:** The unique session identifier (in Appium: `driver.getSessionId()`).
* **`profileName`:** Name of the network profile to apply.

#### Interactive API Testing:

* Click on any endpoint in the Swagger Docs tab.
* Click **‘Try it out’**, enter parameters, and click **‘Execute’** to test API behavior and view live response payloads.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-29741e83d930cb6ad3d9e53041528b60951edded%2FSwagger.gif?alt=media)

***


# Getting Started

Welcome to Qyrus Device Farm! This section guides you through navigating the platform, utilizing the top navigation bar, taking the interactive product tour, managing projects, filtering execution history, and launching manual, automated, and AI-powered testing sessions on real mobile hardware and desktop browsers.

***

## Top Navigation Bar (Navbar)

The top navigation bar provides global controls, profile management, and quick access to platform tools across all views in Qyrus Device Farm:

* **Service Switcher:** Quickly switch between Qyrus testing services (*Device Farm*, *Web Testing*, *API Testing*, *Mobile Testing*, *Test Management*).
* **Team & Workspace Selector:** Switch between your assigned team workspaces and organizations.
* **Breadcrumbs:** Track your current location within the platform hierarchy (e.g., `Device Farm > Projects > Project Name > Sessions`) and click any ancestor to navigate back instantly.
* **Product Tour Guide Icon:** Click the glowing **Tour Guide** icon on the top right to start or restart the interactive product tour.
* **Notifications & Status Bell:** View real-time platform alerts, build upload completion notices, and test execution status alerts.
* **User Profile & Settings:** Access your profile, manage User API Tokens, toggle token states, configure integrations, view team permissions, and log out.

***

## Interactive Product Tour Guide

For first-time users or team members exploring new features, Qyrus Device Farm includes a built-in **Interactive Tour Guide**:

* **Starting the Tour:** Click the **Product Tour** icon in the top navigation bar (or choose *Product Tour* from the help menu).
* **Guided Walkthrough:** An interactive step-by-step tooltip overlay highlights key areas of the user interface:
  1. Creating and managing testing projects.
  2. Uploading application binaries (`.apk`, `.ipa`, `.apks`, `.aab`).
  3. Configuring Project Tokens and User API Keys.
  4. Launching Manual, Automation, and AI testing sessions.
  5. Applying network shaping profiles and device filters.
  6. Reviewing comprehensive execution reports, vitals graphs, and logs.
* **Dismiss & Resume:** You can exit the tour at any point and relaunch it anytime from the top navigation bar.

***

## Navigating the Dashboard & Dashboard Details

Select the **`Device farm`** service from the top service switcher or left sidebar to open the Device Farm Dashboard.

> <img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-5d8a1d0a85166e7731e3f20d0d4e70f86312942d%2Fnavigating-into-devicefarm-service.gif?alt=media" alt="navigating-into-devicefarm-service" data-size="original">

### Key Dashboard Sections & Metrics:

* **Projects Summary:** Overview of active projects, total test suites, and repository assets.
* **Device Fleet Status:** Real-time visibility into available, busy, and maintenance-state physical devices across global regions.
* **Recent Activity & Executions:** Quick summary cards displaying recent manual and automated test outcomes.

***

## Navigating to Projects

The **Projects** page is the starting hub for organizing your testing activities:

1. **Search Projects:** Use the search bar (`Search Project`) to instantly filter projects by name or description.
2. **Create New Project:** Click the **`New Project`** button to create a new testing workspace.
3. **Project Cards:** Each card displays:
   * Project Name & Description
   * Quick action buttons: **`Sessions`** (open session history and launch tests) and **`Project Setup`** (manage apps, tokens, network profiles, and integrations).
   * Project Edit (pencil) and Delete (trash) actions.

***

## Navigating to History (Sessions Summary) & Filter Details

Click on the **`Sessions`** button on any project card to open the **Sessions History & Execution Summary** dashboard.

![Sessions Summary History Dashboard](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-6abe52c3d9a72694be860d628783afa5074f2d48%2Fnew-design-summary-page.png?alt=media)

### 1. Execution Tabs:

* **Manual Tab:** Displays history and logs for all interactive manual testing sessions and Object Spy sessions.
* **Automation Tab:** Displays all Appium automated test executions, live execution preview cards, and Appium logs.

### 2. Search & Pagination:

* **Quick Search:** Type in the `Search Session...` input box to instantly filter table rows by session name, device, or user.
* **Items Per Page:** Adjust pagination size using the dropdown (`10`, `20`, `50`, or `100` items per page).

### 3. Comprehensive Filter Details:

Click the **`Apply Filters`** button to open the advanced multi-criteria filter menu:

* **Filter By Date Range:**
  * Click the interactive Date Range Picker calendar to select custom `Start Date` and `End Date`.
  * Filter across preset windows (`All`, `Last 24 Hours`, `Last 7 Days`, `Last 30 Days`).
* **Filter By Region:** Select specific cloud or private data center regions (`US`, `UK/EU`, `IND/AP`, or `All`).
* **Filter By Platform:** Filter by operating system (`Android`, `iOS`, or `Web`).
* **Filter By Session Name:** Search by exact or partial session name.
* **Filter By Device:** Filter executions by device model name (e.g., `Samsung Galaxy S24`, `iPhone 15 Pro`).
* **Filter By User Name:** Filter test executions triggered by specific team members or service accounts.
* **Filter By Application:** Filter by specific application binary package name or build file.
* **Reset & Apply:** Click **Reset** to clear all active filter parameters, or click **Apply** to refresh the grid immediately.

***

## Accessing Real Devices

1. **Select a Project:** Choose the project you want to test by clicking on the **`Sessions`** button on the target project card.

   > **IMPORTANT:** Ensure that the **`Mobile Devices`** tab is highlighted for the **`Mobile Session`** button to be visible.
2. **Choose a Device:** Click on the **`Mobile Session`** button inside the selected project.
   * Filter by **Platform** (Android / iOS), **Region** (Data Center), **Device Type** (Real / Cloud), or **Brand**.
   * Review device availability status (`Available`, `Busy`, `Maintenance`) and hardware specs (CPU, RAM, Resolution).
3. **Configure Session Settings:**
   * Enter a **Session Name**.
   * (Optional) Select an uploaded application binary to install automatically on session launch.
   * (Optional) Enable **Element Explorer**, **Biometrics**, or **Reset App** toggles based on your test requirements.
4. **Start Testing:** Click **`Start Session`** to launch the interactive live stream.
5. **End Testing:** Click the **`Disconnect`** (power) button once testing is complete to release the device and generate detailed test reports.

> <img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7af96e408c54196fa40f94d0f09b639e8ea797da%2Fgetting-started-manual-session.gif?alt=media" alt="Getting-started-manual-session" data-size="original">

***

## Accessing Real Browsers

1. **Select a Project:** Choose your project by clicking on the **`Sessions`** button.
2. **Switch to Web Browsers:** Click on the **`Web Browsers`** tab so the browser selection interface is displayed.

   > **IMPORTANT:** Make sure that the **`Web Browsers`** tab is highlighted for the **`Browser Sessions`** button to be visible.
3. **Choose a Browser:** Click **`Browser Sessions`** and select your desired browser (Chrome, Firefox, Safari, Edge) and version.
4. **Start Testing:** Enter a **Session Name** and click **`Start Session`** to begin interacting with the browser.
5. **End Testing:** Click **`Disconnect`** on the draggable control bar when your testing is complete.

> <img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-39e2ef2eb253042cdb5d2bf02514e546e64a4c0b%2Fgetting-started-browser-session.gif?alt=media" alt="Getting-started-manual-session" data-size="original">

***

## Supported Devices and Browsers

Device Farm provides extensive coverage across modern mobile device models, operating systems, and desktop browsers.

### Mobile Devices:

| Device Platform | Supported Form Factors                   |
| --------------- | ---------------------------------------- |
| Android         | Smartphones, Tablets (Galaxy Tab series) |
| iOS             | iPhones, iPads (Pro, Air, Mini)          |

### Desktop Browsers:

| Browsers         | Supported Versions | Operating System |
| ---------------- | ------------------ | ---------------- |
| Google Chrome    | Latest, Latest-1   | Windows, Linux   |
| Mozilla Firefox  | Latest, Latest-1   | Windows, Linux   |
| Apple Safari     | Latest, Latest-1   | macOS            |
| Microsoft Edge   | Latest, Latest-1   | Windows          |
| Samsung Internet | Latest, Latest-1   | Android Web      |

> For the full catalog of supported devices and DNS whitelisting guidelines, refer to the [Supported Devices and Browsers List](/device-farm/supported-browser-and-device).

***


# Manual Testing

Interactively test and debug mobile applications and web browsers in real time. Gesture, swipe, tap, type, inspect, and perform comprehensive testing on real hardware directly from your desktop browser.

> **Note:** You can enable **Element Explorer** during session setup or launch to inspect UI elements and generate Appium locators concurrently while performing manual tests.

***

### Prerequisites:

* Having a project created [(click here for more information on project creation)](/device-farm/project-creation-and-setup#creating-a-project)
* (Optional) Uploading an application binary file (`.apk`, `.ipa`, `.apks`, `.aab`) [(click here for more information on uploading an application)](/device-farm/project-creation-and-setup#application-management)

***

## Creating a Manual Device Session

1. **Navigate to Sessions:** Under **Projects**, click on the **“Sessions”** button on your target project card.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-77d53db14717cd2ae1fa7ad2fb3ca8bfb41166a2%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.013.png?alt=media)

2. **Click on “Mobile Session”:**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-afc26233a5dc9fd2c65a559ceea0fe956cf9c486%2Fmanual-new-mobile-session.png?alt=media)

3. **Choose and Filter Devices:**
   * Filter by **Platform** (`Android` or `iOS`).
   * Filter by **Region** (US, UK/EU, India) to ensure low-latency connectivity.
   * Filter by **Device Type** (Real Device or Cloud / AWS Device Farm).
   * Filter by **Brand** (Samsung, Apple, Google, OnePlus, Xiaomi, Huawei, etc.) or search by device model name.
   * Review device details on each card:
     * **CPU, RAM, Resolution, and OS Version**
     * **Dedicated vs Shared Device** indicator icons
     * **Availability Status:** `Available` (ready to test), `Busy` (in use), or `Maintenance`
     * **Device User Info:** For busy devices on Team or Enterprise tiers, hover/click the user icon to see who is currently using the device.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-be3d8589b8bce1784526ddb9cbe9a264ba567349%2Fmanual-device-selection.png?alt=media)

4. **Configure Session Settings:**
   * **Session Name (Required):** Enter a descriptive name for your testing session.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b2109313cf3fcf9e8efcb893f869da88e8fc1246%2Fmanual-enter-session-name-device.png?alt=media)

* **Application File (Optional):** Choose an uploaded application binary from the dropdown. The app will be automatically installed when the session starts.

  > *Note:* You can also install or switch applications later inside an active session using the **In-Session App Installer**.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1797294622080676bbfed7188ee29f576152e5a2%2Fmanual-choose-application-to-test.png?alt=media)

* **Element Explorer Toggle:** Enable this toggle to start the session in Object Spy / Element Explorer mode for inspecting UI attributes and testing XPath locators.
* **Biometrics Bypass Toggle (Beta):** Enable this toggle to bypass fingerprint and Face ID prompts for instrumentable debug builds.
* **Reset App Toggle:** Automatically clear application user cache and data before starting.
* **Switch to Old Device Interface:** Toggle if you prefer the classic legacy single-pane view over the modern split-pane workspace.

5. **Click “Start Session”:**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-cdaa28f5a2ed474e513409b17627089b2315df77%2Fmanual-device-start-session.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1e3a65d38deb7f0b90a2c4fddf06ba8104545394%2FInstalling-App.gif?alt=media)

***

## Workspace Layout

Device Farm provides a modern **Split-Pane Workspace** designed for maximum productivity:

* **Left Pane (Device Stream & Quick Controls):** Renders the ultra-responsive, low-latency WebRTC video stream of the physical device with touch interaction overlay and collapsible device control bar.
* **Right Pane (Metrics, Logs & Info):** Displays live device information (OS, CPU architecture, RAM, Resolution, Device UUID), real-time streaming **Device Logs**, and **Appium Logs**.
* **Split Resizing:** Drag the divider between panes to customize the view to your screen dimensions.

![Modern Split-Pane Device Session (iOS)](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e30d186ef9ae9e7cb755d2fa6b1cc919f08754dc%2FIOS-device-with-logs.png?alt=media)

***

## Navigation & Control Bar

Next to the interactive device screen is a control bar providing hardware, software, and debugging controls.

### Device & Session Info:

The top of the session panel provides complete device specifications and runtime details:

![Session Info Card](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-32c46bb2d05f46b22230c2dc58705e4d5c4dcaa4%2Fsession-info.png?alt=media)

* **Session Name:** Name specified during test initiation.
* **Device Name & Region:** Device model and hosting data center location.
* **Hardware Specs:** OS Version, CPU Architecture, RAM, Resolution, and unique Device ID.

***

### Control Bar Actions:

* **Collapse / Expand Bar:** Click the chevron button to collapse the control bar into icon-only mode or expand it with full labels.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-825dfad87df2821f59ebfaea160e2e1568b9dc44%2Fdevice-sendKey-action.png?alt=media) **Send Keys / Clipboard:** Click **Send Keys** to open the clipboard text input modal. Type or paste long strings, URLs, or credentials and click *Send as Keys* to type them directly into the focused input field on the device.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d3234945592a3b6d0814a53911b7a1b6587e690b%2Fdevice-keyboard-action.png?alt=media) **Capture Keyboard:** Toggle the physical keyboard capture. When enabled, keystrokes typed on your computer keyboard are sent directly to the remote device without using the on-screen soft keyboard.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d2d077de6772314b6bee5046f8c2001064bec248%2Fdevice-ss-action.png?alt=media) **Screenshot:** Take an instant screenshot of the device display. Captured images are stored in the test report and can be downloaded immediately.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-90ef018c54a13392782cd3fdcd7f7cf10da20105%2Fdevice-rotate-action.png?alt=media) **Rotate Device (Orientation):** Click **Rotate** to toggle device orientation between Portrait and Landscape modes.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-754b4bfe1dd47ebcb48290f827e775903cb75c10%2Fdevice-fileUpload-action.png?alt=media) **File Upload:** Click **File Upload** to transfer files from your computer directly into the remote device storage (`Downloads` folder on Android; `Files > On My iPhone > Chrome` on iOS).
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9b5683ab60a592d6166d2b401658e2c18ddc4c25%2Fdevice-installApp-action.png?alt=media) **In-Session App Installation:** Click **Install App** to open the in-session installer. Upload a new `.apk`, `.ipa`, `.apks`, or `.aab` file or choose an existing uploaded app to deploy onto the device on-the-fly without disconnecting.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-52bceb712b3b520954e1b20fa52aa2daaa1ad829%2Fdevice-createJiraTicket-action.png?alt=media) **Create Jira Ticket:** Click the **Jira** icon to open the integrated bug reporting modal. Select your Jira project, issue type (Bug, Task, Sub-task with Parent ID, or Xray test category), enter Summary & Description, choose Priority, and submit. The current device screenshot is automatically attached.
* **Phone Call & SMS Interrupts:** For telephony-enabled devices with an active SIM/number:
  * **Trigger Call:** Simulates an incoming voice call to verify how your app handles call interruptions.
  * **Trigger SMS:** Simulates an incoming text message notification.
* **Biometrics Bypass:** For supported apps, click the fingerprint icon to trigger biometric authentication bypass dynamically during testing.
* **Lock & Unlock Device:** Power off / lock the device screen, or wake / unlock the device (iOS & Android).
* **Volume Controls:** Hardware **Volume Up** and **Volume Down** buttons.
* **Hardware Navigation Buttons:**
  * **Back (`KEYCODE_BACK`):** Navigate back to the previous screen.
  * **Home (`KEYCODE_HOME`):** Return to the home screen.
  * **Overview / App Switcher (`KEYCODE_APP_SWITCH`):** Open the recent applications switcher (Android).
  * ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-363b89ad0355c9e5d91ddcfea7abcf6f72245853%2Fdevice-terminateApp-action.png?alt=media) **Terminate App:** Force terminate the currently running foreground application (iOS).
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-0d7146d8c9d5413265cad4dd077e4316e27513f2%2Fdevice-wifi-action.png?alt=media) **Network Shaping & Wi-Fi Selector:** Choose from preset network profiles (2G, 3G, 4G, Good, Poor) or custom profiles to simulate varying bandwidth, latency, and packet loss. You can also click *Add..* to configure and apply a new network profile on the fly.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-8d0ccda3542073bdeb24debb8b2a4326d49dac42%2Fdevice-videoResolution-action.png?alt=media) **Video Resolution Selector:** For WebRTC iOS sessions, choose your desired stream quality (e.g., `Auto`, `720p`, `1080p`).
* **Zoom Controls:** Use the **Zoom In (+)**, **Zoom Out (-)**, and **Reset Zoom** buttons to adjust device viewport scaling.
* **Disconnect Session:** Click the red power button to disconnect from the device. A confirmation modal will appear. Once confirmed, the session is cleanly released and the comprehensive test report is generated.

***

### **In-Session App Installation**

The in-session app installer allows testers to test multiple versions of an app or test app upgrades without losing the session connection.

1. Click **Install App** on the control bar.
2. In the dialog, you can:
   * **Upload New App:** Drag and drop or browse for a new `.apk`, `.ipa`, `.apks`, or `.aab` binary. The file will upload via fast multipart transfer.
   * **Choose Existing App:** Select any completed application from your project repository.
3. Click **Install** to deploy and launch the application on the remote device.

![In-Session App Installation Dialog](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-bce36c1521926e7e5059282d8c71a7d116b55ae0%2Fin-session-app-install.png?alt=media)

***

### **Device Logs**

Live logs stream system-level messages, application traces, and crash stack traces in real time from the moment the device connects.

Click on **`Show Logs`** to open the logs panel and **`Hide Logs`** to collapse it.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d0f495ec103284d718da1e2c92904bdf5dc4ed4d%2Fmanual-show-devicelogs.gif?alt=media)

![Device Logs Stream](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b5c284e0c17f1ae5ca6524eaed0cd6f3ea2f17cc%2Fdevice-logs.png?alt=media)

#### Log Viewer Controls:

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1b15104992d9f6abc048ae63c75961cfc58c58bd%2Fdevice-logs-btns.png?alt=media)

* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f0d8e826681a26f00eb902aac3774b6e9df3d4bc%2Fclear-logs-btns.png?alt=media) **Clear Logs:** Clears the current log console buffer.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-813a7afc36e7d357f196333331520bb4a9a22cd4%2Fdevice-lock-btn.png?alt=media) **Pause / Lock Logs:** Pauses live log autoscroll so you can inspect a specific stack trace while the session continues.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-622d74fae1087f8f4e900dc6fd8a8f2a094bf2e4%2Frefresh-btn.png?alt=media) **Refresh Logs:** Refreshes log buffer from the device daemon.
* ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-0727dd05ac6d34570826b15edc9fde8d0c719d06%2Fdisconnect-btn.png?alt=media) **Disconnect Logs:** Pauses log stream to optimize network bandwidth.

***

### **Generate JSON Capabilities**

Click **Generate JSON** on the session interface to view and export the current session configuration, device UDID, and authentication payload formatted for Appium automation scripts.

![Generate JSON Payload](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-16da745dde5290c7fb669bb9a2371b1b4ff55600%2Fgenerate-json-ios.png?alt=media)

***

### **Network Shaping**

Network shaping allows you to simulate real-world mobile network conditions by adjusting bandwidth, latency (delay), and packet loss.

Select a preset network profile or choose a custom-created network profile by clicking on the Wi-Fi dropdown menu on the control bar. [Click here to view instructions on creating custom network profiles.](/device-farm/project-creation-and-setup#network-profiles-management)

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-8259484ca1a863b8cc830baf5c9f738d0f746f47%2Fmanual-network-shaping.gif?alt=media)

***

## Creating a Manual Browser Session

Device Farm enables real desktop browser testing across Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, and Samsung Internet.

1. **Under Projects, click on “Sessions” for your project**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-77d53db14717cd2ae1fa7ad2fb3ca8bfb41166a2%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.013.png?alt=media)

2. **Click on “Web Browsers” tab**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-16858d0282cd7fde1dc0d5837cb38a8fefaf24a7%2Fclick-on-web-browser.png?alt=media)

3. **Click on “Browser Sessions”**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1c6c4ae001c65531197cafe76b08ea3dfbbf218f%2Fclick-on-browser-sessions-btn.png?alt=media)

4. **Choose a browser from the list (Chrome, Firefox, Safari, Edge)**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e209eb4e880da9435f98adad4f225ba26869eb6f%2Fselect-a-browser.png?alt=media)

5. **Enter a “Session Name” and click “Start Session”**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f0e0eadf0eee21a15961ebeae14d07447675f3b3%2Fenter-browser-session-name.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-3689b50f3c8132ff626c64bec33872ec8284246c%2Fclick-on-start-session-btn.png?alt=media)

6. **Interacting with the Browser:**
   * Interact directly with web pages, test responsive breakpoints, and perform functional tests.
   * Use the draggable floating control widget to disconnect when done.
7. **End Session:** Click **Disconnect** to terminate the session and view the test execution report.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-5b303eb8977a861048a638980b8c98fe381959fe%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.031.png?alt=media)

***

### **Analyzing Test Results**

Once a manual test session is ended, review and analyze the detailed results:

* **Test Report:** Access the comprehensive test report containing full session video recording, device vitals graphs, device logs, screenshots, and metadata.\
  [**Click here to learn more about Test Reports and Analysis.**](/device-farm/test-reports-and-analysis)
* **Bug Reporting:** Document bugs directly from the report view or submit them to Jira ([Reporting Bugs](/device-farm/integrations#integrations-with-collaboration-tools)).

***


# Automation

### Running Automation Sessions

Automated testing allows you to leverage Qyrus Device Farm's real Android and iOS devices to execute your automated test scripts at scale. During and after execution, Device Farm provides comprehensive reporting that includes real-time live previews, video recordings, time-series device vitals, Appium logs, and device system logs.

***

#### Prerequisites:

* A Qyrus Device Farm project created [(click here for project creation)](/device-farm/project-creation-and-setup#creating-a-project)
* Application binary uploaded to the project [(click here for application upload)](/device-farm/project-creation-and-setup#application-management)
* **Appium:** Appium client and server (supports Appium 1.x and Appium 2.x)
* **Development Environment:**
  * **Java:** JDK 8, 11, or 17+ with an IDE (Eclipse, IntelliJ IDEA, VS Code) and build tool (Maven/Gradle).
  * **Python (Optional):** Python 3.8+ with `Appium-Python-Client` and `pytest`/`unittest`.
  * **JavaScript/TypeScript (Optional):** Node.js with WebdriverIO or `webdriverio`/`appium`.

***

### Setting Up Automated Tests

#### Creating an Automation Device Session via Quick Setup:

1. **Under Projects, click on “Sessions” for your project:**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-77d53db14717cd2ae1fa7ad2fb3ca8bfb41166a2%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.013.png?alt=media)

2. **Click on the “Automation” tab and select “Quick Setup Guide”:**

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-cf672b4edc8ca283a10e0c8ed95715e000f258ea%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.038.png?alt=media)

***

### Configuring Test Parameters & Capabilities

1. **Choose a Device:** Filter devices by region, platform (Android / iOS / Cloud), brand, or search by model.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-fcfc6ccb446a54fd24315f4c22e09fd8206ad796%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.040.png?alt=media)

2. **Select Application File:**
   * **Android:** Select the uploaded `.apk`, `.apks`, or `.aab` file. The tool automatically detects the App Package and allows selecting the initial launch **App Activity**.
   * **iOS:** Select the uploaded `.ipa` file.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-a7d0d0ede0458833af0c43c74f1835bd6ab58d7f%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.041.png?alt=media)

3. **Click “Generate JSON”:**
   * The interactive CodeMirror editor outputs the JSON capabilities formatted for your testing framework.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-59f3865d64801f85788090f55ace3eb5c128f89c%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.042.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-28c8fd05c7b3c906c0d16e7a8d633ed2e34160af%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.043.png?alt=media)

4. **Add Capabilities into Your Framework:**
   * Copy the generated capabilities and paste them into your test framework setup method.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7c952fb30920b8f04a85b3ab5299423dc7b5fbf7%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.044.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-02e8efe3436977d304d1d0235f720c54dbca529b%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.045.png?alt=media)

***

### Cloud Device Farm (AWS) Automation

For devices running on AWS Device Farm cloud infrastructure:

1. Generate the Cloud Device payload from the **Remote Devices** tab in Project Setup.
2. Start the automation session using the REST API endpoint:
   * `POST /device-farm/automation/provider/start?projectId=<ProjectToken>`
3. Execute your Appium test suite targeting the cloud endpoint.
4. Stop the session using the endpoint:
   * `POST /device-farm/automation/provider/stop?projectId=<ProjectToken>`

***

### Code Examples

#### 1. Java (TestNG & Appium)

```java
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;

public class DeviceFarmAutomation {
    private AndroidDriver driver;

    @BeforeTest
    public void setUp() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("deviceName", "<DEVICE_NAME>");
        desiredCapabilities.setCapability("platformName", "Android");
        desiredCapabilities.setCapability("automationName", "UiAutomator2");
        desiredCapabilities.setCapability("platformVersion", "<OS_VERSION>");
        desiredCapabilities.setCapability("udid", "<DEVICE_UDID>"); 
        desiredCapabilities.setCapability("app", "<APP_URL>");
        desiredCapabilities.setCapability("appium:AuthToken", "<PROJECT_TOKEN>");
        desiredCapabilities.setCapability("appium:Authentication", "<USER_API_TOKEN>");
        desiredCapabilities.setCapability("appium:SessionName", "My Automation Run");

        URL remoteUrl = new URL("https://<REGION_ENDPOINT>/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    }

    @Test
    public void testLogin() throws InterruptedException {
        System.out.println("Session ID: " + driver.getSessionId());
        Thread.sleep(5000);
        driver.findElement(By.id("com.example.app:id/username")).sendKeys("testuser");
        driver.findElement(By.id("com.example.app:id/password")).sendKeys("password123");
        driver.findElement(By.id("com.example.app:id/loginBtn")).click();
        Thread.sleep(5000);
    }

    @AfterTest
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}
```

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-64bbae8dec40b01f364c5fae887d908dab1c7978%2FAutomation-1.png?alt=media)

> **Note:** `remoteUrl`, `appium:AuthToken` (Project Token), and `appium:Authentication` (User API Token) authenticate and route your test traffic securely to the target real device.

***

#### 2. Python (Appium-Python-Client & PyTest)

```python
import pytest
from appium import webdriver
from appium.options.android import UiAutomator2Options

@pytest.fixture(scope="function")
def driver():
    options = UiAutomator2Options()
    options.platform_name = "Android"
    options.device_name = "<DEVICE_NAME>"
    options.platform_version = "<OS_VERSION>"
    options.udid = "<DEVICE_UDID>"
    options.app = "<APP_URL>"
    options.set_capability("appium:AuthToken", "<PROJECT_TOKEN>")
    options.set_capability("appium:Authentication", "<USER_API_TOKEN>")
    options.set_capability("appium:SessionName", "Python Automation Run")

    driver = webdriver.Remote("https://<REGION_ENDPOINT>/wd/hub", options=options)
    yield driver
    driver.quit()

def test_login_flow(driver):
    driver.implicitly_wait(10)
    username_field = driver.find_element(by="id", value="com.example.app:id/username")
    username_field.send_keys("testuser")
    login_button = driver.find_element(by="id", value="com.example.app:id/loginBtn")
    login_button.click()
```

***

#### 3. JavaScript / TypeScript (WebdriverIO)

```javascript
import { remote } from 'webdriverio';

const opts = {
  hostname: '<REGION_ENDPOINT_HOST>',
  path: '/wd/hub',
  protocol: 'https',
  capabilities: {
    platformName: 'Android',
    'appium:deviceName': '<DEVICE_NAME>',
    'appium:platformVersion': '<OS_VERSION>',
    'appium:udid': '<DEVICE_UDID>',
    'appium:automationName': 'UiAutomator2',
    'appium:app': '<APP_URL>',
    'appium:AuthToken': '<PROJECT_TOKEN>',
    'appium:Authentication': '<USER_API_TOKEN>',
    'appium:SessionName': 'WebdriverIO Automation Run'
  }
};

async function runTest() {
  const client = await remote(opts);
  const searchInput = await client.$('id:com.example.app:id/search');
  await searchInput.setValue('Qyrus Device Farm');
  await client.deleteSession();
}

runTest();
```

***

### Running and Managing Automated Tests

1. **Start Automated Tests:** Run your test script from your local machine, IDE, or CI/CD pipeline (Jenkins, GitHub Actions, GitLab CI).
2. **Monitor Live Execution:**
   * Switch to the **Automation** tab in the Device Farm dashboard.
   * The running test appears with a live stream preview card and real-time execution status (`Running`, `Completed`, `Failed`).

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-61a56a53abacd60c87d29b43a58f641c830761dd%2FAutomation-2.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-35c554ae4857a7e4dea7eadf1186c746decf0571%2FAutomation-3.png?alt=media)

3. **Live Appium Logs:** Click on the active session to view live Appium streaming logs to debug commands and element locators as they execute.
4. **Access Detailed Reports:** Once execution finishes, click **Show Details** to view the comprehensive test report containing Appium logs, device system logs, device vitals graphs, screenshots, and video recordings. [Learn more about Test Reports](/device-farm/test-reports-and-analysis#test-reports).

***


# Test-Reports-and-Analysis

Comprehensive test reports are a fundamental aspect of your testing workflow, providing deep, actionable insights into your test executions across manual sessions and automated Appium runs. Qyrus Device Farm generates detailed reports encompassing performance vitals, full session video recordings, screenshots, system logs, and Appium automation traces.

***

### What is Included in Test Reports:

1. **Session & Device Information:** Complete summary including session name, execution date, duration, user account, hardware specifications, and device identifiers.
2. **Interactive Device Vitals:** Performance metrics tracking CPU utilization, memory consumption, and network throughput over the session timeline, with export to CSV and PNG formats.
3. **Full Video Recording:** Complete high-definition video evidence capturing every user gesture, transition, and app response.
4. **Screenshots Gallery:** Timestamped gallery of all manual and automated screenshots captured during the session.
5. **Device System Logs:** Live system-level logs and logcat/syslog dumps capturing app events, background tasks, and error traces.
6. **Appium Logs (for Automation):** Step-by-step Appium automation command logs with HTTP request/response payloads for debugging automation failures.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e5100afd7ad63dae5ab25a38a936f0a548390d3d%2FReports-1.gif?alt=media)

***

## Steps to View Reports

1. Navigate to **Sessions** for your project.
2. In the sessions summary table (Manual or Automation tab), locate your test execution and click **â€œShow Detailsâ€**.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-74cec5f689a5d77f29b029a7fa76be294213dc18%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.046.png?alt=media) ![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-24cab7a295a886ef3cefcd1b0d553fee3ead9eb7%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.047.png?alt=media)

***

## Session Information & Email Sharing

The top section of the report provides quick metadata regarding the execution:

* **Session Name:** Name specified during test initiation.
* **Date & Region:** Timestamp of the test run and data center region where the device was hosted.
* **Session Duration:** Total active time (e.g., `0h 14m 32s`).
* **User Email:** Email ID of the tester who ran the session.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f45ea1917d3fdb596540770a08e2de608b8074ed%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.048.png?alt=media)

### Sharing Reports via Email:

1. Click the **Envelope** (Email) icon on the Session Info card.
2. Enter one or more recipient email addresses (comma-separated).
3. Click **â€œSendâ€** to dispatch a report summary link.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f6fc25101e0b951619034f9f3ea052de838c8738%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.049.png?alt=media)

***

## Device Information

The **Device Info** card outlines the hardware and platform specs of the host device:

* **CPU Architecture:** Processor model and core specs.
* **Screen Resolution:** Pixel width and height (e.g., `1080x2400`).
* **RAM:** Total device physical memory.
* **OS Version:** Android or iOS platform release.
* **Device Type:** *Dedicated* or *Shared* device allocation.
* **Device Name & Device UUID:** Unique hardware and cloud identifiers.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b7039a1e8e3751acae7c6eb387ad989fcd76e6c2%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.050.png?alt=media)

***

## Full Video Recording Playback

Device Farm records the full visual stream of every testing session:

* Click **â€œPlay Videoâ€** in the video card to launch the video playback modal.
* Use playback controls to scrub through the timeline, pause at key moments, and verify visual bugs or rendering issues.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e080cd9459a5b154d78f518298d3dffa4f0ad81b%2FReports-Video.gif?alt=media)

***

## Viewing & Exporting Device Vitals

Click on the **â€œDevice Vitalsâ€** tab to analyze resource consumption across the session lifecycle:

* **CPU Usage Graph:** Time-series line chart displaying CPU percentage utilized by your application and system processes.
* **Memory Usage Graph:** Tracks RAM consumption over time to help pinpoint memory leaks.
* **Network Usage Graph:** Monitors network bandwidth upload and download rates.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-8ed4fa9c7dc6dc792b60e97fa7c6cff7ad41e28c%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.052.png?alt=media)

### Exporting Vitals Data:

* **Download Vitals.csv:** Export the raw time-series data points as a `.csv` spreadsheet for external performance analysis.
* **Download Vitals.png:** Export high-resolution rendered graphical charts as `.png` images for inclusion in QA presentations and stakeholder reports.

> *Note:* Device vitals collection is supported on real Android and iOS devices.

***

## Accessing Logs & Screenshots

### 1. Device Logs:

Click the **“Device Logs”** tab to inspect system messages, crash logs, and application standard output captured during the session. You can search within the log text or export the full log file.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-8e42b70f7256d8d8cf00c22a9cd1f0074b7fa8b9%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.057.png?alt=media)

### 2. Screenshots Gallery:

Click the **“Screenshots”** tab to view all screenshots captured manually via the control bar or captured programmatically during automation runs. Click on any thumbnail to view the full-size image or download it.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-efff8ee606d7e0b92bdc91fd4e057e3995a97688%2FAspose.Words.a5ba35ee-3494-4720-8f8c-7cedbeae1812.055.png?alt=media)

### 3. Appium Logs (Automation Sessions):

For automation runs, switch to the **“Appium Logs”** tab to review the server interaction log, including HTTP request routes, payload arguments, locator strategies evaluated, and session termination events.

***


# Element Explorer Feature for Appium Automation Testing

## **Introduction**

The **Element Explorer** (also referred to as **Object Spy**) feature simplifies identifying UI elements on Android and iOS devices, making automation script authoring using the Appium framework efficient, robust, and accurate. Element Explorer enables you to inspect the live application user interface, capture screen DOM dumps, highlight elements on an interactive screenshot canvas, inspect complete XML attributes, test XPath locators live, and copy ready-to-use locators directly into your automation codebase.

### Benefits of using Element Explorer:

* **Accelerated Locator Identification**: Eliminates guesswork and manual trial-and-error by generating verified locators instantly.
* **Accurate & Multi-Locator Support**: Generates Accessibility IDs, Resource IDs, Names, Class Names, Index locators, and XPath queries.
* **Live XPath Evaluator**: Validate custom XPath queries directly against the screen DOM before adding them to your test framework.
* **Hierarchical DOM Tree Exploration**: Traverse parent, child, and sibling elements to locate nested or dynamic UI components.

![Element Explorer Start Session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-77f1904996561739b4998ffced3d744cda60baef%2Fobject_spy_session_new_interface.gif?alt=media)

***

## 1. Accessing Element Explorer

Starting an Element Explorer session is straightforward:

1. Under **Projects**, click **“Sessions”** on your project card.
2. Click **“Mobile Session”** to open the device catalog.
3. Select your desired Android or iOS real device and your application binary.
4. Toggle the **`Element Explorer`** switch to enable Object Spy mode.
5. Click **“Start Session”**.

![Element Explorer Start Session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-aee812741dbf3a1076f5c96e8e83391d9bb5c780%2Fdevice-farm-object-spy-new-interface-session.png?alt=media)

***

## 2. Capturing Screen Dumps & Inspecting Elements

### 1. Interactive Device View & Screen Dump:

* In the left pane, navigate your app to the specific screen you want to inspect.
* Click the **“Dump Screen”** button (the double-chevron icon) on the center divider.
* The platform captures a high-resolution screenshot and fetches the complete UI component hierarchy.

![Element Explorer Screen Dump and Element Selection](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-afaa8c08af850eead038d82fc4f0066a6d12019e%2Fnew-df-ee-selection.png?alt=media)

### 2. Interactive Screenshot Canvas & Highlighter Colors:

* Click on any visual component directly within the right-hand screenshot canvas.
* The inspected element is instantly highlighted with a bounding box.
* **Color Picker:** Use the eyedropper color picker on the top right to customize your highlighter box color (**Cyan**, **Red**, or **Purple**) for optimal visibility across dark and light app themes.

### 3. Object Finder & Locators:

Once an element is clicked, the **Object Finder** panel displays its available locators:

* **Accessibility ID:** Ideal for cross-platform automation.
* **Name / Text:** The element's displayed label or content-description.
* **ID / Resource-ID:** Android `package:id` or iOS identifier.
* **Class Name:** The underlying UI class (e.g., `android.widget.Button`, `XCUIElementTypeButton`).
* **Id Index, Name Index, Class Index:** Ordinal positions within the hierarchy.
* **One-Click Copy:** Click the copy icon next to any locator value to copy it immediately to your clipboard.

![Element Explorer Object Properties & Locators](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-a941cc5661d60ddfc74a9fd8aa5c3591130fc87d%2Fnew-df-ee-details.png?alt=media)

***

## 3. Advanced Inspection Tools

### 1. More Attributes Modal:

Click **“More Attributes”** at the top of the Object Finder panel to open a full modal table containing all XML attributes associated with the selected element (e.g., `bounds`, `checkable`, `checked`, `clickable`, `enabled`, `focusable`, `focused`, `scrollable`, `selected`, `displayed`).

### 2. XPath Verification Tool:

Test and refine XPath queries interactively without executing test scripts:

1. In the **“Check your Xpath”** input field, enter your candidate XPath expression (e.g., `//android.widget.Button[@text='Login']`).
2. Click **“Verify”**.
3. The evaluator will instantly check the DOM tree and return a success confirmation (e.g., *"1 element found"*) or an error message if the XPath does not match.

### 3. DOM Tree Hierarchy:

The **“Elements in hierarchy”** tree view allows you to browse the complete XML structure:

* Expand and collapse tree nodes (`mat-tree`) to navigate parent containers, layouts, and leaf elements.
* Selecting a node in the tree automatically highlights the corresponding element on the canvas and loads its attributes in the Object Finder.

***

## 4. Using Locators in Automation Scripts

Copy the generated locators and incorporate them into your automation framework:

### Python Example:

```python
from appium import webdriver
from appium.options.ios import XCUITestOptions

options = XCUITestOptions()
options.platform_name = "iOS"
options.device_name = "iPhone 14 Pro"
options.udid = "<DEVICE_UDID>"
options.app = "<APP_URL>"
options.set_capability("appium:AuthToken", "<PROJECT_TOKEN>")
options.set_capability("appium:Authentication", "<USER_API_TOKEN>")

driver = webdriver.Remote('<REMOTE_ENDPOINT>/wd/hub', options=options)

# Using copied Accessibility ID
login_button = driver.find_element(by="accessibility id", value="login_button_id")
login_button.click()

# Using verified XPath
username_field = driver.find_element(by="xpath", value="//XCUIElementTypeTextField[@name='username_input']")
username_field.send_keys("demo_user")
```

### Java Example:

```java
// Using ID locator
WebElement loginBtn = driver.findElement(By.id("com.example.app:id/btnLogin"));
loginBtn.click();

// Using Accessibility ID
WebElement submitBtn = driver.findElement(AppiumBy.accessibilityId("submit_action"));
submitBtn.click();
```

***

## 5. In-Session App Installation

You can install or switch applications on-the-fly during an active Element Explorer session without disconnecting:

1. Click the **Install App** icon on the control bar.
2. Select an existing uploaded binary from your project repository or drag-and-drop a new build file (`.apk`, `.ipa`, `.apks`, `.aab`).
3. Click **Install App** to deploy and launch the application directly on the device.

![In-Session App Installation](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-bce36c1521926e7e5059282d8c71a7d116b55ae0%2Fin-session-app-install.png?alt=media)

***


# Integrations with Collaboration Tools

Integrating your mobile and web testing workflows with collaboration and project management tools enhances QA productivity, streamlines defect tracking, and facilitates faster bug resolution. Qyrus Device Farm seamlessly connects with Jira to enable one-click bug filing directly from live sessions and test reports.

***

## Why Integrate with Collaboration Tools?

* **Raise Issues Instantly:** Create defects and tasks with attached device screenshots, session metadata, and reproduction steps without leaving Device Farm.
* **Streamline Team Collaboration:** Maintain a unified source of truth in Jira for developers, QA engineers, and product owners.
* **Traceability with Xray & Sub-Tasks:** Link testing issues to existing Jira stories, epics, and Xray test management categories.

> #### [Click here to learn how to configure Jira Integrations in Project Setup](/device-farm/project-creation-and-setup#integrations-management)

***

## Utilizing Jira Integration in Device Farm

Jira integration can be invoked from two places:

1. **Inside an Active Testing Session:** Click the **Jira** icon on the device control bar to capture a defect at the exact moment an issue occurs.
2. **From the Test Report:** Review session logs or video recordings post-execution and click the **Jira** icon to file a ticket.

***

## Steps to File a Defect to Jira

1. Click on the **Jira** icon on the control bar or inside the test report.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-5061aa43e48fd6c4b761ca8a7245936624555b05%2FIntegration-1.png?alt=media)

2. The **Create Ticket** modal will appear with fields populated from your Jira instance:

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-ec70da2b29faf631b889e51cfd3e61dbb3b91aeb%2FIntegration-3.png?alt=media)

### Ticket Form Fields:

* **Select Configuration (Required):** Choose your configured Jira integration from the dropdown.
* **Reporter:** Displays the authenticated user associated with the token.
* **Select Jira Project (Required):** Select the destination Jira project (shows project avatar and key).
* **Issue Type (Required):** Select from supported Jira issue types such as *Bug*, *Task*, *Story*, *Improvement*, or *Sub-task*.
* **Parent Id (for Sub-tasks):** When *Sub-task* is selected, enter the parent issue key (e.g., `PROJ-1234`).
* **Summary (Required):** Enter a clear, concise headline for the ticket.
* **Description (Required):** Provide detailed steps to reproduce, expected results, and observed behavior.
* **Scope of Automation (Xray Integration):** If your project uses Xray, select the automation scope from the configured options.
* **Testcase Category (Xray Integration):** Select the category classification for Xray test management.
* **Priority (Required):** Set the priority level (*Highest*, *High*, *Medium*, *Low*, *Lowest*) with icon indicators.
* **Automatic Attachment:** The current device screenshot and session context are automatically attached to the created Jira issue.

3. Click **“Create Ticket”** to submit. A confirmation notification will display the newly created Jira issue ID and a direct link.

![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f3ea842d6fb2cd28d24a07d614f3e3ff0a248af2%2FIntegration-1.gif?alt=media) ![Alt text](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7aab33dc3de91f5c410129adb7b704a0364d2abd%2FIntegration-2.gif?alt=media)

***

## Benefits of Qyrus Device Farm Integration

* **Zero Context Switching:** Testers never need to leave the Device Farm workspace to open Jira in another tab, take manual screenshots, or paste device specifications.
* **Rich Diagnostic Context:** Tickets automatically include device OS version, screen resolution, model, session timestamp, and screenshot evidence.
* **End-to-End Traceability:** Keep your development and testing sprints synchronized with real-time updates across Jira and Qyrus.

***


# Interrupts

## Introduction

**Interrupt testing** evaluates how a mobile application responds to sudden external system events—such as incoming phone calls, SMS notifications, alarms, and lock screen events—and verifies that the app gracefully recovers its previous state without crashing, losing user inputs, or corrupting session data.

***

### Why Interrupt Testing Matters:

* **Form & Payment Resilience:** Ensure that checkout forms, OTP inputs, or payment gateways do not reset when an interruption occurs.
* **Media & Audio Focus:** Verify that video or audio playback pauses during a call and resumes smoothly afterward.
* **State Preservation:** Confirm that app state is retained in background memory and restored upon app switching.

***

## Triggering Interrupts in Active Sessions

For real devices equipped with SIM/cellular capabilities, the **Phone Call** and **Message** icons appear in the device control bar during active manual testing and Object Spy sessions.

![Interrupts](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9f3133d2ca66578a9f77d84b87de8f7db64bfb96%2FInterrupts.png?alt=media)

### 1. Triggering an Incoming Phone Call:

1. In an active session, navigate to the screen or workflow you wish to test (e.g., during video playback or mid-form entry).
2. Click the **Phone Call** icon on the control bar.
3. The platform simulates an incoming voice call on the remote device.
4. Observe the application behavior (e.g., call notification heads-up banner or full-screen dialer overlay).
5. Interact with or dismiss the call, and verify that the application returns seamlessly to its prior active state.

![Interrupts](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e82d4ff585cf18f4f80977fc90c73dc08d15079d%2Finterrupts-call-demo.png?alt=media)

### 2. Triggering an Incoming SMS / Text Message:

1. Click the **Message (SMS)** icon on the control bar.
2. The platform sends a simulated incoming SMS text notification to the device.
3. Observe how the heads-up notification banner displays over your app.
4. Verify that tapping or dismissing the banner does not cause UI freezes or crashes.

![Interrupts](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-38ab0276e6e7c603a50f9f5d43b80b0ded11ae2b%2Finterrupts-sms.png?alt=media)

***


# Supported Devices and Browsers List

Device Farm is designed to provide extensive testing coverage for your mobile and web applications by supporting a comprehensive catalog of physical smartphones, tablets, cloud devices, and desktop browser versions across multiple global data centers.

***

## Desktop Browsers

Device Farm supports the following desktop web browsers for testing web applications:

| Browser          | Supported Versions | Operating System |
| ---------------- | ------------------ | ---------------- |
| Google Chrome    | Latest, Latest-1   | Windows, Linux   |
| Mozilla Firefox  | Latest, Latest-1   | Windows, Linux   |
| Apple Safari     | Latest, Latest-1   | macOS            |
| Microsoft Edge   | Latest, Latest-1   | Windows          |
| Samsung Internet | Latest, Latest-1   | Android Web      |

***

## Mobile Devices

### Android Devices

Device Farm supports a diverse fleet of physical Android smartphones and tablets across all major manufacturers and form factors:

| Brand / Series                     | Form Factor           |
| ---------------------------------- | --------------------- |
| **Samsung Galaxy S & Note**        | Smartphone            |
| **Samsung Galaxy A & Z Fold/Flip** | Smartphone / Foldable |
| **Samsung Galaxy Tab**             | Tablet                |
| **Google Pixel**                   | Smartphone            |
| **OnePlus**                        | Smartphone            |
| **Xiaomi / Redmi / POCO**          | Smartphone            |
| **Motorola**                       | Smartphone / Foldable |
| **Oppo / Vivo / Realme**           | Smartphone            |

***

### iOS Devices

Testing iOS and iPadOS applications on physical Apple hardware covers all major form factors:

| Model Series               | Form Factor |
| -------------------------- | ----------- |
| **iPhone Pro Models**      | Smartphone  |
| **iPhone Standard Models** | Smartphone  |
| **iPad Pro Series**        | Tablet      |
| **iPad Air & Mini Series** | Tablet      |

***

## Real Devices vs Cloud Device Farm (AWS)

Device Farm provides access to two primary device infrastructure pools:

* **Dedicated & Shared Real Devices:** Physical hardware hosted in low-latency private enterprise data centers with real SIM card support, battery diagnostics, hardware sensor interaction, and WebRTC streaming.
* **Cloud Device Farm (AWS Integration):** On-demand cloud device pools for executing high-volume automated test matrices in parallel.

***

## Network & Firewall Whitelisting Prerequisites

### Whitelisting DNS for WebRTC Video Streaming

To ensure smooth, uninterrupted real-time video streaming and device control, your corporate network firewall or proxy must allow traffic to Qyrus WebRTC and TURN/STUN media servers.

***


# Biometric Bypass Feature for Real Devices

## 1. Introduction

The **Biometric Bypass** feature provides a seamless mechanism to bypass biometric authentication prompts—including fingerprint (Touch ID / Android BiometricPrompt) and facial recognition (Face ID)—during manual, automated, and AI-driven testing on real iOS and Android devices. This feature allows QA teams to automate and manually test secure login, checkout, and authorization workflows without requiring physical user biometrics on remote hardware.

***

### Benefits of Biometric Bypass:

* **Testing Acceleration**: Eliminates blocking authentication modals that prevent automated scripts or manual testers from reaching downstream app features.
* **Repeatable Regression Testing**: Run end-to-end regression suites repeatedly without manual biometric intervention.
* **Simulating Success & Fallback Scenarios**: Test both successful biometric authorizations and passcode fallback paths.

***

## 2. Enabling Biometric Bypass

You can utilize Biometric Bypass using two methods:

### Method A: Enable During Session Setup

1. When starting a manual or Object Spy session, choose your target device and uploaded application binary.
2. Toggle the **`Biometrics (Beta)`** switch on the session setup card.
3. Click **“Start Session”**. The session launches with biometric mocking automatically initialized for that application.

![Biometrics Session Start](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-db9b20f7d96c4496e00509c1a6aeca1fb3ba6645%2FEnable-biometrics-session.png?alt=media)

***

### Method B: Dynamic Trigger During an Active Session

1. If your application triggers a biometric prompt mid-test, locate the **Biometrics (Fingerprint)** icon on the device control bar.
2. Click the button to dispatch an instantaneous simulated biometric success event to the running app.

***

## App Behavior Demonstration

> #### The illustration below demonstrates app behavior first without biometric bypass enabled (prompt remains active) and then with the biometric bypass flag enabled (authenticates immediately):

![Biometrics Flow](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b521fb82a405890ca64088ead75fde45fd044740%2Fbiometrics.gif?alt=media)

***

## Compatibility & Requirements

* **Application Build:** Requires an instrumentable debug/staging build (`.apk`, `.ipa`, or `.aab`) signed for testing.
* **OS Support:** Supported across physical Android devices and iOS devices (iOS 14 through iOS 16; iOS 17+ support depends on application build entitlement configurations).

***


# File Upload Feature for Remote Real Devices

## 1. Introduction

The **File Upload** feature allows you to transfer files directly from your local computer into the local storage of a remote physical device during an active Device Farm session. This capability is essential for testing workflows that require local files, such as profile picture uploads, document scanning, test datasets (CSV/JSON), audio/video playback, and custom configuration files.

***

### Supported Platforms & Formats:

* **Supported Operating Systems:** Physical **Android** and **iOS** devices.
* **Supported File Formats:** Images (`.png`, `.jpg`, `.jpeg`, `.gif`), Documents (`.pdf`, `.docx`, `.txt`, `.csv`, `.json`), Media (`.mp4`, `.mp3`, `.wav`), and custom application data binaries.

***

## 2. Uploading Files During an Active Session

1. Start an active manual or Object Spy testing session on a target device [(learn more)](/device-farm/manual#creating-a-manual-device-session).
2. Locate the **File Upload** icon on the device control bar.
3. Click the button to open your operating system's file browser.
4. Select the file you wish to push to the remote device.
5. The button displays an upload spinner while the file is streamed securely to the device. A success notification confirms when the transfer completes.

***

### Platform-Specific Storage Locations:

#### **iOS Devices:**

Uploaded files are stored within the sandbox directory accessible by file-picker dialogues:

* **Location:** `Files App > On My iPhone > Chrome`

![iOS File Upload Flow](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-fe019d1de437ca112e4e2babe3f8a1263be13b5b%2Ffileupload.gif?alt=media)

***

#### **Android Devices:**

Uploaded files are stored directly in the standard system download folder:

* **Location:** `Internal Storage > Downloads` (or `/sdcard/Download/`)

![Android File Upload Flow](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-cc0b461e527cc0005a3751f7427356ab9c13cc22%2Ffileupload-android.gif?alt=media)

***

## 3. Verifying the Uploaded File on the Device

Once the transfer is complete, you can verify and access the file within your application:

* **On iOS:** Open the native **Files** app, navigate to **On My iPhone**, and open the **Chrome** folder.
* **On Android:** Open the native **Files** / **My Files** app or launch your app's file picker and select the **Downloads** directory.

***


# Frequently Asked Questions (FAQ)

Welcome to our Device Farm FAQ section! Here are some common questions and their answers to help you navigate our platform effectively.

<details>

<summary><strong>1. What is DeviceFarm and mention it's advantage?</strong></summary>

Device Farm, your all-in-one platform for manual and automated testing on real devices. Device Farm provides developers with a powerful testing environment to ensure the quality and performance of their applications across a wide range of devices and configurations.

* **Access to Real Devices/Browsers:** Device Farm offers a diverse set of real devices including smartphones and tablets, allowing you to test your application on actual hardware.
* **Manual Testing:** You can manually interact with devices using your mouse and keyboard, simulating real user interactions to identify issues and explore your app's usability.
* **Automated Testing with Appium:** Automate your tests using the popular Appium framework, enabling you to run scripted tests and catch regressions early in the development process.
* **Comprehensive Test Reports:** After completing tests, Device Farm generates detailed reports that include device vitals, logs, videos, screenshots, and performance metrics for thorough analysis.

</details>

<details>

<summary><strong>2. What are all file types we can upload in the Applications Files tab?</strong></summary>

You can upload the following file types in the Applications Files tab:

* APK (Android Package)
* IPA (iOS Application Archive)
* APKS (Android Package Set)
* AAB (Android App Bundle)

</details>

<details>

<summary><strong>3. How many files can we upload in the Applications Files tab?</strong></summary>

You can upload multiple files in the Applications Files tab. The limit is 10 files and the files are archived every 3 months.

</details>

<details>

<summary><strong>4. In the Authentication tab, what happens if the user provides an invalid email and password?</strong></summary>

If an invalid email and password are provided in the Authentication tab, the system will not authenticate the user, and access to the platform will be denied.

</details>

<details>

<summary><strong>5. Can a user create or edit the JIRA Configuration with the same name?</strong></summary>

No, you cannot create or edit a JIRA Configuration with the same name. Each configuration should have a unique name.

</details>

<details>

<summary><strong>6. What's the use of Network Profile in Device Farm?</strong></summary>

Network Profiles simulate different network conditions to test app behavior under various network scenarios, such as slow connections or high latency.

</details>

<details>

<summary><strong>7. In the Network Profiles tab, what are bandwidth, delay, and loss, and how are they used in Device Farm?</strong></summary>

* **Bandwidth**: Represents the speed of the network connection.
* **Delay**: Introduces latency in network communication.
* **Loss**: Simulates packet loss in the network.

These parameters help you test how your app performs under different network conditions.

</details>

<details>

<summary><strong>8. Why do we have a Swagger Docs section in Device Farm?</strong></summary>

The Swagger Docs section provides documentation for APIs in your application, allowing you to understand endpoints, request/response structures, and more.

</details>

<details>

<summary><strong>9. In the Swagger Docs tab, what's the use of Servers, and why are they displayed?</strong></summary>

Servers define the base URL for API requests. They're displayed to help you correctly configure endpoints for testing.

</details>

<details>

<summary><strong>10. In the Swagger Docs tab, what are schemas, and what's their use?</strong></summary>

Schemas define the structure of data objects exchanged via APIs. They help you understand the expected format of request and response data.

</details>

<details>

<summary><strong>11. In a Manual session, what is Biometrics?</strong></summary>

Biometrics refers to the use of unique physical characteristics, such as fingerprints or facial recognition, for device authentication.

**Note:** Biometric feature may not work on iOS 17+

</details>

<details>

<summary><strong>12. Why do we need file upload in a live session?</strong></summary>

File uploads in a live session allow you to transfer necessary files to the remote device for testing purposes.

</details>

<details>

<summary><strong>13. What is the use of the Element Explorer?</strong></summary>

The Element Explorer feature assists in identifying elements on Android and iOS devices for automation testing using Appium, making element identification more efficient.

</details>

<details>

<summary><strong>14. What's the use of Appium run?</strong></summary>

Appium run lets you execute Appium scripts on real devices to automate tests, ensuring your application's functionality and stability.

</details>

<details>

<summary><strong>15. Why is "Show Logs" displayed in a live session?</strong></summary>

"Show Logs" provides access to device logs, helping you troubleshoot issues and gather information during testing.

</details>

<details>

<summary><strong>16. What's the use of Wi-Fi in a live session? What happens if the user selects "Present" or "Custom"?</strong></summary>

Wi-Fi settings in a live session allow you to configure network connectivity for the remote device. "Present" uses the device's current network settings, while "Custom" lets you define specific settings.

</details>

<details>

<summary><strong>17. What should be expected when applying Wi-Fi settings in a live session?</strong></summary>

When applying Wi-Fi settings, the remote device's network connectivity will change according to the selected configuration (Present or Custom).

</details>

<details>

<summary><strong>18. In the Live Session for the Session Info page, why do we show "Generate JSON"?</strong></summary>

"Generate JSON" lets you generate a JSON report containing session information and data, which can be helpful for documentation and analysis.

</details>

<details>

<summary><strong>19. On the "Show Details" page, what do terms like CPU usage, Memory Usage, and Network Usage refer to in the context of graphs?</strong></summary>

In the graphs for CPU usage, Memory Usage, and Network Usage, you should analyze the trends and patterns to understand how your application performs under various conditions.

</details>

<details>

<summary><strong>20. Video Stream Not available on reload/refresh of screen or Getting blank screen on reload/refresh of website in manual session or object spy session?</strong></summary>

To resolve this issue, users need to grant the website permission to run video with audio by default. This can be done in the browser's site settings.

Steps:

Open site Settings:

Chrome:\
Click the euilizer dots in the top left corner beside reload and select "Site Settings."\
Scroll down to "Audio" and click on it.\
open Dropdown and select `Allow`, Ensure the "Allow" option is selected ,this will Enable Audio.

![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7b6177b3b4a728528c0ad9db6d3bf4336e0b4120%2Fsite_info.png?alt=media) ![](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-4af6df6eb3ae349ada81c52f2795448a0ee9809f%2Faudio_site_setting.png?alt=media)

Firefox:\
Click the euilizer dots in the top left corner beside reload and select "Site Settings."\
Scroll down to "Audio" and click on it.\
open Dropdown and select `Allow`, Ensure the "Allow" option is selected ,this will Enable Audio.

</details>

***

We hope these FAQs have addressed your queries. If you need further assistance, please refer to our Help Center or contact our support team. Happy testing!


# AI Session


# Run a Session Without an App

AI Session lets you start a live test on a real device without uploading an application. Use this option when the application is already available on the device or when you want the AI agent to work with the device without adding an app during session setup.

## Open AI Session from the Dashboard

Start from the signed-in Qyrus dashboard.

1. From the dashboard, select **Services** in the left navigation.
2. Under **MOBILE**, select **Device Farm**.
3. On the Device Farm **Projects** page, select **AI Session**.
4. On the **New AI Session** screen, select the **All**, **iOS**, or **Android** tab as appropriate.

The navigation path is:

```
Dashboard → Services → Device Farm → AI Session
```

![Open AI Session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1ef121194eeff3518550bc8e8f6a1044f70615b2%2Fopen-ai-session.gif?alt=media)

The session setup screen displays the following fields:

* **Device** — choose a real device for the session.
* **App to test (optional)** — leave this empty when running without uploading an app.
* **Upload app** — use this when the session requires an app; see [Upload an App to a Session](/device-farm/ai-session/upload-an-app).
* **Session name** — optionally provide a name for the session.
* **Goal** — describe what the AI should verify, for example, `log in and confirm the dashboard opens`.
* **More options** — open additional session settings when required.

![New AI Session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-78aa9090189f9f9d74306b1f14f33b29b83e8ecf%2Fnew-ai-session.png?alt=media)

## Select a Device

1. Select **iOS** or **Android** to filter the available devices by platform.
2. Select **Choose a real device**.
3. Search for a device using **Search devices**, or browse the available device list.
4. Select the required device.

The device list displays the device model, operating-system version, and whether the device is a public shared device. For example, an Android device may appear as **Google Pixel 8 · 14**.

![Device selector](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-089062ffa4e1ce579bc93d3e40d26aeeabf4a5ca%2Fdevice-selector.png?alt=media)

## Start the Session

1. Select **Choose a real device** in the **Device** field.
2. Choose the target device.
3. Leave **App to test (optional)** empty.
4. Optionally enter a **Session name**.
5. In **Goal**, describe the journey the AI agent should perform and verify.
6. Review any required settings under **More options**.
7. Start the session.

The session initially displays **Waiting for device** with a **PENDING** status while Device Farm starts the selected device.

When the device is ready, the workspace displays **Ready to begin** and the message:

> The device is live. Send the first instruction when you want the AI to start.

The active workspace includes:

* A live device stream
* A field for entering the next AI instruction
* Portrait and landscape orientation controls
* A stop-session control

After the device session is fully launched and shows **Ready to begin**, you can switch between portrait and landscape orientation when the test requires it. Orientation is optional; wait for the session to become ready before changing it.

![Session ready](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b31dc32cc1bc0175a9d85ff682d82bbd90ccfe40%2Fsession-ready.png?alt=media)

After the session starts, use the live workspace to monitor the device and review the agent's actions and verification results. Detailed agent execution behavior is covered in [Understand Agent Execution](/device-farm/ai-session/understand-agent-execution).

> The exact device availability and additional setup options may vary by account and environment. This page documents the current AI Session setup flow and will be expanded with screenshots after the walkthrough is complete.


# Upload an App to a Session

Upload an application to a project before starting a session when the app is not already available in Device Farm. Android applications use `.apk` files; iOS applications use `.ipa` files.

## Open the Project's Apps Tab

1. Open **Projects** in Device Farm.
2. Select the project where the application should be stored.
3. Open the **Apps** tab.
4. Select **Add App**.

![Open project Apps](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-5f8eef6db9fec1515cbe23391bdbf5b0cd69c537%2Fopen-project-apps.gif?alt=media)

## Upload the Application

1. In the **Add App** dialog, select the target platform: **Android** or **iOS**.
2. Select **Browse Files**, or drag the application file into the upload area.
3. Choose the `.apk` file for Android or the `.ipa` file for iOS.
4. Optionally select **Check upload speed** if the upload area provides that option.
5. Select **Add App** to upload the application to the project.

The application appears in the project’s Apps list. The list shows the app name, version, upload status, last-used information, and related test data. Wait for the upload status to finish successfully before using the app in a session.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-fe8cee37f843d8d2a7f9914e9eeb1f6987ee24d8%2Fadd-app-ios.png?alt=media" alt="Add iOS app"></div>

## Select the Uploaded App in a Session

1. Open **AI Session** and select the required platform and real device.
2. Open **App to test (optional)**.
3. Select the application uploaded to the project.
4. Complete the session goal and start the session.

The uploaded application is now associated with the session and is available for the agent to use during the test.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-997109092ed9185cca37baa3c51a00bdfbe7423d%2Fselect-uploaded-app.png?alt=media" alt="Select uploaded app"></div>


# Run a Web Session

Web sessions let the AI agent interact with a live browser using instructions similar to those used for device sessions.

## Start a Web Session

1. Open **AI Session**.
2. Select the **Web** tab.
3. Enter the website address in **Start URL**.
4. Optionally provide a session name.
5. In **Goal**, describe what the agent should verify.
6. Select **Start AI Session**.

For example, use `https://qbank.qyrus.com` as the Start URL and ask the agent to verify that the site loads successfully.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-98b99f69594e36c62d8098ad883474d5309b635b%2Fweb-setup.png?alt=media" alt="Web session setup"></div>

## Give Instructions to the Agent

After the browser session launches, enter instructions in the chat field and select **Send message**. The instruction pattern is the same as for a device session: describe the journey the agent should perform and the results it should verify.

The Web workspace can show the agent’s actions and manual user actions, such as clicks and sign-in interactions, as recorded steps.

## Take Control of the Browser

The live browser is initially shown as **Browser locked**. To interact with it yourself, select **Take control**. After taking control, perform the required browser actions directly. User interactions are recorded as manual steps that can be reviewed with the rest of the session activity.

When manual interaction is complete, select **Lock** to lock the browser again and return control to the agent.

![Take control in a web session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-5924dd7f0fc136963c6703fa150ae2c6dd0cfc6b%2Ftake-control.png?alt=media)

> **Note:** Web sessions are experimental. Review recorded actions and results carefully, especially when switching between agent control and user control.


# Understand Agent Execution

This page will explain agent instructions, milestones, verifications, the Steps and Map tabs, orientation changes, stopping behavior, blocked sessions, and inactivity timeouts.

## Submit an Instruction

When the device displays **Ready to begin**, enter an instruction in the AI input field and send it. While the agent is executing:

* The submitted instruction appears in the conversation.
* The status changes to **Working...**.
* The input field is disabled until the current action finishes.
* **Stop current action** becomes available.

## Use Milestones for Multi-Phase Objectives

For a longer objective that contains several distinct phases, ask the agent to create milestones before it begins interacting with the device. Milestone creation depends on the agent recognizing the multi-phase objective and creating a milestone plan; adding the word “milestone” alone does not guarantee that a plan will be created.

When a plan is created, the session displays an **Objective milestones** control with the current progress, such as **1/8**. Select the control to expand the milestone record. The expanded panel shows:

* The number of completed milestones, such as **1 of 3 complete** while the first milestone is still running.
* The current milestone and its instruction text.
* The remaining milestones in sequence.
* The current execution state, such as **Loading**, **Nudging...**, or **Working...**.

For example, a generated plan may contain milestones for allowing pop-ups, changing the environment, updating and relaunching the app, logging in, searching, selecting an item, verifying a result, and closing the flow. The agent advances through the plan as each milestone's actions and verification are completed.

![Milestone plan](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d23e513fe878096afba7350fc0e1b368f2bf68c2%2Fmilestone-plan.png?alt=media)

## Stop the Current Turn

To stop the action currently being performed by the agent, select the square **Stop current action** button on the right side of the chat input area. This stops the current turn while keeping the session available for further input.

![Stop current action](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d23e513fe878096afba7350fc0e1b368f2bf68c2%2Fstop-current-action.png?alt=media)

## Stop the Device Session

To close the entire device session, select the red square stop button near the top-right of the live device screen. This is different from **Stop current action**: the chat control stops only the active turn, while the red device control ends the live session.

![Stop session](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d23e513fe878096afba7350fc0e1b368f2bf68c2%2Fstop-session.png?alt=media)

## Respond When the Agent Is Waiting

If the agent becomes blocked and needs guidance, it returns to a waiting state and the user can describe the next action or provide instructions in the chat. Review the live device before replying so the guidance matches the current screen.

When the agent finishes the requested objective, the chat reports **Objective complete**. If no new message is entered for three minutes after the agent is waiting for input or has completed the objective, the session closes automatically because of inactivity.

![Waiting or objective complete](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-0c7840f9c8babcd264ad5eaebd143abbe69d15c8%2Fwaiting-or-complete.png?alt=media)

## Review a Completed Session

After the objective is complete, the workspace displays the executed actions and verification results. Successful actions are marked with green check indicators, and the chat includes an objective-complete message.

The workspace provides these tabs:

* **Chat** — shows the instruction, actions, notes, verifications, and completion message.
* **Steps** — shows each action, target, input value, success state, and execution timing. Expand a step for additional details.
* **Map** — shows the test flow as connected interaction nodes.

The Map tab provides **Transitions**, **Interactions**, **Show All**, and **Reset** controls, along with zoom and fit-view controls. **Show All** displays all transitions and interactions, including interaction screenshots, tap/click crosshair markers, normalized coordinates, and timing where available.

![Working session and stop control](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d23e513fe878096afba7350fc0e1b368f2bf68c2%2Fstop-current-action.png?alt=media)

![Steps tab](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-86c5f9e19c78c0501da1bb95bd2fabc9cd413810%2Fsteps-tab.png?alt=media)

![Map with Show All](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-170ae6b0122b77f9564b0b11db8ebc251626ade4%2Fmap-show-all.png?alt=media)


# Save a Session as a Project Test

After an AI Session completes, you can save it as a reusable test in an existing project.

## Open Save as Test

1. Complete an AI Session.
2. Select **Save** in the session workspace.
3. In the **Save as Test** panel, keep **Existing project** selected.
4. Open the **Project** dropdown.
5. Search for or select an existing project.
6. Enter a **Test name**.
7. Select **Next**.

The Save as Test panel displays the selected project, test name, and platform before moving to setup.

![Save test destination](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-849be81c2a709fdaa78c34696b4ec04ecd07f034%2Fsave-test-destination.png?alt=media)

## Configure Test Setup Options

The setup step provides these independent options:

* **Save session values as test data** — preserves values used during the session so the reusable test can use them later.
* **Keep this device with the project** — makes the selected device easier to choose when the test runs again.
* **Keep this app with the project** — attaches the same app build for future runs. This option applies when an app was selected for the session.

When **Save session values as test data** is enabled, a **Dataset name** field appears. Enter a meaningful name for the saved dataset. The device and app options remain independent and do not change automatically.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-4f794ca34c2aaf64644a220db6fd55e8f7277bf8%2Fsave-test-options.png?alt=media" alt="Save test options"></div>

## Save the Test

1. Review the project, test name, platform, and optional setup selections.
2. Select **Save as Test**.
3. Confirm the success message and saved project/test path.

For example, the application confirms that the session was saved to:

```
Session Studio Apps / Search Google for Qyrus
```

The saved test is then available from the selected project’s Tests view. A separate success screenshot is not required for this flow.

## Optionally Add Rerun Guidance

After saving, open the test from the project and select **Steps**. Every saved test can have an optional **Nudge** on an individual step; Record for Automation does not need to have been enabled when the original session was run.

1. Select **Add nudge** on the step that may vary during a rerun.
2. Enter a short note describing the acceptable variation.
3. Select **Save Changes**.

![Saved test Steps with nudge](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-adb625f2386f95adbba043374980a65084e40531%2Frecording-saved-test-steps.png?alt=media)


# View Session Reports

Reports are available after a saved test has been rerun. Open the saved test in its project, select **Reports**, and choose the relevant **Re-run:** report.

## Review Session History

Use **Session History** to find previous AI sessions and open their evidence. The page provides:

* Status filters: **All**, **Running**, **Completed**, and **Failed**.
* Platform filters: **All platforms**, **Web**, and **Mobile**.
* A **Search sessions** field.
* A session table with Session, Status, Duration, Device, App, Created, and Created By columns.
* An **Open** action for each session.
* A **New AI Session** action.

Select a session from the history list to open its run details, evidence, and available report actions. Sessions can include completed, failed, cancelled, or other final outcomes depending on the run.

## Inspect a Run Detail Page

From **Session History**, select a run to open its run detail page. This is the final screen for the history flow. The run detail page shows the run name, objective summary, final status, and **Download PDF** action. Its metadata can include:

* Created date and creator
* Device and platform
* App
* Total timing
* Device actions timing
* Evidence and artifacts timing

The detail page separates **Meta** and **Artifacts**, and provides report tabs for **Messages**, **Playback**, **Video**, **Appium Logs**, **Device Logs**, and **Network**. The Messages view lists recorded actions with their direction or target and a verification status indicator.

![Run detail](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f2a521ee7e8678df15df88ed3e1375cb933df39d%2Frun-detail.png?alt=media)

![Session History](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-4d44d145bd298c913f0dcb6093721bf5095b5ae5%2Fsession-history.png?alt=media)

## Review Report Details

The **Summary** tab can include:

* Completion status and timestamp
* Device and app information
* Overall replay result
* Token counts
* Step-level statuses
* Available report actions, including rerun actions where supported

## Review Report Artifacts

Depending on the session and platform, the report may provide:

* **Playback** — visual replay map with Transitions, Interactions, Show All, Reset, zoom, and fit-view controls.
* **Artifacts** — pre-action and post-action screenshots, preview overlays, type-action screenshots, and PDF report.
* **Video** — session video; it may initially display **Preparing...** while loading.
* **Appium Logs** — Appium server output files and log previews.
* **Device Logs** — Logcat files and file sizes.
* **Network** — TCP dump logs in TXT format.

Some files or previews may initially display **Preparing...** or **Loading preview\...** while they are being prepared.

The following examples show the report tabs and the type of evidence available for a mobile run:

![Appium logs](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-289ff9c82957dfcff9aeba872fcf2f78e562f096%2Freport-appium-logs.png?alt=media)

![Device logs](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-fd3d94b33dfd2c5ad09e3c2147551fe0e32ad422%2Freport-device-logs.png?alt=media)

![Network logs](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-4c38b290700f8ff9659261829e5ab2ddf638650a%2Freport-network.png?alt=media)

![Session video](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-84cacb2bfa7291a5bf405e1c02a752b8ab8b7e45%2Freport-video.png?alt=media)

## Create a Jira Ticket from a Report

After a Jira integration has been added to the project, a ticket can be raised from the report:

1. Open the report for the relevant run.
2. Select the three-dot **More options** button beside the run status.
3. Select **Create JIRA Ticket**.
4. In the ticket form, select the Jira configuration, reporter, Jira project, and issue type.
5. Review or edit the prefilled summary and description. The description includes the replay result and step-level statuses.
6. Select **Create JIRA Ticket** to submit the ticket.

The ticket form may prefill the Summary with the run name and the Description with the report outcome, including passed, failed, and VLM-rescued steps. After the ticket is created, a success toast confirms the creation and provides a link to open the new Jira ticket.

After submission, the dialog confirms that the ticket was created and provides the ticket key and links to copy or open it in Jira.

> The report’s three-dot menu is the entry point for **Create JIRA Ticket**. The screenshots below show the form and its success state.

![Create JIRA ticket form](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-06beb18fa2406c0764dc0d7fd23e5be795ec5dea%2Fcreate-jira-ticket-form.png?alt=media)

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-ddc526d42446d89d27f38b525bbaaf7573b134ad%2Fcreate-jira-ticket-success.png?alt=media" alt="Create JIRA ticket success"></div>

![Report summary](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-d5efd5cc769521ca44565801b7d5724064adddf2%2Freport-summary.png?alt=media)

The **Artifacts** tab contains the captured evidence associated with the run.

## Download a PDF Report for a Completed Run

PDF reports are available for runs that have reached a final status, such as **Completed**, **Failed**, **Cancelled**, or **Timed out**.

1. Open **History** from Device Farm.
2. Select the run you want to review.
3. In the run detail view, select the PDF report button, such as **Download PDF** or **Open PDF**.

The report opens in a new browser tab. While it is being generated, the tab can show **Preparing PDF report**, a progress indicator, **Generating**, and a message asking you to keep the tab open. When generation finishes, the PDF report is displayed in that tab. It includes the run outcome, summary, run context, runtime timing, and recorded step timeline. The report status matches the run status, including cancelled or failed runs.

![Run detail PDF action](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-f2a521ee7e8678df15df88ed3e1375cb933df39d%2Frun-detail.png?alt=media)

![Preparing PDF report](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9368a023c887c8f79b589c7b8fe0c59be2f62c64%2Fpdf-report-button.png?alt=media)

![PDF report](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-a8ea7d8669aa90cd5f01a302d134d72e0efea467%2Fpdf-report.png?alt=media)


# Re-run a Session and View Its Reports

You can rerun a saved project test on a fresh device. Run the saved test once normally before using rerun reports. After the initial run, every rerun creates its own report entry.

## Start a Rerun

Open the saved test in its project and select the green **Run Test** button marked **Beta** near the top-right of the test page. Complete the rerun setup and start the test as required.

![Run Test button](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-1dc53928a9c0c87bb07d62fd6153567faaea256a%2Frun-test-button.png?alt=media)

The rerun setup panel lets you confirm the project-linked device, optionally select an app, expand **Package and Activity** when needed, choose the starting orientation, and run the test.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-3d5c7ce2f9cd0a8a1527ed62389853d4cd47758b%2Frerun-setup.png?alt=media" alt="Rerun setup"></div>

The rerun panel now includes **Use recorded locators** when the saved test has recorded elements. **Record for automation** remains available as an optional setting when you want the rerun to capture or refresh element locators.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9a3c6870d4a39a9cf4b4ad0ad1ac790dce3ff4ff%2Frecording-rerun-options.png?alt=media" alt="Rerun options"></div>

## Open the Rerun Report

The Reports tab does not open automatically after the rerun. To view a rerun report:

1. Return to the saved test in the project.
2. Open the **Reports** tab.
3. Select the report whose name begins with **Re-run:**.
4. Review the report summary and available report tabs.

The report may show **Completed** even when individual steps failed. Review the step-level results and summary before considering the rerun successful.

Before a rerun, you can also open the saved test’s **Steps** tab and add a **Nudge** to any step whose target or expected result may vary. This is available for every saved test and does not depend on Record for Automation.

Available report tabs may include:

* **Summary**
* **Playback**
* **Artifacts**
* **Video**
* **Appium Logs**
* **Device Logs**
* **Network**

The **Summary** tab can include the completion status and timestamp, device and app information, overall replay result, token counts, and step-level statuses.

The **Playback** tab provides a visual replay map with **Transitions**, **Interactions**, **Show All**, **Reset**, zoom, and fit-view controls.

The **Artifacts** tab can contain pre-action and post-action screenshots, preview overlays, type-action screenshots, and a PDF report.

The **Video** tab provides the session video. The video may initially show **Preparing...** while it loads.

The **Appium Logs** tab provides Appium server output files and log previews. The **Device Logs** tab provides Logcat files. The **Network** tab provides TCP dump log files. These files or previews may initially show **Preparing...** or **Loading preview\...** while they are being prepared.

> A rerun report is shown in the saved test’s **Reports** tab. Use the report screenshots in [Session reports](/device-farm/ai-session/view-session-reports) as the reference for its available detail tabs.


# Configure Jira and TestRail

Project integrations connect AI Session projects with Jira and TestRail. Jira can be used to raise tickets from reports. TestRail can receive the result of a linked Qyrus test after each run reaches a final state.

## TestRail Prerequisites

Before configuring TestRail, make sure you have:

* A TestRail account with a username and password or API key.
* A TestRail project.
* At least one test case in the project's test suite.
* A test plan in that project.
* A test run inside the plan that includes one or more test cases.
* A Qyrus project containing the test you want to link.

If a test run contains no cases, its case selector in Qyrus will be empty.

## View Project Integrations

1. Open **Projects** in Device Farm.
2. Select the required project.
3. Open the **Integration** tab.

After a configuration is added, the tab displays an integration table with:

* **Name** — the configuration name.
* **Host** — the Jira or TestRail host address.
* **User Email** — the account associated with the configuration.
* **Last Used** — the most recent use of the configuration.
* **Actions** — controls to **Edit** or **Delete** the configuration.

The page also provides **Search configurations or hosts**, **Reset**, and **Add Configuration** controls.

![Integration table](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-bc1e7f58e52a1ba06a3bbd8adfb6786b81d98bfc%2Fintegration-table.png?alt=media)

## Add a Configuration

1. Select **Add Configuration**.
2. Choose the service you want to connect:
   * **Jira** — raise tickets from test reports.
   * **TestRail** — sync test results and cases with a TestRail project.
3. Select **Continue** to open the service form.

### Jira Configuration

Enter the following values:

* **Configuration name**
* **Host URL**
* **Email**
* **API Token**

Select **Test Connection**, then select **Add Configuration** to save the connection.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-924af7350797940397dfaadc8bcec36df972cd94%2Fjira-form.png?alt=media" alt="Jira configuration form"></div>

### TestRail Configuration

Enter the following values:

* **Configuration name**
* **Host URL**
* **Username / Email**
* **Password / API Key**

1. Select **Get TestRail Projects**.
2. Confirm that the projects are retrieved successfully.
3. Select the TestRail project that contains the required plans and cases.
4. Select **Create Configuration**.

The form displays a **Projects retrieved** confirmation and lists the available TestRail projects for selection. Choose the correct project because the configuration uses it when loading plans, runs, and cases later.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-e593897bd54d8d523e19ecc0e4a1f3a85e35d4f8%2Ftestrail-form.png?alt=media" alt="TestRail configuration form"></div>

> Treat TestRail and Jira passwords, API keys, and tokens as sensitive. Use a dedicated API key where supported and do not include credentials in screenshots or documentation.

## Link a Qyrus Test to a TestRail Case

Link each Qyrus test to one TestRail case once. The link determines where future results are posted.

1. Open the Qyrus test in the project.
2. Open the test's **Integration** tab.
3. Under **Select Service**, choose **TestRail**.
4. Select the TestRail configuration.
5. Select the **Test Plan**.
6. Select the **Test Run**.
7. Select the **TestRail Case**.
8. Select **Link**.

The selectors load from top to bottom: the configuration determines the TestRail project, the plan determines the available runs, and the run determines the available cases. After linking, the test displays its configuration, plan, run, case, and link timestamp.

![Link TestRail case](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-051592af860c2a75e36d1c3de7b964bfbf122440%2Flink-testrail-case.png?alt=media)

To change the target for a new release or test cycle, use **Relink** and select the new plan, run, and case. Use **Unlink** to remove the association; future runs will no longer sync to TestRail.

## Sync Results After a Run

Run the linked test from its test page or from an AI Session saved as that test. The execution must be tied to the linked test; a standalone session that is not saved as the test does not sync its result.

When the run reaches a final state, Qyrus generates the PDF report and posts the result to the linked TestRail case. The TestRail update includes the execution status, test name, run summary, and a link to the PDF report.

The overall run status determines the TestRail result: a successfully completed run is reported as **Passed**; other final outcomes are reported as **Failed**.

Manual PDF download does not trigger another TestRail update. If a result is missing, confirm that the test still shows **Linked to TestRail**, the run reached a final state, and a PDF report was generated.

![TestRail result](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-0e45efd2363cc6bfec5f1b753bfd4a627139fb7a%2Ftestrail-result.png?alt=media)

## Troubleshooting

| Symptom                                     | Likely cause                                                                               | Action                                                                          |
| ------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
| No test plans found                         | The selected project has no active plans, or the wrong project was selected                | Add a plan in TestRail or edit the configuration and choose the correct project |
| Test Run list is empty                      | The selected plan has no runs                                                              | Add a test run to the plan in TestRail                                          |
| TestRail Cases list is empty                | The selected run contains no cases                                                         | Add cases to the suite and include them in the test run                         |
| Link is disabled                            | One of the configuration, plan, run, or case selectors is empty                            | Complete all four selections                                                    |
| Run finished but no TestRail result appears | The run was not tied to the linked test, did not reach a final state, or had no PDF report | Run the test from its test page and verify the linked-test panel and report     |
| PDF report link no longer opens             | The report link has expired                                                                | Re-run the test to generate a new report link                                   |

> **Note:** Jira ticket creation from a report is documented in [View Session Reports](/device-farm/ai-session/view-session-reports).


# Manage Projects and Tests

Projects group reusable AI journeys, app builds, devices, tests, and reports by product or workflow.

## Create a Project

1. Open **Projects** in Device Farm.
2. Select **Create Project**.
3. Choose a project icon.
4. Enter a **Project name**.
5. Enter a **Project goal** describing the journeys, apps, or devices the project should cover.
6. Select **Create Project**.

The project appears in the Projects list after it is created.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7d90a02738cdbe095fdb547de423dde0b8e5159d%2Fcreate-project.png?alt=media" alt="Create project"></div>

## Open and Manage a Project

The Projects page provides a project search field and Grid/List view controls. Each project card can show its name, status, goal, progress, and last-updated date. Open a project card to manage its tests, devices, apps, and integrations. Project cards also provide an actions menu for project-level actions.

The Projects page lists the available projects and provides the entry point for opening a project. No separate project-list capture is required for the current guide.

## Save a Session as a Project Test

1. Complete an AI Session.
2. Select **Save** from the session workspace.
3. Choose an existing project or create a new project.
4. Enter the test name and continue.
5. Review the device and app options.
6. Select **Save**.

When the session is saved, the test appears in the project's **Tests** tab. The device and app can be copied with the test when their corresponding project options are enabled. After saving, open the test’s **Steps** tab to review actions and optionally add a **Nudge** for a step that may vary during a future rerun. Nudges are available whether or not Record for Automation was used during the original session.

## Upload an App to a Project

Open the project's **Apps** tab and select **Add App**. The complete upload flow is documented in [Upload an App to a Session](/device-farm/ai-session/upload-an-app).

## Start a Session from a Project

1. Open the project.
2. Select **Start Session**.
3. Choose the platform and real device.
4. Select an app from **App to test** when required.
5. Enter the session goal.
6. Start the session.

Starting from the project provides the project context and makes apps associated with that project available in the session app selector.

![Start session from project](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-44ee74180e202f7fd4dcaba41521c2da309dd3f0%2Fstart-session-from-project.png?alt=media)


# Analyze Session Activity

The Device Farm Dashboard provides a team-wide view of AI Session activity, outcomes, coverage, and usage trends.

## Open the Dashboard

1. Open the Device Farm **Dashboard**.
2. Review the **Test Performance Overview**.
3. Use the date range, filters, and refresh controls to adjust the view.

The dashboard includes a date range picker, **Filters**, **Reset**, and **Refresh** controls. The default view covers the last 30 days.

The date range picker provides **Today**, **Last 7 Days**, **Last 30 Days**, **This Year**, and **Custom Date Range** options. Select **Apply** to update the dashboard, or **Clear All** to remove a custom date selection.

## Filter Dashboard Activity

Open **Filters** to display the available filters:

* **Execution type** — All, Sessions, Runs, or Re-runs.
* **Outcome** — All, Ended, Failed, Active, Completed, or Cancelled.
* **Started By** — filter by user.
* **Project** — filter by project.
* **Test / Script** — filter by test or script.
* **Platform** — filter by platform.

Select **Apply Filters** to update the dashboard. Use **Reset** to clear the filters. The dashboard can also refresh automatically at the selected interval or be refreshed manually.

![Dashboard filters](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-7fae3f5b431e26125943310f878019d0f7854882%2Fdashboard-filters.png?alt=media)

## Review Dashboard Charts

Depending on the selected date range and filters, the dashboard can show:

* **Steps Over Time**
* **Executions Over Time**
* **Average Steps**
* **Outcome Trend**
* **Device Steps**
* **Domain Steps**
* **Device Usage Trend**
* **Platform Split**
* **Top Apps**
* **App Coverage By Device**
* **Device Coverage**
* **Top Tests And Scripts**

Use these charts to compare activity across users, projects, platforms, devices, apps, tests, and time periods.

Charts can display execution counts, step totals, outcome distributions, platform usage, app and device coverage, and the most frequently executed tests or scripts. If no activity matches the selected range and filters, the dashboard reports that it is waiting for data.

![Dashboard overview](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-72b113d8a67c8576510ce313cf3e10f2935ae78a%2Fdashboard-overview.png?alt=media)

The chart view also shows device and domain step totals, platform distribution, top applications, and app/device coverage in the same dashboard view.

![Dashboard chart details](https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-c2185140e7cae0a57aa981f0ffbc0b52a2c6f5cb%2Fdashboard-chart-details.png?alt=media)

If the dashboard is still retrieving data, charts may temporarily show a loading state. Use **Refresh** after the data becomes available.


# Record for Automation

**Record for Automation** is an experimental, optional feature for mobile AI sessions. It captures element locators while the agent works so a saved test can replay steps more directly on later runs.

It is available for Android and iOS mobile sessions and reruns. It is not available for Web sessions.

## Enable recording for a new session

1. Open **AI Session**.
2. Select **Android** or **iOS**.
3. Choose a real device and, if required, an app.
4. Turn on **Record for automation**.

The first time recording is enabled, Qyrus displays an experimental-feature dialog. Review the information, select the acknowledgement checkbox, and select **Continue**. Select **Not now** to leave recording disabled.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-bc7e82d60f51535c0b7111897cc1bdf2c0edad34%2Frecording-consent.png?alt=media" alt="Record for Automation consent dialog"></div>

When recording is enabled, choose an **Agent effort** level. Higher effort gives the agent more time to capture each element, so each recorded step may take longer.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-2b3e6ab45820876f0732790a6506f4ff8b2017df%2Frecording-enabled.png?alt=media" alt="Record for Automation enabled"></div>

5. Enter the session goal.
6. Select **Start AI Session**.
7. Send the instructions for the mobile journey.

The agent can run without recording. Recording is useful when you plan to save the session as a reusable test and run it again.

## Review captured elements

While the session runs, supported actions such as taps and text entry can produce recorded element information. When available, the Steps view reports that an element was captured and shows the number of locators found.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-2d7bf2a989b88882d3fcb2fcef274f6eab2cbdee%2Frecording-captured-elements.png?alt=media" alt="Captured elements during a session"></div>

Recording works best when the app exposes stable accessibility IDs, resource IDs, or labels. A large or deeply nested screen can take longer to inspect or produce no usable locator. That does not by itself fail the test; the step can fall back to normal guided execution.

## Save the recorded session as a test

1. Complete the mobile session.
2. Select **Save**.
3. Choose the destination project and test name.
4. Continue to the setup panel.
5. Review the project, test, and platform details.
6. Select **Save as Test**.

The saved test keeps the reusable session steps. Device, app, and test-data options are independent choices in the save panel.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-571645f8427bf70abd1208fb9443ba0c5a358cf9%2Frecording-save-test.png?alt=media" alt="Save recorded session as a test"></div>

Open the saved test’s **Steps** tab to review the steps that will run again.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-adb625f2386f95adbba043374980a65084e40531%2Frecording-saved-test-steps.png?alt=media" alt="Saved test steps"></div>

## Rerun with recorded elements

1. Open the saved test from its project.
2. Select the green **Run Test** button marked **Beta**.
3. Select the device and app as required.
4. Leave **Use recorded locators** enabled.
5. Optionally enable **Record for automation** again if you want to refresh captured locators.
6. Select **Run Test**.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-9a3c6870d4a39a9cf4b4ad0ad1ac790dce3ff4ff%2Frecording-rerun-options.png?alt=media" alt="Rerun with recorded locators"></div>

During the rerun, Qyrus first tries the recorded locator for a step. If the locator cannot be found, the agent falls back to guided execution. A nudge on a step also routes that step through agent-guided handling because the nudge may describe a different valid target.

After the rerun, open the test’s **Reports** tab and select the **Re-run:** report. The report can include an **Automation health** section with pass rate, first-try locator success, and steps that needed a different locator.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-05cce67a1e392919c676974ee38387f60c0ef49e%2Fautomation-health-report.png?alt=media" alt="Automation health after a rerun"></div>

## Add a nudge to a saved step

A nudge is short, optional guidance describing what may legitimately vary when one saved step runs again. It does not add an action, change the step order, or change the original action. Nudges are available on saved tests independently of Record for Automation; the original session does not need to have been run with recording enabled.

1. Open any saved test in its project. Record for Automation is not required.
2. Open the **Steps** tab.
3. Find the step that may vary.
4. Select **Add nudge**.
5. Enter guidance in the **Nudge for re-runs** field.
6. Select **Save Changes**.

Keep the note concise. Examples include:

* “Any visible market works; the recorded one may not be available.”
* “The button may be labeled Pay now and may appear at the bottom of the cart.”
* “The notification prompt only appears on first install; skip it if it is not shown.”

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-adb625f2386f95adbba043374980a65084e40531%2Frecording-saved-test-steps.png?alt=media" alt="Saved test Steps tab"></div>

Select **What is a nudge?** for the built-in explanation and examples.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-95399f70a6b237f0229a4212df20ff1d756d5875%2Fnudge-help.png?alt=media" alt="What is a nudge"></div>

Use a nudge when the target or expected visible result can vary. Edit the step instead when the required action itself has changed.


# Qyrion CLI

Qyrion CLI is a command-line interface designed to streamline test automation workflows across Windows, macOS, and Linux. Developers and QA engineers can configure remote staging and production targets, list available mobile devices and applications, and execute cloud-based automation test suites from a local terminal or CI/CD pipeline.

**Platforms:** Windows, macOS Apple Silicon, Linux, and npm/npx | **Version:** v1.0.0-beta | **Audience:** QA & DevOps

> **Note:** The same command surface can also be exposed through MCP (Model Context Protocol) for compatible agent clients.

## Table of Contents

1. [Installation & Setup](#installation--setup)
2. [Configuration](#configuration)
3. [CLI Commands Reference](#cli-commands-reference)
4. [Workflow Overview](#workflow-overview)

## Installation & Setup

### Download and Installation

Choose the installation method for your operating system.

#### Windows

1. Download the Windows 64-bit package, for example `qyrion-<version>-windows-x64.exe`.
2. Rename the downloaded file to `qyrion.exe`.
3. Place it in a directory on your `PATH`, or keep it in the folder from which you will run it.

Some antivirus tools may flag freshly built single-file executables. Verify the release checksum before allowing the file if prompted.

#### macOS Apple Silicon

1. Download `qyrion-<version>-macos-arm64.pkg` from the release page.
2. Open the `.pkg` installer. It installs `qyrion` to `/usr/local/bin`.
3. Verify the installation:

   ```bash
   qyrion --help
   ```

The installer is not notarized yet. If macOS blocks it, right-click the `.pkg`, select **Open**, and confirm the prompt. If necessary, remove the quarantine attribute first:

```bash
xattr -d com.apple.quarantine <file>.pkg
```

Intel Mac binaries are not currently built. Intel Mac users should use the source installation fallback described below.

#### Linux

Download the Linux archive, extract it, and place the `qyrion` binary on your `PATH`:

```bash
tar -xzf qyrion-<version>-linux-x64.tar.gz
sudo mv qyrion /usr/local/bin/
```

#### Cross-platform npm/npx installation

The `@qqyrus/qyrion` package wraps the platform-specific binaries. Configure the private GitHub npm registry once in `~/.npmrc`:

```ini
@qqyrus:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=<github-token>
```

Run without a global installation:

```bash
npx @qqyrus/qyrion --help
npx @qqyrus/qyrion@beta --help
```

Or install globally:

```bash
npm install -g @qqyrus/qyrion
qyrion --help
```

The wrapper downloads the binary for the current platform and caches it under `~/.qyrion/bin/`. While the repository is private, set `QYRION_GITHUB_TOKEN` or `GH_TOKEN` to a GitHub token with package-read access.

#### Intel Mac source fallback

Intel Mac users can install from source with `uv` inside the Qyrion source directory:

```bash
uv tool install .
qyrion --help
```

### Open a Terminal

On Windows, use PowerShell or Command Prompt. On macOS and Linux, use Terminal with Bash or Zsh. Navigate to the directory containing the executable when it is not installed on your `PATH`.

## Configuration

### Gathering Configuration Details

Before initializing the CLI, collect the following configuration parameters:

* **Profile Name:** A local tag to save this set of configurations (e.g., `stg`)
* **App URL:** The backend application URL target (e.g., `https://stg.qyrus.com`)
* **API Key:** Your user API token
* **Authorization Header:** The platform authorization token

### Obtaining the API Token from Qyrus Web App

#### Step 1: Login to Qyrus App

Sign in to your Qyrus Web application account using your web browser. You will land on the main workspace dashboard.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-ce41b7e5aba72c795a0cfc4337ecddad461d3606%2Fqyrus-login.png?alt=media" alt="Qyrus Dashboard Login"></div>

#### Step 2: Go to Profile Settings

Click on the user profile dropdown icon (e.g., 'NM') in the top right corner of the dashboard and select **'Profile Settings'**.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-0c1e1a224e3edafebc29b3af052354d0f3cf7402%2Fprofile-settings.png?alt=media" alt="Profile Settings"></div>

#### Step 3: Generate Token

Select the **'Generate Token'** tab and click the **'+ Generate Token'** button. In the modal dialog:

1. Fill in the **'Token Name'**
2. Enter a **'Description'**
3. Select your **'Scope'**
4. Set an **'Expiry Date'**
5. Click the **'+ Generate Token'** button

Copy and save your API token securely.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-cca4c1c60b6dcd4a8303fed91425979e8ccf6a89%2Fgenerate-token.png?alt=media" alt="Generate Token Modal"></div>

## CLI Commands Reference

### CLI Configuration

Execute the `configure` command using the retrieved configuration parameters to initialize your environment profile. Upon initial configuration, the CLI will output the branded banner header and fetch teams linked to your profile. Select the appropriate team number to continue.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-740ed7633424ef3235308ff3dbd040f4e645d693%2FCLI-configuration.png?alt=media" alt="CLI Configuration and Team Selection"></div>

**PowerShell:**

```powershell
.\qyrion.exe configure `
 --profile stg `
 --app-url "https://stg.qyrus.com" `
 --api-key "<YOUR_API_KEY>" `
 --authorization "<YOUR_AUTH_TOKEN>"
```

**Command Prompt:**

```cmd
qyrion.exe configure ^
 --profile stg ^
 --app-url "https://stg.qyrus.com" ^
 --api-key "<YOUR_API_KEY>" ^
 --authorization "<YOUR_AUTH_TOKEN>"
```

**macOS/Linux (Bash or Zsh):**

```bash
qyrion configure \
  --profile stg \
  --app-url "https://stg.qyrus.com" \
  --api-key "<YOUR_API_KEY>" \
  --authorization "<YOUR_AUTH_TOKEN>"
```

### Device List Query

List available mobile test devices for a specific platform:

**PowerShell:**

```powershell
.\qyrion.exe devices list --profile stg --platform ios
```

**Command Prompt:**

```cmd
qyrion.exe devices list --profile stg --platform ios
```

**macOS/Linux (Bash or Zsh):**

```bash
qyrion devices list --profile stg --platform ios
```

### Device List Output

The command returns a table with the following columns:

| Column       | Description                                            |
| ------------ | ------------------------------------------------------ |
| `device_ref` | Unique device reference identifier (used in test runs) |
| `Name`       | Human-readable device name (e.g., "Apple iPhone 14")   |
| `Platform`   | Device platform (iOS or Android)                       |
| `OS`         | Operating system version                               |

Example output:

```
device_ref                           Name                          Platform  OS
dfdev_PQhIQ1bqmqI-ErSe1sKo7hy1SU72   Apple iPhone 14               iOS       17.6.1
dfdev_md8w-Qm3g1aChSEtQy8kI-Hksq01   Apple iPhone 16               iOS       18.0
dfdev_9aVfvJ_7Su3DSj0GS0JHSt78m9I3j7 Apple iPad Pro 12.9" (2021)    iOS       15.6.2
```

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-c0d32fcb8cc8d6397cc3d5e3b589debf10080a4e%2Fdevice-list.png?alt=media" alt="Device List Output"></div>

### App Catalog Query

List application binaries uploaded to the team environment:

**PowerShell:**

```powershell
.\qyrion.exe apps list --profile stg
```

**Command Prompt:**

```cmd
qyrion.exe apps list --profile stg
```

**macOS/Linux (Bash or Zsh):**

```bash
qyrion apps list --profile stg
```

### App Catalog Output

The command returns a table with:

| Column           | Description                                       |
| ---------------- | ------------------------------------------------- |
| `project_app_id` | Unique application identifier (used in test runs) |
| `Name`           | Application name                                  |
| `Platform`       | Platform (iOS or Android)                         |
| `Version`        | App version number                                |

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b357d5fbeac2d1424bd304dbddd36e842932310a%2Fapp-list.png?alt=media" alt="App Catalog Output"></div>

### Running a Test Session

Execute automated test workflows using targeted devices and apps with natural language scenarios:

**PowerShell:**

```powershell
.\qyrion.exe run "login using customer demo account and check if dashboard loads" `
 --profile stg `
 --device-ref "device-ref_id" `
 --app "app_id" `
 --mode ci --timeout 900 --view --viewer-open
```

**Command Prompt:**

```cmd
qyrion.exe run "login using customer demo account and check if dashboard loads" ^
 --profile stg ^
 --device-ref "device-ref_id" ^
 --app "app_id" ^
 --mode ci --timeout 900 --view --viewer-open
```

**macOS/Linux (Bash or Zsh):**

```bash
qyrion run "login using customer demo account and check if dashboard loads" \
  --profile stg \
  --device-ref "device-ref_id" \
  --app "app_id" \
  --mode ci --timeout 900 --view --viewer-open
```

### Session Run Options & Flags

| Argument        | Required | Type                | Purpose                                                                    |
| --------------- | -------- | ------------------- | -------------------------------------------------------------------------- |
| `run`           | Yes      | String (Positional) | The NLP instruction specifying the test script scenario                    |
| `--profile`     | Yes      | String              | The specific backend server configuration profile identifier               |
| `--device-ref`  | Yes      | String              | The target unique device reference ID fetched from the CLI device registry |
| `--app`         | Yes      | String              | The target application binary ID fetched from the CLI app catalog          |
| `--mode`        | No       | String              | Execution mode (e.g. `ci` or `interactive`). Defaults to `ci`              |
| `--timeout`     | No       | Integer             | Maximum timeout limit in seconds before aborting execution                 |
| `--view`        | No       | Flag                | Allows visual tracking/stream during execution                             |
| `--viewer-open` | No       | Flag                | Launches the Qyrion Mobile Viewer automatically in your web browser        |

### Example Scenarios

**Login Test:**

```powershell
.\qyrion.exe run "login with credentials and verify dashboard" `
 --profile stg `
 --device-ref "dfdev_PQhIQ1bqmqI-ErSe1sKo7hy1SU72" `
 --app "project_app_2b18f85ca0d2Fce8785f" `
 --timeout 900 --viewer-open
```

**Purchase Flow:**

```powershell
.\qyrion.exe run "add item to cart and complete checkout" `
 --profile stg `
 --device-ref "dfdev_md8w-Qm3g1aChSEtQy8kI-Hksq01" `
 --app "project_app_2b18f85ca0d2Fce8785f" `
 --timeout 1200 --view
```

**Data Validation:**

```powershell
.\qyrion.exe run "check if user profile page displays correct information" `
 --profile prod `
 --device-ref "dfdev_9aVfvJ_7Su3DSj0GS0JHSt78m9I3j7" `
 --app "project_app_2b18f85ca0d2Fce8785f" `
 --mode interactive
```

## Tips

* Use `--profile` to switch between staging (`stg`) and production (`prod`) environments
* Use `--timeout` to set appropriate test duration based on scenario complexity
* Use `--view` and `--viewer-open` during development to observe test execution
* For CI/CD pipelines, use `--mode ci` without viewer flags for automated runs
* Keep device and app identifiers from earlier list queries for faster test runs

## Workflow Overview

### 1. Select a Device

List available mobile test devices and select one for your test run.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-c0d32fcb8cc8d6397cc3d5e3b589debf10080a4e%2Fdevice-list.png?alt=media" alt="Device List Output"></div>

### 2. Choose an App

List application binaries uploaded to your team environment and select one to test.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-b357d5fbeac2d1424bd304dbddd36e842932310a%2Fapp-list.png?alt=media" alt="App Catalog Output"></div>

### 3. Execute Test

Run automated test workflows using natural language scenarios on your selected device and app.

### 4. View Results

When run with the `--viewer-open` and `--view` parameters, a browser window opens automatically, displaying the real-time interaction stream on the device in the Qyrion Mobile Viewer interface.

<div align="center"><img src="https://2346916530-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkSZu8cT8D2Zwayrr4I91%2Fuploads%2Fgit-blob-be0e45be4ef4a7a2baa2757adb3aaa3c53bb1cd2%2Fexecution-result.png?alt=media" alt="Execution Result and Mobile Viewer"></div>


# AI Session FAQs

## 1. What is a Device Farm AI Session?

You give an objective in plain language, pick a real device or a URL for web, and an AI agent drives the app step by step: tapping, typing, scrolling, and verifying what it sees on screen. Every action, screenshot, and verdict is recorded into a report you can replay and share.

## 2. How long can a session run? Does it fall apart on big flows?

Sessions can run for 3 to 4 hours, depending on device and browser timeouts. The agent manages its own history in the background as the run grows.

## 3. What are milestones and when does the agent create them?

When an objective asks for several separate outcomes, the agent splits it into checkpoints and works through them in order. The trigger is breadth, not length. This keeps the agent from declaring success after only the first part works and lets later milestones depend on earlier ones.

## 4. What is a nudge?

A nudge is a short note on one step about what may genuinely differ on the next run, so the agent adapts instead of stopping. It does not change the recorded action or step order. You can send one to a live session or save one on a step of a saved test.

## 5. When should I add a nudge to a step?

Add a nudge when content changes between runs, a target moves or is renamed, a step may not apply every time, or the screen cannot show success clearly. The agent can also write nudges when it notices a legitimate variation during a session.

## 6. Can I edit a saved test before re-running it?

Yes. Steps can be removed, reordered, and given nudges. Changes apply to future runs only; past reports stay unchanged.

## 7. What happens to each recorded step during a re-run?

The re-run uses the recorded locator first. If it cannot find the element, the agent reads the live screen and re-aims the recorded action. A bounded rescue attempt can then recover the step. If recovery is not possible, the step is skipped with a reason.

## 8. What do the report statuses mean?

* **Passed:** The step replayed successfully.
* **Failed:** The expected result did not occur.
* **Skipped:** The step could not apply, with the reason saved.
* **Rescued:** The recorded path changed, but the agent reached the same outcome another way.

## 9. Is rescue safe?

Yes. The rescue agent receives a fixed number of turns and steps. It cannot become a fresh exploratory session. If it cannot recover within its budget, the step is reported honestly.

## 10. What is Record for Automation and why is it marked Experimental?

Record for Automation captures an element locator for each action so the session can be saved and re-run as an automation test without the agent re-deciding every step. It is marked Experimental because some apps may expose no locators or only partial locator coverage.

## 11. What does the effort setting control?

The effort setting controls how long the agent may wait for a screen’s page source while recording. Higher settings allow more time for large or deeply nested screens.

## 12. What happens to screens that exceed the effort budget?

They are remembered for the app and are not retried unnecessarily. Steps on those screens can still replay by screen position instead of by locator.

## 13. Does recording slow the session down?

Yes. Recording adds a locator read to each step, so the first recorded session may run more slowly. Later re-runs can recover that time through locator replay.

## 14. What does a run cost?

Run costs depend on model usage, session length, and the selected device or platform. Intelligence costs are separate from device-time and platform costs.

## 15. iOS or Android: which is better for sessions and recording?

Both platforms can be used. The time required to retrieve page-source information can differ by platform and app, so a higher effort setting may help when recording slower screens.

## 16. How do I share or escalate a run?

Runs provide actions such as Copy run ID, Copy deep link, and Create JIRA ticket when an integration is configured. The deep link opens the report directly for anyone with access.

## 17. Can I drive AI Session from the command line?

Yes, with the Qyrion CLI. Use it to run objectives on mobile devices or web sessions, view and re-run sessions, access artifacts, and work with reports.

## 18. My Android app renders a black screen. What can I do?

The app may be using secure-screen flags that blank screenshots and the device stream. Contact your internal Qyrus support or platform team for approved troubleshooting guidance. Do not distribute internal tools or links to clients or end users.


