Skip to content

Commit 5d0bb37

Browse files
accessibility app automation
1 parent ce796ea commit 5d0bb37

File tree

3 files changed

+159
-4
lines changed

3 files changed

+159
-4
lines changed
98.2 KB
Loading

docs/accessibility-android-automation-test.md

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,159 @@ import TabItem from '@theme/TabItem';
4242
})
4343
}}
4444
></script>
45+
LambdaTest now enables native Accessibility Automation Testing for Android apps using HyperExecute and Appium. This feature helps developers and QA teams to validate the accessibility of their mobile apps programmatically by leveraging LambdaTest's device cloud.
46+
47+
With built-in support for `lambda-accessibility-scan`, this integration ensures that your apps are tested for compliance with accessibility standards and best practices like WCAG (Web Content Accessibility Guidelines).
48+
49+
## Prerequisites
50+
Before getting started, ensure the following:
51+
52+
- You have a LambdaTest account.
53+
- LambdaTest credentials (username & access key).
54+
- Android app uploaded to LambdaTest App Storage (lt://APP_ID).
55+
- Python 3 installed locally.
56+
- Appium-Python-Client installed
57+
- Access to a valid Android device on LambdaTest (real or virtual).
58+
59+
## Step 1: Setup the Environment Variables
60+
61+
You need to export your environment variables *LT_USERNAME* and *LT_ACCESS_KEY* that are available in your [LambdaTest Profile page](https://accounts.lambdatest.com/security). Run the below mentioned commands in your terminal to setup the environment variables.
62+
63+
<Tabs className="docs__val">
64+
<TabItem value="bash" label="Linux / MacOS" default>
65+
<div className="lambdatest__codeblock">
66+
<CodeBlock className="language-bash">
67+
{`export LT_USERNAME="${ YOUR_LAMBDATEST_USERNAME()}"
68+
export LT_ACCESS_KEY="${ YOUR_LAMBDATEST_ACCESS_KEY()}"`}
69+
</CodeBlock>
70+
</div>
71+
</TabItem>
72+
<TabItem value="powershell" label="Windows" default>
73+
<div className="lambdatest__codeblock">
74+
<CodeBlock className="language-powershell">
75+
{`set LT_USERNAME="${ YOUR_LAMBDATEST_USERNAME()}"
76+
set LT_ACCESS_KEY="${ YOUR_LAMBDATEST_ACCESS_KEY()}"`}
77+
</CodeBlock>
78+
</div>
79+
</TabItem>
80+
</Tabs>
81+
82+
## Step 2: Upload your Application
83+
Upload your **_iOS_** application (.ipa file) or **_android_** application (.apk or .aab file) to the LambdaTest servers using our **REST API**. You need to provide your **Username** and **AccessKey** in the format `Username:AccessKey` in the **cURL** command for authentication.
84+
85+
Make sure to add the path of the **appFile** in the cURL request. Below is an example cURL request to upload your app using our REST API:
86+
87+
<Tabs className="docs__val">
88+
89+
<TabItem value="bash" label="App File" default>
90+
<div className="lambdatest__codeblock">
91+
<CodeBlock className="language-bash">
92+
{`curl -u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}" -X POST "https://manual-api.lambdatest.com/app/upload/realDevice" -F "appFile=@"/Users/macuser/Downloads/proverbial_android.apk"" -F "name="proverbial_app""`}
93+
</CodeBlock>
94+
</div>
95+
</TabItem>
96+
97+
<TabItem value="powershell" label="App URL" default>
98+
<div className="lambdatest__codeblock">
99+
<CodeBlock className="language-bash">
100+
{`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"`}
101+
</CodeBlock>
102+
</div>
103+
</TabItem>
104+
105+
</Tabs>
106+
107+
:::tip
108+
109+
- If you do not have any **.apk** or **.ipa** file, you can run your sample tests on LambdaTest by using our sample apps, :link: [Android app](https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk) or :link: [iOS app](https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_ios.ipa).
110+
111+
- Response of above cURL will be a **JSON** object containing the `APP_URL` of the format - `lt://APP123456789123456789` and will be used in the next step
112+
113+
:::
114+
115+
## Step 3: Configure required Capabilities
116+
To enable accessibility testing, the following two configurations are mandatory:
117+
118+
- Enable accessibility in capabilities:
119+
```python
120+
"accessibility": True
121+
```
122+
123+
- Invoke scan via script:
124+
```python
125+
driver.execute_script("lambda-accessibility-scan")
126+
```
127+
128+
You may call `lambda-accessibility-scan` multiple times to scan different app screens or flows.
129+
130+
131+
:::info
132+
133+
- You must add the generated **APP_URL** to the `app` capability in the config file.
134+
- You can generate capabilities for your test requirements with the help of our inbuilt [**Capabilities Generator tool**](https://www.lambdatest.com/capabilities-generator/).For more details, please refer to our guide on [**Desired Capabilities in Appium**](https://www.lambdatest.com/support/docs/desired-capabilities-in-appium/).
135+
136+
:::
137+
138+
### Sample Script
139+
140+
```python
141+
from curses import flash
142+
import time
143+
# import requests
144+
from appium import webdriver
145+
from selenium.webdriver.support.ui import WebDriverWait
146+
from selenium.webdriver.support import expected_conditions as EC
147+
import unittest
148+
import os
149+
from appium import webdriver
150+
from appium.options.android import UiAutomator2Options
151+
import sys
152+
from selenium.webdriver.common.by import By
153+
from appium.webdriver.client_config import AppiumClientConfig
154+
155+
156+
options = UiAutomator2Options()
157+
options.load_capabilities({
158+
"platform": "android",
159+
"platformVersion": "14",
160+
"deviceName": "Galaxy S23 Ultra",
161+
"isRealMobile": True,
162+
"app" : "lt://YOUR_APP_ID",
163+
"accessibility": True,
164+
"buildName": "Accessibility-lambda",
165+
"idleTimeout": 1800,
166+
"build": "Accessibility Native App",
167+
"name": "Android App Accessibility",
168+
"devicelog": True,
169+
"visual": True,
170+
})
171+
url = "https://YOUR_LT_USERNAME:[email protected]/wd/hub"
172+
173+
client_config = AppiumClientConfig(
174+
remote_server_addr=url,
175+
ignore_certificates=True,
176+
direct_connection=True
177+
)
178+
179+
driver = webdriver.Remote(client_config.remote_server_addr, options = options, client_config=client_config)
180+
driver.implicitly_wait(2)
181+
182+
time.sleep(10)
183+
184+
time.sleep(10)
185+
driver.execute_script("lambda-accessibility-scan")
186+
time.sleep(10)
187+
driver.find_element(By.CSS_SELECTOR, '#username').send_keys("Pbtest1") # Example CSS selector
188+
driver.execute_script("lambda-accessibility-scan")
189+
190+
driver.quit()
191+
```
192+
193+
## Step 4: Execute and Monitor your Tests
194+
Run the following command in the directory where your project has been saved to execute your build.
195+
196+
```bash
197+
python3 test.py
198+
```
199+
200+
<img loading="lazy" src={require('../assets/images/accessibility-testing/app-automation/5.png').default} alt="automation-dashboard" className="doc_img"/>

docs/support.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,10 @@ import NewTag from '../src/component/newTag';
221221
<div className="home_inners">
222222
<a href="/support/docs/accessibility-testing/"><p className="p_home_inners">Getting Started</p></a>
223223
<a href="/support/docs/accessibility-devtools/"><p className="p_home_inners">Accessibility DevTools</p></a>
224-
<a href="/support/docs/accessibility-automation/"><p className="p_home_inners">Accessibility Automation</p></a>
225-
<a href="/support/docs/accessibility-test-scheduling/"><p className="p_home_inners">Accessibility Scheduling &nbsp; <NewTag value="BETA" bgColor="#ffec02" color="#000" /> </p></a>
224+
<a href="/support/docs/accessibility-automation/"><p className="p_home_inners">Accessibility Web Automation</p></a>
225+
<a href="/support/docs//accessibility-android-test/"><p className="p_home_inners">Native App Scanner</p></a>
226+
<a href="/support/docs/accessibility-android-automation-test/"><p className="p_home_inners">Native App Automation</p></a>
226227
<a href="/support/docs/screen-reader-on-accessibility/"><p className="p_home_inners">Screen Reader</p></a>
227-
<a href="/support/docs/accessibility-testing-navigating-dashboard/"><p className="p_home_inners">Navigating Dashboard</p></a>
228-
<a href="/support/docs/accessibility-faq/"><p className="p_home_inners">FAQ</p></a>
229228
</div>
230229
</div>
231230
<div className="home_inners_box">

0 commit comments

Comments
 (0)