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.

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

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

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.1.tar.gz (18.7 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.1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: identifier_checker-1.0.1.tar.gz
  • Upload date:
  • Size: 18.7 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.1.tar.gz
Algorithm Hash digest
SHA256 b66ffad6c740d2013c460cc575e64634d7a1bd37ee9ae36696f6cec6b39cad37
MD5 50349e8a991561a9d6b1e98079d2c8d3
BLAKE2b-256 4222774f292fc7bfedc815fba81bb481aefe20edcdd36adfc1800b8b36f77d7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for identifier_checker-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6ad63ac4aae4e534fe32dc2d5044539e731ac534169dc03eeb28538347dfee8a
MD5 0f7dad58294342c7fc69106679367b53
BLAKE2b-256 2a11c3610f36de282e00c21d05378ee455a58ee622e69059011b053a981b7871

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

1.0.2

2 files

This release

1.0.1 This release

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