android-ui-journey-testing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited android-ui-journey-testing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill outlines the standard workflow for running XML-specified User Journey tests on Android applications. A "journey" is a sequenced set of user actions and state assertions designed to verify end-to-end functionality. The journey XML acts as the source of truth for the app's behavior. The executor proceeds sequentially, performing UI interactions, checking state assertions, and writing a standardized JSON outcome report.
graph TD
A[Parse Journey XML] --> B[Execute Action / Interaction]
B --> C{Success?}
C -- Yes --> D[Verify State Expectation / Assertion]
C -- No/Crash --> G[Mark FAILED & Exit]
D -- Passed --> E{More Steps?}
D -- Failed --> G
E -- Yes --> B
E -- No --> F[Output JSON Summary]Read and parse the XML test suite structure. The root node <journey> defines the test case name, and the <actions> block contains the sequence of test steps.
<journey name="Search and Cart Flow">
<description>Verify that searching for an item and adding it to the cart succeeds.</description>
<actions>
<action>Search for soda</action>
<action>Tap the first search result</action>
<action>Verify that the product detail screen is shown</action>
</actions>
</journey>Process each <action> element in the exact order specified. Test steps are classified into two groups:
#### A. Interactive Actions (Taps, Swipes, Text Input) Perform the physical UI interaction using ADB.
adb shell input tap <x> <y> adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms> adb shell input text "<string>"If the element is missing or the action cannot be performed, the action and the journey fail.
#### B. State Assertions (Expectation Verification) Steps beginning with "verify", "check", or "ensure" represent state assertions.
uiautomator dump) without interacting or scrolling.If the application crashes, exits, freezes, or fails an assertion:
FAILED.SKIPPED.Format the execution results into a standardized JSON schema and write it to the output log.
<journey name="Login and Profile Edit">
<description>Logs into the app, navigates to settings, and changes user profile information.</description>
<actions>
<action>Verify that the username input field is visible</action>
<action>Tap the username input field</action>
<action>Type "testuser" into the input</action>
<action>Tap the password input field</action>
<action>Type a redacted test password into the input</action>
<action>Tap the "Login" button</action>
<action>Verify that the Home dashboard is visible and user profile photo is shown</action>
</actions>
</journey>{
"journey": "Login and Profile Edit",
"results": [
{
"action": "Verify that the username input field is visible",
"status": "PASSED",
"commands": [],
"comment": "Username input detected at bounds [100,200][980,300] via UI dump."
},
{
"action": "Tap the username input field",
"status": "PASSED",
"commands": [
"adb shell input tap 540 250"
],
"comment": "Tapped center coordinates of username input."
},
{
"action": "Type \"testuser\" into the input",
"status": "PASSED",
"commands": [
"adb shell input text \"testuser\""
],
"comment": "Username typed successfully."
},
{
"action": "Tap the password input field",
"status": "PASSED",
"commands": [
"adb shell input tap 540 370"
],
"comment": "Tapped center of password input."
},
{
"action": "Type a re~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.