Skip to main content

identifier-checker

A universal, automated command-line tool for mobile QA engineers, SDETs, 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)
  • .NET MAUI (XAML / C# Multi-platform App UI)
  • Capacitor & Ionic (HTML5 WebViews)
  • Flutter

It verifies whether accessibility and test identifiers (resource-id, content-desc, name, label, testID, AutomationProperties.AutomationId, id) are present in the runtime UI hierarchy, correctly exposed in page source attributes, and queryable by live Appium element locators across your app's screens.


Features

  • 🌐 Universal Framework Compatibility: Detects test and accessibility attributes across Native Android, Native iOS, React Native, React Native Turbo Modules, .NET MAUI, Capacitor, Ionic, and Flutter.
  • Fast Element Verification: Uses a fast 1.0-second element lookup timeout so missing or failed identifiers check instantly without blocking your test run.
  • 🎯 Strict Appium Locators: Performs live element lookups using By.ACCESSIBILITY_ID and By.ID (no slow XPath overhead).
  • 📱 Screen-Wise Verification: Group your expected identifiers screen-by-screen in a simple JSON file.
  • ⏸️ Interactive Screen Navigation: Verifies the launch screen automatically, then prompts you to navigate to the next screen on your device/emulator before pressing ENTER.
  • 📝 Markdown Summary Reports: Prints a clean terminal summary table and saves a formatted Markdown report (id_report_<timestamp>.md or a custom .md file path).
  • ⚙️ CI/CD Ready: Exits with status code 0 when all identifiers across all screens pass, and 1 when any identifier fails or is missing.

Prerequisites

Before using identifier-checker, make sure you have the following installed and running:

  1. Python & Package Manager:

    • Python 3.10+
    • pip (or pipx) installed on your system.
  2. Appium Server:

    • Appium Server v2.x installed via Node/npm:
      npm install -g appium
      
    • Install drivers for your target platform:
      appium driver install uiautomator2   # For Android
      appium driver install xcuitest       # For iOS
      
  3. Running Appium Server:

    • Start the Appium server in a separate terminal window before running verification:
      appium
      
      (By default, Appium listens on http://127.0.0.1:4723).
  4. Target Device:

    • An active Android Emulator / Real Device (with USB debugging enabled) or iOS Simulator.

Step-by-Step User Guide

Step 1: Install identifier-checker

Install using python3 -m pip (or pipx for global CLI tools):

python3 -m pip install identifier-checker

(Or via pipx):

pipx install identifier-checker

Step 2: Create Your expected_ids.json File

Create a JSON file (e.g. expected_ids.json) listing your expected identifiers grouped by screen name:

{
  "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"
    ]
  }
}

Step 3: Open Terminal and cd to Your JSON File Location

Open your terminal and navigate to the folder where you placed your expected_ids.json file:

cd /path/to/your/json/folder

Step 4: Run the Verification Command

Option A: Verify an Installed Android App (via Package Name)

You only need to pass --app-package. Appium will automatically open your installed app's launch screen:

identifier-checker \
  --ids expected_ids.json \
  --app-package com.example.myapp

Option B: Save Report to a Custom File Path

Specify a direct Markdown file path using --output:

identifier-checker \
  --ids expected_ids.json \
  --app-package com.example.myapp \
  --output ~/Desktop/my_verification_report.md

Option C: Verify via APK or IPA Binary File

identifier-checker \
  --ids expected_ids.json \
  --app /path/to/your_app.apk

Command Line Options Reference

Argument Description Default
--ids Path to JSON file containing screen-wise expected identifiers. Required
--app-package Android app package name (auto-launches installed app). from config
--app Path to APK or IPA application binary file. from config
--app-activity Android main activity name (optional). Auto-resolved
--platform Target platform (android or ios). android
--device-name Target device or emulator name. emulator-5554
--appium-url Appium server endpoint URL. http://127.0.0.1:4723
--output Output directory OR custom .md file 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

Technology Identifier Attribute Mappings

Tech Stack Identifier Code Syntax Appium Page Source Attribute Live Lookup Locator Strategy
Android Native android:id or contentDescription resource-id, content-desc By.ID, By.ACCESSIBILITY_ID
iOS Native accessibilityIdentifier or accessibilityLabel name, label By.ACCESSIBILITY_ID, By.ID
React Native / Turbo testID="my_btn" or accessibilityLabel="my_btn" resource-id / name / content-desc By.ACCESSIBILITY_ID, By.ID
.NET MAUI AutomationProperties.AutomationId="my_btn" resource-id / name / content-desc By.ID, By.ACCESSIBILITY_ID
Capacitor / Ionic id="my_btn" or data-testid="my_btn" id, name, data-testid, content-desc By.ID, By.ACCESSIBILITY_ID
Flutter Semantics(identifier: 'my_btn') resource-id, content-desc, name By.ACCESSIBILITY_ID, By.ID

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

identifier_checker-1.0.2.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

identifier_checker-1.0.2-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file identifier_checker-1.0.2.tar.gz.

File metadata

  • Download URL: identifier_checker-1.0.2.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for identifier_checker-1.0.2.tar.gz
Algorithm Hash digest
SHA256 98029fb4434eea29e98ad4ec90f9650bc08d9d9f01248b95e348a7f2b79f5e03
MD5 b3bf0e0a73d080d6910e7ee5a5fea664
BLAKE2b-256 ace32b410b6919e686896323e6c894500cd631305e1573f4651c5e6a544a9ce5

See more details on using hashes here.

File details

Details for the file identifier_checker-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for identifier_checker-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 74451ddcc725994cf0470c38596376097734ba281cd87fbdb44be4deb4d2e718
MD5 244bfaf2980a34e0baf565f3a11958db
BLAKE2b-256 2bbcecffec855cdccba749a139cded844fac55c22ed4dd924ee459744da5cf23

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.1

2 files

1.1.0

2 files

1.0.3

2 files

This release

1.0.2 This release

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page