CP_AUTOMATION/CognitivePrism/my-project/docTracks/03_VERIFICATION_SCRIPT.md
2025-12-12 19:54:54 +05:30

4.5 KiB

Verification Script - Data-TestID Attributes

Purpose: Automated verification of data-testid attributes
Method: Code-based verification (not DOM-based)
Usage: Run these commands to verify implementation status


🔍 QUICK STATUS CHECK

# Count total data-testid attributes
grep -r "data-testid" cognitive-prism-assesment-ui/src/ | wc -l

# List all existing attributes
grep -rn "data-testid" cognitive-prism-assesment-ui/src/

📋 DETAILED VERIFICATION

1. Check Specific File

# SignInPage
grep -n "data-testid" cognitive-prism-assesment-ui/src/pages/designs/design-1/SignInPage.jsx

# Design1Header
grep -n "data-testid" cognitive-prism-assesment-ui/src/pages/designs/design-1/components/Design1Header.jsx

# StudentProfileEditor
grep -n "data-testid" cognitive-prism-assesment-ui/src/pages/StudentProfileEditor.jsx

2. Verify Pattern Compliance

# Find attributes that DON'T follow double underscore pattern
grep -r "data-testid" cognitive-prism-assesment-ui/src/ | grep -v "__" | grep -v "//"

# Find attributes with single underscore (wrong pattern)
grep -r "data-testid=\"[^\"]*_[^\"]*\"" cognitive-prism-assesment-ui/src/ | grep -v "__"

3. Check Missing Attributes by Scope

# Check student_login scope
grep -r "student_login__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 7 (currently 6)

# Check student_nav scope
grep -r "student_nav__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 7 (currently 5)

# Check mandatory_reset scope
grep -r "mandatory_reset__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 11 (currently 1)

# Check profile_incomplete scope
grep -r "profile_incomplete__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 3 (currently 0)

# Check profile_editor scope
grep -r "profile_editor__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 60+ (currently 0)

# Check dashboard scope
grep -r "dashboard__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 1 (currently 0)

# Check assessment_card scope
grep -r "assessment_card__" cognitive-prism-assesment-ui/src/ | wc -l
# Expected: 2+ (currently 0)

🐍 PYTHON VERIFICATION SCRIPT

Create verify_testids.py:

#!/usr/bin/env python3
"""
Verify data-testid attributes in codebase
"""
import re
import subprocess
from pathlib import Path

# Expected attributes by scope
EXPECTED = {
    'student_login': 7,
    'student_nav': 7,
    'mandatory_reset': 11,
    'profile_incomplete': 3,
    'profile_editor': 60,  # Minimum expected
    'dashboard': 1,
    'assessment_card': 2,  # Minimum expected
}

def count_attributes(scope):
    """Count attributes for a scope"""
    result = subprocess.run(
        ['grep', '-r', f'{scope}__', 'cognitive-prism-assesment-ui/src/'],
        capture_output=True,
        text=True
    )
    return len(result.stdout.strip().split('\n')) if result.stdout.strip() else 0

def verify_pattern(attribute):
    """Verify attribute follows pattern"""
    pattern = r'^[a-z][a-z0-9_]*__[a-z][a-z0-9_]*(__[a-z0-9_]+)*$'
    return bool(re.match(pattern, attribute))

def main():
    print("=" * 60)
    print("Data-TestID Verification Report")
    print("=" * 60)
    print()
    
    total_found = 0
    total_expected = sum(EXPECTED.values())
    
    for scope, expected_count in EXPECTED.items():
        found = count_attributes(scope)
        status = "✅" if found >= expected_count else "❌"
        percentage = (found / expected_count * 100) if expected_count > 0 else 0
        
        print(f"{status} {scope:25} {found:3}/{expected_count:3} ({percentage:5.1f}%)")
        total_found += found
    
    print()
    print("=" * 60)
    print(f"Total: {total_found}/{total_expected} ({(total_found/total_expected*100):.1f}%)")
    print("=" * 60)

if __name__ == '__main__':
    main()

Usage:

python3 verify_testids.py

🔄 CONTINUOUS VERIFICATION

Add to CI/CD pipeline:

# .github/workflows/verify-testids.yml
name: Verify Data-TestID Attributes
on: [push, pull_request]
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Verify attributes
        run: |
          python3 verify_testids.py          

📊 EXPECTED RESULTS

After full implementation:

  • student_login: 7/7
  • student_nav: 7/7
  • mandatory_reset: 11/11
  • profile_incomplete: 3/3
  • profile_editor: 60+/60+
  • dashboard: 1/1
  • assessment_card: 2+/2+

Total: 91+/91+


Note: This verification is code-based, not DOM-based. It checks source code, not rendered HTML.