identifier-checker
A universal, automated command-line tool for mobile QA and test automation engineers working with any mobile application technology:
- Native Android (Kotlin / Java / Jetpack Compose)
- Native iOS (Swift / SwiftUI / UIKit)
- React Native (Bridged Architecture)
- React Native Turbo (New Architecture / Fabric)
- Capacitor & Ionic (HTML5 WebViews)
- Flutter
It verifies whether accessibility and test identifiers (resource-id, content-desc, name, label, testID, data-testid, id) are present in the runtime UI hierarchy, correctly exposed in page source attributes, and queryable by live Appium element locators across screens.
Key Features
- ⚡ Fast Element Lookup: Temporarily sets Appium implicit wait to 1.0 second during element verification so missing/failed identifiers check instantly without multi-second delays.
- 🎯 Strict Appium Locators: Performs live element lookups using
By.ACCESSIBILITY_IDandBy.ID(no XPath overhead). - 📱 Screen-Wise Identifier Verification: Provide your expected identifiers grouped screen-by-screen in a clean JSON format.
- ⏸️ Interactive Screen Navigation: Verifies the initial screen on app launch, then prompts you to navigate to the next screen on your device/emulator before pressing
ENTER. - 📝 Flexible Markdown Report Output: Generates clean terminal console output and saves a Markdown summary report (
id_report_<timestamp>.mdor custom.mdpath). - ⚙️ CI/CD Ready: Exits with status code
0when all identifiers across all screens pass, and1when any identifier fails or is missing.
Installation Options
Option 1: Install from PyPI
pip install identifier-checker
# OR using pipx (recommended for isolated global CLI tools):
pipx install identifier-checker
Option 2: Direct GitHub Install
pip install git+https://github.com/your-username/identifier-checker.git
# OR using pipx:
pipx install git+https://github.com/your-username/identifier-checker.git
Option 3: Local Installation (For Development)
git clone https://github.com/your-username/identifier-checker.git
cd identifier-checker
pip install -e .
How to Publish to PyPI & GitHub
1. Publish to PyPI
- Create an account on pypi.org.
- Build distribution wheels:
pip install build twine python -m build
- Upload to PyPI:
python -m twine upload dist/*
2. Push to GitHub
git init
git add .
git commit -m "Initial release of identifier-checker CLI"
git branch -M main
git remote add origin https://github.com/your-username/identifier-checker.git
git push -u origin main
Expected Input JSON Format (expected_ids.json)
Provide your expected identifiers grouped screen-wise:
{
"screens": {
"home_screen": [
"app_drawer",
"home_core_card",
"recent_activity_$index",
"truvideo_sdk",
"view_all_recent_activity"
],
"all_video_requests_screen": [
"back_button",
"status_$index",
"toggle_stream",
"video_request_item_$index",
"video_request_list_add_fab_button",
"video_requests_id_$index",
"video_requests_type_$index"
]
}
}
Usage Examples
Verification via App Package & Activity Name
identifier-checker \
--ids expected_ids.json \
--app-package com.example.truvideo_sample \
--app-activity .MainActivity
Custom Output Report Path
Save report to a specific Markdown file path:
identifier-checker \
--ids expected_ids.json \
--app-package com.example.truvideo_sample \
--app-activity .MainActivity \
--output ~/Desktop/my_summary_report.md
Verification via APK / IPA Binary File
identifier-checker \
--ids expected_ids.json \
--app /path/to/app.apk
Command Line Reference
| Argument | Description | Default |
|---|---|---|
--ids |
Path to JSON file containing expected identifiers. | Required |
--app |
Path to APK or IPA application binary. | from config |
--app-package |
Android app package name. | from config |
--app-activity |
Android main activity name. | from config |
--platform |
Target platform (android or ios). |
android |
--device-name |
Target device or emulator name. | emulator-5554 |
--appium-url |
Appium server URL. | http://127.0.0.1:4723 |
--output |
Output directory OR custom .md report path. |
reports |
--wait |
Seconds to wait after app launch or screen prompt for UI to settle. | 1.0 |
--implicit-wait |
Timeout in seconds for element lookups. | 5.0 |
--no-reset |
Do not reset application state between sessions. | True |
Exit Codes
| Exit Code | Meaning |
|---|---|
0 |
Success: All expected identifiers across all screens passed exact match and live find checks. |
1 |
Failure: One or more identifiers were missing, merged, failed live lookup, or a setup error occurred. |
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file identifier_checker-1.0.0.tar.gz.
File metadata
- Download URL: identifier_checker-1.0.0.tar.gz
- Upload date:
- Size: 17.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fed3d8343d57d5a1668d992f5dd8e7844cf50c2f4c1fe8c26648c2cb387bd50f
|
|
| MD5 |
890be34d81f0cee4de9bc04f4acebc90
|
|
| BLAKE2b-256 |
136101718250a76768354758a2c24e93e0990ee897e1a71bd43fdb97a1b6daa8
|
File details
Details for the file identifier_checker-1.0.0-py3-none-any.whl.
File metadata
- Download URL: identifier_checker-1.0.0-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbc884b415ba2953f90f0adbd898ca55fa8837188d37492dbacfe7260aaa293c
|
|
| MD5 |
528f9f5783ab8084ba881acbadb7a0eb
|
|
| BLAKE2b-256 |
e72c8b8716f33c741923d24738baf204b62a9eb9f9e877bd3c671a5a2f45b3cb
|