diff --git a/assets/images/appium-app/application/automation-upload.gif b/assets/images/appium-app/application/automation-upload.gif new file mode 100644 index 00000000..0353cbdc Binary files /dev/null and b/assets/images/appium-app/application/automation-upload.gif differ diff --git a/assets/images/appium-app/application/real-device-upload.gif b/assets/images/appium-app/application/real-device-upload.gif new file mode 100644 index 00000000..b3f762ec Binary files /dev/null and b/assets/images/appium-app/application/real-device-upload.gif differ diff --git a/assets/images/real-device-app-testing/teams/bulk-distribute.gif b/assets/images/real-device-app-testing/teams/bulk-distribute.gif new file mode 100644 index 00000000..efcd6ba4 Binary files /dev/null and b/assets/images/real-device-app-testing/teams/bulk-distribute.gif differ diff --git a/assets/images/real-device-app-testing/teams/deallocate-device.gif b/assets/images/real-device-app-testing/teams/deallocate-device.gif new file mode 100644 index 00000000..74a8d137 Binary files /dev/null and b/assets/images/real-device-app-testing/teams/deallocate-device.gif differ diff --git a/assets/images/real-device-app-testing/teams/edit-allocation.gif b/assets/images/real-device-app-testing/teams/edit-allocation.gif new file mode 100644 index 00000000..f55810e0 Binary files /dev/null and b/assets/images/real-device-app-testing/teams/edit-allocation.gif differ diff --git a/assets/images/real-device-app-testing/teams/filters.png b/assets/images/real-device-app-testing/teams/filters.png new file mode 100644 index 00000000..85db917c Binary files /dev/null and b/assets/images/real-device-app-testing/teams/filters.png differ diff --git a/assets/images/real-device-app-testing/teams/uni-distribute.gif b/assets/images/real-device-app-testing/teams/uni-distribute.gif new file mode 100644 index 00000000..6563e353 Binary files /dev/null and b/assets/images/real-device-app-testing/teams/uni-distribute.gif differ diff --git a/docs/app-auto-network-throttling.md b/docs/app-auto-network-throttling.md index 99fb37ab..7ca1d260 100644 --- a/docs/app-auto-network-throttling.md +++ b/docs/app-auto-network-throttling.md @@ -1,7 +1,7 @@ --- id: app-auto-network-throttling title: Network Throttling -hide_title: true +hide_title: false sidebar_label: Network Throttling description: Now validate your mobile applications over low latency networks (2G/3G/LTE) or in offline mode with varying upload and download speeds. LambdaTest empowers you to simulate these mobile network conditions through its desired capabilities, ensuring comprehensive testing of your mobile applications. keywords: @@ -50,25 +50,11 @@ import TabItem from '@theme/TabItem'; }) }} > - -# Network Throttling - -*** In Appium testing, assessing your app's performance under diverse network conditions (2G/3G/LTE) and offline scenarios, is crucial. Fluctuating upload and download speeds can significantly impact your app's behavior across different devices. LambdaTest simplifies testing by enabling simulation of diverse network conditions. Whether starting with defaults or custom profiles, these features replicate real-world scenarios, proving invaluable for Appium tests. The device maintains uninterrupted internet connectivity throughout, ensuring a reliable testing experience for your mobile applications. -## Objectives ----- - -By the end of this guide, you will learn how to: -- Initialize a test session with predefined network profiles. -- Dynamically change network profiles during test execution using LambdaHooks. -- Define and implement custom network profiles. -- Reset the network profile to default settings. - ## Workflow ----- ### Initialization - **Capability:** Initiate a test session with predefined network profiles using the `networkProfile` capability. Example: @@ -137,12 +123,13 @@ To utilize the **networkProfile** capability, ensure that you include `network: #### iOS - - **LambdaHook:** You can also switch to offline mode during the test execution with the following command: ```python driver.execute_script("updateNetworkProfile=offline") ``` +## Toggle Offline/Online Mode via API + - For both iOS and android devices you can use the offline/online mode API as well within the running test session: ```bash @@ -152,7 +139,6 @@ To utilize the **networkProfile** capability, ensure that you include `network: --data '{"mode": "offline"}' ``` - :::note - **Network throttling** results may vary sometimes based on multiple factors including network conditions and device performance. diff --git a/docs/application-setup-via-api.md b/docs/application-setup-via-api.md new file mode 100644 index 00000000..12306751 --- /dev/null +++ b/docs/application-setup-via-api.md @@ -0,0 +1,185 @@ +--- +id: application-setup-via-api +title: Perform Operations on your Application via API +sidebar_label: via API +description: This guide will explain how to perform operations with your applications via api for real and virtual devices. +keywords: + - appium + - application operations + - lambdatest + - mobile testing + - apis + - setup application +url: https://www.lambdatest.com/support/docs/application-setup-via-api/ +site_name: LambdaTest +slug: application-setup-via-api/ +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import {YOUR_LAMBDATEST_USERNAME, YOUR_LAMBDATEST_ACCESS_KEY} from "@site/src/component/keys"; +import CodeBlock from '@theme/CodeBlock'; + + + +To test your **iOS** (.ipa file) or **Android** (.apk or .aab file) application on LambdaTest, you can use our public REST APIs. In this documentation, we have listed all the operations you can perform with your application via APIs or cURL commands for both Virtual and Real Devices. + +:::note +The maximum size for application should not exceed 1GB. +::: + +:::tip +- If you do not have any **.apk** or **.ipa** file, you can run your sample tests on LambdaTest by using our sample :link: [Android app](https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk) or sample :link: [iOS app](https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_ios.ipa). +::: + +## Upload your Application + +| PARAMETER | EXAMPLE | DESCRIPTION | +|-----------------|-------------|------------| +| `custom_id` | `-F "custom_id="Proverbial_1.0"` | You do not have to remember the `app_URL` and only use the `custom_id` to run your automation on the same app. | +| `storage` | `-F "storage=file"`
DEFAULT: `url` | Used to change the way LambdaTest stores the link.
Used when we Upload using App URL | +| `visibility` | `-F "visibility=team"`
DEFAULT: `individual` | Used to change the visibility of the application being uploaded. Once the app is uploaded using the `team`, everyone in the organisation can use the same URL to run the tests. | + +### Using App File + +
+ +{`curl -u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}" -X POST "https://manual-api.lambdatest.com/app/upload/realDevice" -F "appFile=@"/Users/macuser/Downloads/Appname.apk"" -F "name="appname"" +`} + +
+ +### Using App URL + +
+ +{`curl -u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}" -X POST "https://manual-api.lambdatest.com/app/upload/realDevice" -F "url=https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk" -F "name=Proverbial_App" -F "custom_id=sampleName" -F "storage=url" -F "visibility=individual"`} + +
+ +- Response of above cURL will be a **JSON** object containing the `App URL` of the format - ``lt://APP123456789123456789`` + +:::warning note +The upload time of your application can range from a few seconds to a minute, depending on the size of your application. Therefore, do not interrupt the cURL command request until you receive the response. +::: + +## Fetch your Applications + + + + +
+ + {`curl --location --request GET "https://${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}@manual-api.lambdatest.com/app/data?type=android&level=user"`} + +
+ +
+ + +
+ + {`curl --location --request GET "https://${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}@manual-api.lambdatest.com/app/data?type=ios&level=user"`} + +
+ +
+
+ +Shown below is the response to the above cURL request. + +```javascript +{ + "metaData": { + "type": "ios", + "total": 1 + }, + "data": [ + { + "app_id": "APP100245789181570497850", + "name": "proverbial_ios.ipa", + "type": "ios", + "updated_at": "2022-05-10T11:19:30.000Z", + "shared": false, + "source": "web-client" + } + ] +} +``` + +## Deleting your Application + +To delete your uploaded apps, run the below cURL command. + +
+ +{`curl --location --request DELETE "https://${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}@manual-api.lambdatest.com/app/delete" \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "appIds" : "APPID1,APPID2" +}' +`} + +
+ +Shown below is the response to the above cURL request. + +```javascript +{ + "message": "Deleted successfully." +} +``` + +## Processing check for your Application + +To unlock features such as network logs, image injection, and screenshotunblock feature for your application, app needs to undergo a processing phase. This processing takes a few minutes after the application is uploaded. You can verify if the processing is complete before running your automation script using the following API. + +
+ +{`curl --location --request POST 'https://mobile-api.lambdatest.com/mobile-automation/api/v1/fetchpatchedapkurl' \ +--header 'Authorization: Basic c2hhbnRhbnV3OkFPOEh3NHJtV2hxUlJZSVl3OEk1elMzajhCS0c2ZHl3SVBZeXNNSDJPakdtbFVheXZC' \ +--header 'Content-Type: application/json' \y +--data-raw '{ + "appId": "APP10160161171698993659206876", + "networkLogsEnabled": true, + "imageInjectionEnabled": true, + "screenshotUnblockEnabled": true +}'`} + +
+ +The payload allows you to check the processing status for specific features. If the **patched_url** is empty, the processing is still in progress. To check if the processing for image injection or screenshot unblock is complete, pass either **imageInjectionEnabled** or **screenshotUnblockEnabled** as `true` based on the feature you are testing. + +```javascript +{ + "data": { + "imageinjection_ready": false, //current processing status + "patched_url": "", + "screenshotunblock_ready": false, //current processing status + "status": "success" + }, + "status": "success" +} +``` \ No newline at end of file diff --git a/docs/application-setup-via-gui.md b/docs/application-setup-via-gui.md new file mode 100644 index 00000000..c3b4c05c --- /dev/null +++ b/docs/application-setup-via-gui.md @@ -0,0 +1,69 @@ +--- +id: application-setup-via-gui +title: Perform Operations on your Application via GUI +sidebar_label: via GUI +description: Explore how to perform operations with your applications like uploading, deleting via gui for real and virtual devices. +keywords: + - appium + - application operations + - lambdatest + - mobile testing + - apis + - setup application +url: https://www.lambdatest.com/support/docs/application-setup-via-gui/ +site_name: LambdaTest +slug: application-setup-via-gui/ +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import {YOUR_LAMBDATEST_USERNAME, YOUR_LAMBDATEST_ACCESS_KEY} from "@site/src/component/keys"; +import CodeBlock from '@theme/CodeBlock'; +import NewTag from '../src/component/newTag'; + + +To test your iOS (.ipa file) or Android (.apk or .aab file) application on LambdaTest, you can upload them directly from the dashboard. In this documentation, we have listed the the ways via which you can upload your application for both Virtual and Real Devices. + +## Real Device Dashboard +- **Access the Dashboard :** Log in to your LambdaTest account and navigate to the [Real Device dashboard](https://applive.lambdatest.com/app). +- **Initiate the Upload :** Click the Upload button in the dashboard and select your application file from your local system: + - **For Android :** Ensure the file is in `.apk` or `.aab` format. + - **For iOS :** Use `.ipa` format. +Wait for the file to upload and process. A success message will indicate when your application is ready. +- **Open App Settings :** Once uploaded, find your application in the list and click on the Settings button. +- **Copy the App ID :** In the settings, locate the App ID field. Copy this ID, as it will be required to reference your app in automated tests or other configurations. + +Image + +> Learn how to [Upload Apps on LambdaTest’s Real Device Cloud](/support/docs/upload-apps-on-real-device-cloud/) in detail. + +## Automation Dashboard +- **Access the App Automation Dashboard :** Log in to your LambdaTest account and navigate to the [App Automation Dashboard](https://appautomation.lambdatest.com/build). +- **Upload the Application :** Click the Browse File button in the App tab under the Real Device or Virtual Device section. Select your application file from your local system: + - **Android :** Upload a `.aab` or `.apk` file. + - **iOS :** Upload an `.ipa` file. +- **Copy the App URL :** After uploading, an `app_url` will be generated (format: `"lt://"`). Copy this app_url and use it in your test scripts to identify your application. + +Image \ No newline at end of file diff --git a/docs/desired-capabilities-in-appium.md b/docs/desired-capabilities-in-appium.md index 8c97decd..4a2017a2 100644 --- a/docs/desired-capabilities-in-appium.md +++ b/docs/desired-capabilities-in-appium.md @@ -43,144 +43,98 @@ slug: desired-capabilities-in-appium/ }) }} > - ---- - Desired capabilities in [Appium](https://www.lambdatest.com/appium) are essential for guiding the Appium server to create the correct test automation environment. Represented as a set of key-value pairs within a JSON object, these capabilities allow [QA automation](https://www.lambdatest.com/blog/qa-automation/) engineers to specify the desired mobile platform and configuration for their test sessions. By setting these parameters, QAs can ensure that the Appium server accurately targets the intended test environment, facilitating effective and efficient [mobile app testing](https://www.lambdatest.com/mobile-app-testing). > **Note:** With LambdaTest [capabilities generator](https://www.lambdatest.com/capabilities-generator/) run your App Automation leveraging Appium Desktop. -
- ## Mandatory capabilities - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| user | TYPE: STRING | Your LT username. | -| accessKey | TYPE: STRING | Your LT Access Key. | -| isRealMobile | TYPE: BOOLEAN
DEFAULT: FALSE
`isRealMobile=TRUE`
OR
`isRealMobile=FALSE` | This capability is used to run the test on Real Device. | -| deviceName | TYPE: STRING
`iPhone 13` | Name of the device. -| platformName | TYPE: STRING
`ios` | Name of the OS. | -| platformVersion | TYPE: STRING
`14` | OS version. | - - +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|------- | ---------------------- | +| user | TYPE: STRING | Your `LT_USERNAME` | +| accessKey | TYPE: STRING | Your `LT_Access_Key`| +| isRealMobile | TYPE: BOOLEAN
DEFAULT: FALSE
`isRealMobile=TRUE`
OR
`isRealMobile=FALSE` | This capability is used to run the test on Real Device. | +| deviceName | TYPE: STRING
`iPhone 13` | Name of the device. +| platformName | TYPE: STRING
`ios` | Name of the OS. | +| platformVersion | TYPE: STRING
`14` | OS version. | ## Debugging Options - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| video | TYPE: BOOLEAN
DEFAULT: TRUE
`video=TRUE`
OR
`video=FALSE` | Video recording of the complete screen. | -| devicelog | TYPE: BOOLEAN
DEFAULT: FALSE
`devicelog=TRUE`
OR
`devicelog=FALSE` | Enable Device logs. | -| network | TYPE: BOOLEAN
DEFAULT: FALSE
`network=TRUE`
OR
`network=FALSE` | Enable Network logs. | -| console | TYPE: Boolean
DEFAULT: FALSE
`console: true` | Used to fetch the console logs.| - - - +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| video | TYPE: BOOLEAN
DEFAULT: TRUE
`video=TRUE`
OR
`video=FALSE` | Video recording of the complete screen. | +| devicelog | TYPE: BOOLEAN
DEFAULT: FALSE
`devicelog=TRUE`
OR
`devicelog=FALSE` | Enable Device logs. | +| network | TYPE: BOOLEAN
DEFAULT: FALSE
`network=TRUE`
OR
`network=FALSE` | Enable Network logs. | +| console | TYPE: Boolean
DEFAULT: FALSE
`console: true` | Used to fetch the console logs.| ## Test configuration - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| build | TYPE: STRING
DEFAULT: Untitled
`build=iOS Small Run` | You can group your tests like a job containing multiple tests. | -| name | TYPE: STRING
DEFAULT: TestID of the Test. In case the Name is not passed.
`name=iphone 6 Small Run` | Name of your test. | -| project | Will remain blank in case 'project' is not passed in capability.
`project=Small Run` | You can group your builds like a project containing multiple jobs. | -| queueTimeout | TYPE: Integer
DEFAULT: 600
`queueTimeout=300` | This capability can be used to modify the Queue timeout value within a range. queueTimeout Range : 300-900. | -| idleTimeout | TYPE: Integer
DEFAULT: 120
`idleTimeout=120` | This capability can be used to modify the timeout value. | -| deviceOrientation | TYPE: STRING
DEFAULT: PORTRAIT
`deviceOrientation=portrait`
OR
`deviceOrientation=landscape` | Change the screen orientation of the device. | -| newCommandTimeout | TYPE: STRING
DEFAULT: 60
`newCommandTimeout=60` | | How long (in seconds) Appium will wait for a new command from the client before assuming the client quit and ending the session. | -| automationName | TYPE: STRING
DEFAULT (Android): UiAutomator2
DEFAULT (iOS): XCUITest
`automationName = UiAutomator2` | Choose which automation engine you'd like to use.
Android - `UiAutomator2`, `Flutter`.
iOS - `XCUITest`, `Flutter`. | -| eventTimings | TYPE: BOOLEAN
DEFAULT: FALSE
`true` | Enable or disable the reporting of the timings for various Appium-internal events (e.g., the start and end of each command, etc.). To enable, use true. The timings are then reported as events property on response to querying the current session. See the event timing docs for the the structure of this response. | -| otherApps | TYPE: ARRAY OF STRINGS
DEFAULT: [ ] or Empty Array
`"otherApps":`
`["lt://APP1002211081648217405891389",`
`"lt://APP1002211081648217429465823"]` | Accepts a list of App URLs returned after uploading an app on the LambdaTest servers.
Conditions to be satisfied:
1. App should also be passed if "otherApps" is passed.
2. Length of app URL
array ≤ 3.
3. At max 3 other apps can be installed.
4. App should not be present inside 'otherApp' array.
5. No duplicates in ‘otherApp’ array. | -| globalHttpProxy | TYPE: BOOLEAN
DEFAULT: FALSE
globalHttpProxy = true | This is only for Android specific applications and devices.
If the customer’s app requires Proxy to enable Data Transfer that is not possible otherwise, they can reach out to the CS & LT will enable it for them from BE.This is not available for customers directly unless set from BE by LT. | -| region | TYPE: STRING
DEFAULT: Location of the nearest data center
`region = US` | 1. By default, it picks the location of the nearest data center.
2. If you would like to change the region of the Data Center manually, you can pass this capability.
3. Currently, only three regions are supported: Europe - "EU", USA - "US" and Asia-Pacific - "AP" | -| waitForIdleTimeout | TYPE: BOOLEAN
`waitForIdleTimeout = 0` | 1. Sets the timeout for waiting for the user interface to go into an idle state before starting a UI Automator action.
2. It changes the timeout of the configuration in UIAutomator and could help to make interaction speed faster.| +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| build | TYPE: STRING
DEFAULT: Untitled
`build=iOS Small Run` | You can group your tests like a job containing multiple tests. | +| name | TYPE: STRING
DEFAULT: TestID of the Test. In case the Name is not passed.
`name=iphone 6 Small Run` | Name of your test. | +| project | Will remain blank in case 'project' is not passed in capability.
`project=Small Run` | You can group your builds like a project containing multiple jobs. | +| queueTimeout | TYPE: Integer
DEFAULT: 600
`queueTimeout=300` | This capability can be used to modify the Queue timeout value within a range. queueTimeout Range : 300-900. | +| idleTimeout | TYPE: Integer
DEFAULT: 120
`idleTimeout=120` | This capability can be used to modify the timeout value. | +| deviceOrientation | TYPE: STRING
DEFAULT: PORTRAIT
`deviceOrientation=portrait`
OR
`deviceOrientation=landscape` | Change the screen orientation of the device. | +| orientation | TYPE: STRING
`orientation=auto` | This capability allows the app or browser to automatically adjust its display based on the physical orientation of the device. | +| newCommandTimeout | TYPE: STRING
DEFAULT: 60
`newCommandTimeout=60` | | How long (in seconds) Appium will wait for a new command from the client before assuming the client quit and ending the session. | +| automationName | TYPE: STRING
DEFAULT (Android): UiAutomator2
DEFAULT (iOS): XCUITest
`automationName = UiAutomator2` | Choose which automation engine you'd like to use.
Android - `UiAutomator2`, `Flutter`.
iOS - `XCUITest`, `Flutter`. | +| eventTimings | TYPE: BOOLEAN
DEFAULT: FALSE
`true` | Enable or disable the reporting of the timings for various Appium-internal events (e.g., the start and end of each command, etc.). To enable, use true. The timings are then reported as events property on response to querying the current session. See the event timing docs for the the structure of this response. | +| otherApps | TYPE: ARRAY OF STRINGS
DEFAULT: [ ] or Empty Array
`"otherApps":`
`["lt://APP1002211081648217405891389",`
`"lt://APP1002211081648217429465823"]` | Accepts a list of App URLs returned after uploading an app on the LambdaTest servers.
Conditions to be satisfied:
1. App should also be passed if "otherApps" is passed.
2. Length of app URL
array ≤ 3.
3. At max 3 other apps can be installed.
4. App should not be present inside 'otherApp' array.
5. No duplicates in ‘otherApp’ array. | +| globalHttpProxy | TYPE: BOOLEAN
DEFAULT: FALSE
globalHttpProxy = true | This is only for Android specific applications and devices.
If the customer’s app requires Proxy to enable Data Transfer that is not possible otherwise, they can reach out to the CS & LT will enable it for them from BE.This is not available for customers directly unless set from BE by LT. | +| region | TYPE: STRING
DEFAULT: Location of the nearest data center
`region = US` | 1. By default, it picks the location of the nearest data center.
2. If you would like to change the region of the Data Center manually, you can pass this capability.
3. Currently, only three regions are supported: Europe - "EU", USA - "US" and Asia-Pacific - "AP" | +| waitForIdleTimeout | TYPE: BOOLEAN
`waitForIdleTimeout = 0` | 1. Sets the timeout for waiting for the user interface to go into an idle state before starting a UI Automator action.
2. It changes the timeout of the configuration in UIAutomator and could help to make interaction speed faster.| | privateCloud | TYPE: BOOLEAN
DEFAULT: FALSE
`privateCloud: True`| If your organization has opted for Private Cloud, then using this flag will fetch the devices from your Private Cloud.
If your organization has not opted for Private Cloud, your test can fail if this capability is passed.| -| w3c | TYPE: Boolean
DEFAULT: FALSE
`w3c: true` | Appium will use the W3C webdriver protocol when it's set to true.| -| autoLaunch | TYPE: Boolean
DEFAULT: TRUE
`autoLaunch: false`| If the user doesn't pass this, the app will start on boot. Else, it will not open on boot.| - - +| w3c | TYPE: Boolean
DEFAULT: FALSE
`w3c: true` | Appium will use the W3C webdriver protocol when it's set to true.| +| autoLaunch | TYPE: Boolean
DEFAULT: TRUE
`autoLaunch: false`| If the user doesn't pass this, the app will start on boot. Else, it will not open on boot.| ### Android - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| playStoreLogin | TYPE: STRINGS OF HASHMAP
DEFAULT: FALSE
`"playStoreLogin":`
`{"email":user@gmail.com","password":"ejndfdfs"}` | The capability is used to login to Play Store on Android devices.
Conditions to be specified:
1. The account should not be using any kind 2 factor authentication, otherwise the test can fail.
2. The account should not require you to login using a trusted device using popup or OTP.
3. Since we clean the Device after each session, please make sure you are logging into the account during each session.| +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| playStoreLogin | TYPE: STRINGS OF HASHMAP
DEFAULT: FALSE
`"playStoreLogin":`
`{"email":user@gmail.com","password":"ejndfdfs"}` | The capability is used to login to Play Store on Android devices.
Conditions to be specified:
1. The account should not be using any kind 2 factor authentication, otherwise the test can fail.
2. The account should not require you to login using a trusted device using popup or OTP.
3. Since we clean the Device after each session, please make sure you are logging into the account during each session.| | appActivity | TYPE: String
`com.lambdatest.proverbial/.home`| Launch the activity directly on the device using the App Activity. **Only for Android**.| | appPackage | TYPE: String
`com.lambdatest.proverbial`| Launch the app directly on the device using the App Package. **Only for Android**.| ### iOS - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| resignApp | TYPE: BOOLEAN
DEFAULT: True
`resignApp = true` | 1. By default, if this capability is not passed, your app will be re-signed.
2. You can pass "false" as a capability to prevent your apps from being re-signed.
3. This is only for iOS-specific applications and devices | +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| resignApp | TYPE: BOOLEAN
DEFAULT: True
`resignApp = true` | 1. By default, if this capability is not passed, your app will be re-signed.
2. You can pass "false" as a capability to prevent your apps from being re-signed.
3. This is only for iOS-specific applications and devices | | bundleId | TYPE: String
`com.whatsapp`| Launch the app directly on the device using the Bundle ID. **Only for iOS**.| -| autoDismissAlerts | TYPE: BOOLEAN
DEFAULT: False
`autoDismissAlerts=TRUE`
OR
`autoDismissAlerts=FALSE` | Appium capability to Dismiss alerts/popups on iOS Devices. | -| autoAcceptAlerts | TYPE: BOOLEAN
DEFAULT: True
`autoAcceptAlerts=TRUE`
OR
`autoAcceptAlerts=FALSE` | Appium capability to Accept alerts/popups on iOS Devices. | -| noReset | TYPE: BOOLEAN
DEFAULT: False
`true` | Don't reset app state before this session. See [here](https://appium.readthedocs.io/en/stable/en/writing-running-appium/other/reset-strategies/) for more details. - +| autoDismissAlerts | TYPE: BOOLEAN
DEFAULT: False
`autoDismissAlerts=TRUE`
OR
`autoDismissAlerts=FALSE` | Appium capability to Dismiss alerts/popups on iOS Devices. | +| autoAcceptAlerts | TYPE: BOOLEAN
DEFAULT: True
`autoAcceptAlerts=TRUE`
OR
`autoAcceptAlerts=FALSE` | Appium capability to Accept alerts/popups on iOS Devices. | +| noReset | TYPE: BOOLEAN
DEFAULT: False
`true` | Don't reset app state before this session. See [here](https://appium.readthedocs.io/en/stable/en/writing-running-appium/other/reset-strategies/) for more details. ## Real User conditions - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| language | TYPE: STRING
`fr` | Language to set for iOS (XCUITest driver only) and Android. | -| locale | TYPE: STRING
`fr_CA, CA` | Locale to set for iOS (XCUITest driver only) and Android. fr_CA format (language code and country name abbreviationfor iOS). CA format (country name abbreviation) for Android.
For more info, [click here.](https://www.lambdatest.com/support/docs/list-of-supported-locales/) | -| disableAnimation | TYPE: BOOLEAN
DEFAULT: False
`disableAnimation = true` | Disable all kinds of animations on the complete device [including all applications] that is running the test.| -| lambdaMaskCommands | TYPE: Array of Strings
DEFAULT: Empty Array
`["setValues", "setCookies", "getCookies"]` | Used to make sure that the values aren't shown on the device. The text could be a Password.| -| timezone | TYPE: String
`timezone=UTC+13:00`
`timezone=UTC-0400` | Used to set the timezone on the device using the UTC Time.
If this capability is not passed, the device will auto update the timezone based on the physical location of the device.| -| geoLocation | TYPE: String
`geoLocation=US`
`geoLocation=FR` | Used to change the geolocation of the device to the location provided.
If this capability is not passed, the device will auto update the Geo Location based on the physical location of the device.| -| enableImageInjection | TYPE: Boolean
DEFAULT: false
`enableImageInjection: true` | Used to enable the Image Injection for the app.
Must send "media" capability along with this capability.| -| media | TYPE: STRING
`media: Path to the image`|Used to provide the media to upload the file to the app for Image Injection. If this capability is not passed, then the no media will be sent to the device.
Must send "enableImageInjection" capability along with this capability.| -location | TYPE: HashMap

Python example:
`location: {"lat": "28.6235192", "long": "77.3662948"}`

For examples in other languages, please head over to [Capability Generator](https://www.lambdatest.com/capabilities-generator/) | Used to change the GPS Geolocation of the device to the location provided.
If this capability is not passed, the device will auto update the Geo Location based on the physical location of the device.
It needs to be passed in a HashMap structure with `lat` & `long` being passed separately. | +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| language | TYPE: STRING
`fr` | Language to set for iOS (XCUITest driver only) and Android. | +| locale | TYPE: STRING
`fr_CA, CA` | Locale to set for iOS (XCUITest driver only) and Android. fr_CA format (language code and country name abbreviationfor iOS). CA format (country name abbreviation) for Android.
For more info, [click here.](https://www.lambdatest.com/support/docs/list-of-supported-locales/) | +| disableAnimation | TYPE: BOOLEAN
DEFAULT: False
`disableAnimation = true` | Disable all kinds of animations on the complete device [including all applications] that is running the test.| +| lambdaMaskCommands | TYPE: Array of Strings
DEFAULT: Empty Array
`["setValues", "setCookies", "getCookies"]` | Used to make sure that the values aren't shown on the device. The text could be a Password.| +| timezone | TYPE: String
`timezone=UTC+13:00`
`timezone=UTC-0400` | Used to set the timezone on the device using the UTC Time.
If this capability is not passed, the device will auto update the timezone based on the physical location of the device.| +| geoLocation | TYPE: String
`geoLocation=US`
`geoLocation=FR` | Used to change the geolocation of the device to the location provided.
If this capability is not passed, the device will auto update the Geo Location based on the physical location of the device.| +| enableImageInjection | TYPE: Boolean
DEFAULT: false
`enableImageInjection: true` | Used to enable the Image Injection for the app.
Must send "media" capability along with this capability.| +| media | TYPE: STRING
`media: Path to the image`|Used to provide the media to upload the file to the app for Image Injection. If this capability is not passed, then the no media will be sent to the device.
Must send "enableImageInjection" capability along with this capability.| +location | TYPE: HashMap

Python example:
`location: {"lat": "28.6235192", "long": "77.3662948"}`

For examples in other languages, please head over to [Capability Generator](https://www.lambdatest.com/capabilities-generator/) | Used to change the GPS Geolocation of the device to the location provided.
If this capability is not passed, the device will auto update the Geo Location based on the physical location of the device.
It needs to be passed in a HashMap structure with `lat` & `long` being passed separately. | ## Device configuration - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| autoGrantPermissions | TYPE: BOOLEAN
`autoGrantPermissions=TRUE`
OR
`autoGrantPermissions=FALSE` | Have Appium automatically determine which permissions your app requires and grant them to the app on install. Defaults to false. If noReset is true, this capability doesn't work. +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| autoGrantPermissions | TYPE: BOOLEAN
`autoGrantPermissions=TRUE`
OR
`autoGrantPermissions=FALSE` | Have Appium automatically determine which permissions your app requires and grant them to the app on install. Defaults to false. If noReset is true, this capability doesn't work. | proxyUrl | TYPE: STRING
`proxyUrl: 192.168.1.1:8080`| Used to change the Proxy Address of the device. Data will pass through the specified proxy address.
If this capability is not passed, then there'll be no proxy being added to the device.| - - ## Network configuration - - -| KEY | VALUES | CAPABILITY DESCRIPTION | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| tunnel | TYPE: BOOLEAN
`tunnel=TRUE`
OR
`tunnel=FALSE` | To test local applications with LambdaTest. | -| tunnelName | TYPE: STRING
`tunnelName=RabbitHole` | Name of the tunnel. | -| dedicatedProxy | TYPE: BOOLEAN
`dedicatedProxy=TRUE`
OR
`dedicatedProxy=FALSE` | Dedicated Proxy. | -| blockDomains | TYPE: Array of Strings
`"blockDomains": ["www.facebook.com", "www.amazon.com"] ` | It is used to block the mentioned domains on the device. - -### Network Throttling (Offline/Online) - -To test your apps over an offline or online mode, pass the below cURL request within the running test session. - -```bash -curl --location 'https://mobile-api.lambdatest.com/mobile-automation/api/v1/sessions//update_network' \ ---header 'Authorization: Basic ' \ ---header 'Content-Type: application/json' \ ---data '{"mode": "offline/online"}' -``` - +| KEY | VALUES | CAPABILITY DESCRIPTION | +|-----|--------| -----------------------| +| tunnel | TYPE: BOOLEAN
`tunnel=TRUE`
OR
`tunnel=FALSE` | To test local applications with LambdaTest.| +| tunnelName | TYPE: STRING
`tunnelName=RabbitHole` | Name of the tunnel. | +| dedicatedProxy | TYPE: BOOLEAN
`dedicatedProxy=TRUE`
OR
`dedicatedProxy=FALSE` | Dedicated Proxy. | +| blockDomains | TYPE: Array of Strings
`"blockDomains": ["www.facebook.com", "www.amazon.com"] ` | It is used to block the mentioned domains on the device.
- - - - > Got any questions?
> Please reach out at our window.openLTChatWidget()}>**24x7 Chat Support** or you could also mail us at [support@lambdatest.com](https://support.lambdatest.com/). @@ -202,4 +156,4 @@ curl --location 'https://mobile-api.lambdatest.com/mobile-automation/api/v1/sess - + \ No newline at end of file diff --git a/docs/katalon-integration-with-hyperexecute.md b/docs/katalon-integration-with-hyperexecute.md index 9dd27d39..833c0af8 100644 --- a/docs/katalon-integration-with-hyperexecute.md +++ b/docs/katalon-integration-with-hyperexecute.md @@ -58,7 +58,7 @@ It also comes with a built-in interface for codeless automation testing and vali - Ensure that you have integrated Katalon Studio with LambdaTest. Follow the steps on this [page](https://www.lambdatest.com/support/docs/katalon-integration-with-lambdatest/) to do so. -- Ensure that you have the necessary licenses required to use Katalon Studio. You need the [Katalon Runtime License](https://docs.katalon.com/docs/legacy/products-and-licenses/katalon-studio-enterprise-and-runtime-engine-licenses/katalon-runtime-engine-floating-license) to integrate Katalon with HyperExecute. To learn more about these licenses, read this [page](https://docs.katalon.com/docs/legacy/products-and-licenses/katalon-studio-enterprise-and-runtime-engine-licenses/license-overview). +- Ensure that you have the necessary licenses required to use Katalon Studio. You need the Katalon Runtime License to integrate Katalon with HyperExecute. ## Integrating Katalon Studio with HyperExecute @@ -80,36 +80,38 @@ It also comes with a built-in interface for codeless automation testing and vali 4. Create the hyperexecute.yaml file in the root directory of your Katalon project with the given parameters: -```yaml -version: 0.1 -globalTimeout: 90 -testSuiteTimeout: 90 -testSuiteStep: 90 - -autosplit: true - -runson: win - -tunnel: true -tunnelOpts: - global: true -concurrency: 2 - -pre: - - pip install requests # To install pip request - - python installer.py # To install the certs in the Machine -runtime: katalon - -testDiscovery: - type: raw - mode: dynamic - command: grep -lr 'testSuiteGuid' */*.ts | sed 's/:.*//' | sed 's/.ts//g' + ```yaml + version: 0.1 + globalTimeout: 90 + testSuiteTimeout: 90 + testSuiteStep: 90 + + autosplit: true + + runson: win + + tunnel: true + tunnelOpts: + global: true -testRunnerCommand: katalonc `-noSplash `-runMode=console `-projectPath="G:\foreman\Hyperexecute_Sample\Hyperexecute_Sample.prj" `-retry=0 `-testSuitePath="$test" `-browserType="firefox" `-executionProfile="default" `-apiKey="aaa9402b-6a2e-4621-a4c3-05fe356f5aad" `-`-config `-webui.autoUpdateDrivers=true + concurrency: 2 + + pre: + - pip install requests # To install pip request + - python installer.py # To install the certs in the Machine -retryOnFailure: false -maxRetries: 1 -``` + runtime: katalon + + testDiscovery: + type: raw + mode: dynamic + command: grep -lr 'testSuiteGuid' */*.ts | sed 's/:.*//' | sed 's/.ts//g' + + testRunnerCommand: katalonc `-noSplash `-runMode=console `-projectPath="G:\foreman\Hyperexecute_Sample\Hyperexecute_Sample.prj" `-retry=0 `-testSuitePath="$test" `-browserType="firefox" `-executionProfile="default" `-apiKey="aaa9402b-6a2e-4621-a4c3-05fe356f5aad" `-`-config `-webui.autoUpdateDrivers=true + + retryOnFailure: false + maxRetries: 1 + ``` Paste the command that you generated from the Katalon UI to fill the **testRunnerCommand** field in the _hyperexecute.yaml_ file. diff --git a/docs/private-device-allocation-to-teams.md b/docs/private-device-allocation-to-teams.md new file mode 100644 index 00000000..9990a5e2 --- /dev/null +++ b/docs/private-device-allocation-to-teams.md @@ -0,0 +1,112 @@ +--- +id: private-device-allocation-to-teams +title: Private Device Allocation to Teams +hide_title: false +sidebar_label: Private Device Allocation to Teams +description: Learn real device app testing with LambdaTest across Android and iOS devices. Start testing effortlessly today! +keywords: +- private device +- private decive allocation to teams +- real device +- virtual device +url: https://www.lambdatest.com/support/docs/private-device-allocation-to-teams/ +site_name: LambdaTest +slug: private-device-allocation-to-teams/ +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +The Teams feature for Private Cloud Devices enables organization admins to divide and allocate private cloud devices among teams within their organization which ensures effective resource management. Team members then gain exclusive access to the allocated devices, ensuring efficient and secure testing workflows. + +> To enable it for your organization, please contact us via window.openLTChatWidget()}>**24×7 chat support** or you can also drop a mail to **support@lambdatest.com**.
+ +## Steps to Allocate Devices to Teams + +> Only the organization's Admins have the authority to allocate or deallocate devices. + +### Step 1: Create or Select a Team +- Go to the Teams section under the Organization Settings +- Create your [Organization](/support/docs/team-management/#create-an-organization) +- Then, create your [Team](/support/docs/team-management/#create-your-first-team) and assign members by selecting users from your organization. + +### Step 2: Allocate Devices to the Team +In the **Private Cloud Devices** tab section, distribute your devices amongst your teams for restricted access via: + + + + + - Click on the **Bulk Distribute** button and select all the devices that you want to allocate to the teams. + - Click on the **Distribute** button. In the popup, choose the teams from the dropdown list. + - Click on the **Allocate** button. +The devices will now appear in the selected team’s device pool, accessible only to its members. + +Image + + + + + - Click on the **Allocate** button from the right side of your desired device. + - In the popup, choose the teams from the dropdown list. + - Click on the **Allocate** button. +The selected device will now appear in the team’s device pool, accessible only to its members. + +Image + + + + +> You can also see tags of all those teams to which those devices are allocated. + +## Deallocate any Device from Teams +- Click on the **Deallocate** button from the right side of your desired device. + +The selected device will no longer appear in all those allocated team’s device pool. + +Image + +## Edit Allocation of any Device +To edit allocation of any device, or simply if you want to add/remove any team allocation for any particular device then: + +- Click on the **Edit Allocation** button from the right side of your desired device. +- Select or Deselect your required teams. +- Click on the **Allocate** button. + +Image + +:::info +A device in a busy state will not be allocated or deallocated. +::: + +## Filter your Devices +In the topbar, you have plenty of options to filter your devices based on: + +- You can select from the drop down whether you want to see **All Devices**, **Allocated Devices**, or all the **Available Devices** in the table. +- You can also search for a particular device based on the **device name**, or its **UDID**. +- **OS :** Select which OS devices you want to allocate or deallocate. +- **Teams :** Select from which team you want to filter your device and perform allocation or deallocation of devices. + +Image \ No newline at end of file diff --git a/docs/public-cloud-vs-private-cloud.md b/docs/public-cloud-vs-private-cloud.md index 33ff4994..ba87ef86 100644 --- a/docs/public-cloud-vs-private-cloud.md +++ b/docs/public-cloud-vs-private-cloud.md @@ -1,7 +1,7 @@ --- id: public-cloud-vs-private-cloud title: Public Cloud VS Private Cloud -hide_title: true +hide_title: false sidebar_label: Public Cloud VS Private Cloud description: Discover how LambdaTest's private real device cloud ensures seamless app and website functionality across devices with tailored, robust testing solutions for accuracy and flexibility. keywords: @@ -38,9 +38,6 @@ slug: public-cloud-vs-private-cloud/ }) }} > - -# Public Cloud vs Private Cloud -*** In mobile app development, thorough testing on real devices is essential for performance and seamless user experience. Platforms like Public and Private Device Clouds offer access to a variety of real devices for testing, each with differences in accessibility, security, and features. Understanding these nuances is crucial for organizations to choose the right option. Our detailed document compares Public Device Cloud and Private Device Cloud, focusing on their benefits for real device testing. It considers factors such as device access, session duration, settings control, and testing capabilities allowing organizations to make informed decisions about their testing strategies based on their needs and goals. @@ -48,12 +45,11 @@ Our detailed document compares Public Device Cloud and Private Device Cloud, foc add ## Why Choose Private Cloud -*** Here is the detailed comparison of Public Cloud and Private Cloud: | Features | Public Device Cloud | Private Device Cloud | -| -------- | ------- | ------ | +| -------- | ------------------- | -------------------- | | Device Access | Accessible by only a single user during session, but shared for different test sessions.| Only accessible by the specific organization and no access to anyone else. | | Session Duration | Maximum session duration is 6 hours.| Maximum session duration is 12 hours.| | Session Retention | Devices undergo a factory reset after each session.| Users have the option to retain the session or reset as per their need. | diff --git a/docs/select-pre-installed-apps.md b/docs/select-pre-installed-apps.md new file mode 100644 index 00000000..c5a4ae82 --- /dev/null +++ b/docs/select-pre-installed-apps.md @@ -0,0 +1,77 @@ +--- +id: select-pre-installed-apps +title: Select Pre-Installed App in Session +hide_title: false +sidebar_label: Select Pre-Installed Apps +description: Learn real device app testing with LambdaTest across Android and iOS devices. Start testing effortlessly today! +keywords: +- select pre installed apps +- select pre installed apps in session +url: https://www.lambdatest.com/support/docs/select-pre-installed-apps/ +site_name: LambdaTest +slug: select-pre-installed-apps/ +--- + + + +LambdaTest empowers developers with a comprehensive testing environment, enabling thorough examination of mobile applications and websites across real devices and browsers. One standout feature is the ability to start testing sessions with pre-installed applications, enhancing efficiency, and reducing test start time, in **private cloud** setups where data retention and reusability are paramount. + +Let's delve into the streamlined steps to initiate a testing session with pre-installed applications: + +**Step 1.** Login to your LambdaTest account. Go to **App Testing** under **Real Device** from the left sidebar. + +**Step 2.** Enable the toggle to enter into your **Private Cloud**. + +**Step 3.** Select your preferred operating system version from the private device pool. + +Real + +**Step 4.** Within the **App Testing** section, locate and select the option to start a session with pre-installed applications. + +**Step 5.** Upon initiating the session, gain instant access to the pre-installed applications on the designated device. This seamless integration accelerates testing scenarios, significantly reducing start time. + +By adhering to the above steps, you can seamlessly commence testing sessions with pre-installed applications on LambdaTest. This feature not only expedites the testing process but also enhances efficiency, making it particularly advantageous for private cloud environments. With data retained within the private cloud devices, LambdaTest ensures enhanced flexibility and productivity in testing workflows. + +> **Note:** To access the pre-installed apps, you need to have a private cloud plan. + + \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index 2885ca26..b3f46e19 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1800,9 +1800,7 @@ module.exports = { type: "category", collapsed: true, label: "Private Cloud", - items: [ - "public-cloud-vs-private-cloud", - ], + items: ["public-cloud-vs-private-cloud", "select-pre-installed-apps", "private-device-allocation-to-teams"], }, ], ], @@ -2446,6 +2444,12 @@ module.exports = { collapsed: true, label: "Setup", items: [ + { + type: "category", + collapsed: true, + label: 'Application', + items: ['application-setup-via-api','application-setup-via-gui'], + }, "desired-capabilities-in-appium", "supported-appium-versions", "supported-appium-plugins",