# UI Code Analysis - Profile Editor data-testid Attributes ## Analysis Date: November 18, 2025 ## Source: `CognitivePrism/my-project/cognitive-prism-assesment-ui/src/pages/StudentProfileEditor.jsx` --- ## ✅ Currently Implemented (14 attributes) | # | Attribute | Line | Element | Status | |---|-----------|------|---------|--------| | 1 | `profile_editor__page` | 1582 | Main container div | ✅ | | 2 | `profile_editor__progress_value` | 1645 | Progress percentage span | ✅ | | 3 | `profile_editor__missing_fields_toggle` | 1654 | Info button | ✅ | | 4 | `profile_editor__first_name_input` | 776 | Input | ✅ | | 5 | `profile_editor__last_name_input` | 794 | Input | ✅ | | 6 | `profile_editor__gender_select` | 809 | Select dropdown | ✅ | | 7 | `profile_editor__dob_input` | 829 | Date input | ✅ | | 8 | `profile_editor__roll_number_input` | 846 | Input | ✅ | | 9 | `profile_editor__nationality_input` | 862 | Input | ✅ | | 10 | `profile_editor__phone_input` | 948 | Input | ✅ | | 11 | `profile_editor__address_input` | 966 | Input | ✅ | | 12 | `profile_editor__full_name_input` | 1211 | Input | ✅ | | 13 | `profile_editor__tab_{tab_name}` | 1784 | Tab buttons (dynamic) | ✅ | | 14 | `profile_editor__save_button` | 1877 | Save button | ✅ | --- ## ❌ Missing Attributes (140+ attributes) ### Page & Navigation (3 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__prev_button` | Prev button | ~1845 | ❌ Missing | | `profile_editor__next_button` | Next button | ~1854 | ❌ Missing | | `profile_editor__cancel_button` | Cancel button | ~1866 | ❌ Missing | --- ### Step 1: Personal Information (6 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__language_input` | Language input | ~866 | ❌ Missing | | `profile_editor__student_id_input` | Student ID Number | ~874 | ❌ Missing | | `profile_editor__student_cpid_input` | Student CPID | ~883 | ❌ Missing | | `profile_editor__specially_abled_checkbox` | Specially Abled checkbox | ~895 | ❌ Missing | | `profile_editor__specially_abled_details_textarea` | Specially Abled Details | ~906 | ❌ Missing (conditional) | **Note**: All other Step 1 fields are ✅ implemented. --- ### Step 2: Contact Information (5 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__email_input` | Email input | ~925 | ❌ Missing | | `profile_editor__city_input` | City input | ~970 | ❌ Missing | | `profile_editor__state_input` | State input | ~979 | ❌ Missing | | `profile_editor__zip_code_input` | ZIP Code input | ~988 | ❌ Missing | | `profile_editor__native_state_input` | Native State input | ~997 | ❌ Missing | **Note**: Phone and Address are ✅ implemented. --- ### Step 3: Parent/Guardian (13 missing) #### Father's Details (4 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__father_full_name_input` | Father Full Name | ~1022 | ❌ Missing | | `profile_editor__father_age_range_select` | Father Age Range | ~1032 | ❌ Missing | | `profile_editor__father_occupation_input` | Father Occupation | ~1044 | ❌ Missing | | `profile_editor__father_email_input` | Father Email | ~1053 | ❌ Missing | #### Mother's Details (4 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__mother_full_name_input` | Mother Full Name | ~1071 | ❌ Missing | | `profile_editor__mother_age_range_select` | Mother Age Range | ~1080 | ❌ Missing | | `profile_editor__mother_occupation_input` | Mother Occupation | ~1093 | ❌ Missing | | `profile_editor__mother_email_input` | Mother Email | ~1102 | ❌ Missing | #### Guardian (5 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__guardian_different_checkbox` | Guardian Different checkbox | ~1117 | ❌ Missing | | `profile_editor__guardian_full_name_input` | Guardian Full Name | ~1130 | ❌ Missing | | `profile_editor__guardian_relationship_input` | Guardian Relationship | ~1139 | ❌ Missing | | `profile_editor__guardian_phone_input` | Guardian Phone | ~1148 | ❌ Missing | | `profile_editor__guardian_email_input` | Guardian Email | ~1158 | ❌ Missing | | `profile_editor__guardian_address_input` | Guardian Address | ~1168 | ❌ Missing | --- ### Step 4: Education Details (3 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__current_grade_input` | Current Grade/Class | ~1215 | ❌ Missing | | `profile_editor__section_input` | Section/Subject | ~1224 | ❌ Missing | | `profile_editor__board_stream_select` | Board/Stream | ~1233 | ❌ Missing | **Note**: Full Name is ✅ implemented. --- ### Step 5: Focus Areas (22 missing) #### Short-term Focus Areas (11 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__short_term_focus_academics` | Academics checkbox | ~1263 (MultiSelectPicker) | ❌ Missing | | `profile_editor__short_term_focus_family` | Family checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_health` | Health checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_friendship` | Friendship checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_emotional` | Emotional management checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_personal_growth` | Personal Growth checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_hobbies` | Hobbies checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_physical` | Physical Activities checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_future` | Future Aspiration checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_others` | Others checkbox | ~1263 | ❌ Missing | | `profile_editor__short_term_focus_others_text` | Others text input | ~1277 | ❌ Missing | #### Long-term Focus Areas (11 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__long_term_focus_academics` | Academics checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_family` | Family checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_health` | Health checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_friendship` | Friendship checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_emotional` | Emotional management checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_personal_growth` | Personal Growth checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_hobbies` | Hobbies checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_physical` | Physical Activities checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_future` | Future Aspiration checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_others` | Others checkbox | ~1293 | ❌ Missing | | `profile_editor__long_term_focus_others_text` | Others text input | ~1307 | ❌ Missing | **Note**: `MultiSelectPicker` component (line 147) needs `data-testid` on each checkbox input. --- ### Step 6: Self-Assessment (36 missing) #### Strengths (18 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__strength_quick_learning` | Quick Learning checkbox | ~1333 (MultiSelectPicker) | ❌ Missing | | `profile_editor__strength_curiosity` | Curiosity checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_problem_solving` | Problem-Solving checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_justice` | Sense of Justice checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_empathy` | Empathy checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_risk_taking` | Risk Taking checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_compassion` | Compassion checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_creative` | Creative Skills checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_technical` | Technical Skills checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_leadership` | Leadership checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_communication` | Communication checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_athletic` | Athletic Talents checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_languages` | Languages checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_research` | Research Skills checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_critical_thinking` | Critical Thinking checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_artistic` | Artistic Talent checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_others` | Others checkbox | ~1333 | ❌ Missing | | `profile_editor__strength_others_text` | Others text input | ~1347 | ❌ Missing | #### Areas of Improvement (18 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__improvement_quick_learning` | Quick Learning checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_curiosity` | Curiosity checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_problem_solving` | Problem-Solving checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_justice` | Sense of Justice checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_empathy` | Empathy checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_risk_taking` | Risk Taking checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_compassion` | Compassion checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_creative` | Creative Skills checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_technical` | Technical Skills checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_leadership` | Leadership checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_communication` | Communication checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_athletic` | Athletic Talents checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_languages` | Languages checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_research` | Research Skills checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_critical_thinking` | Critical Thinking checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_artistic` | Artistic Talent checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_others` | Others checkbox | ~1363 | ❌ Missing | | `profile_editor__improvement_others_text` | Others text input | ~1377 | ❌ Missing | **Note**: `MultiSelectPicker` component needs `data-testid` on each checkbox. --- ### Step 7: Hobbies & Clubs (26 missing) #### Hobbies (13 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__hobby_reading` | Reading checkbox | ~1403 (MultiSelectPicker) | ❌ Missing | | `profile_editor__hobby_musical` | Playing Musical Instruments checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_sports` | Sports checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_arts_crafts` | Arts and Crafts checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_cooking` | Cooking and Baking checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_gardening` | Gardening checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_gaming` | Gaming checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_traveling` | Traveling checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_volunteering` | Volunteering checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_learning` | Learning New Skills checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_singing` | Singing checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_other` | Other checkbox | ~1403 | ❌ Missing | | `profile_editor__hobby_other_text` | Other text input | ~1417 | ❌ Missing | #### Clubs (13 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__club_science` | Science Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_mathematics` | Mathematics Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_quiz` | Quiz Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_literary` | Literary Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_robotics` | Robotics Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_art` | Art Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_music` | Music Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_dramatics` | Dramatics / Theatre Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_sports` | Sports Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_community` | Community Service Club checkbox | ~1434 | ❌ Missing | | `profile_editor__club_mun` | Model United Nations (MUN) checkbox | ~1434 | ❌ Missing | | `profile_editor__club_other` | Other checkbox | ~1434 | ❌ Missing | | `profile_editor__club_other_text` | Other text input | ~1472 | ❌ Missing | **Note**: Clubs use direct mapping (line 1434), not MultiSelectPicker. --- ### Step 8: Achievements (5 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__achievement_academics_textarea` | Academics textarea | ~1495 | ❌ Missing | | `profile_editor__achievement_sports_textarea` | Sports textarea | ~1504 | ❌ Missing | | `profile_editor__achievement_cultural_textarea` | Cultural/Arts textarea | ~1513 | ❌ Missing | | `profile_editor__achievement_trained_textarea` | Trained/Certified textarea | ~1522 | ❌ Missing (conditional) | | `profile_editor__achievement_others_textarea` | Others textarea | ~1532 | ❌ Missing | --- ### Step 9: Expectations (11 missing) | Attribute | Element | Line Reference | Status | |-----------|---------|----------------|--------| | `profile_editor__expectation_self_understanding` | Self-Understanding checkbox | ~1550 (MultiSelectPicker) | ❌ Missing | | `profile_editor__expectation_career_guidance` | Career Guidance checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_academic_support` | Academic Support checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_validation` | Validation / Reassurance checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_decision_making` | Improved Decision-Making checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_clarity` | Clarity About Strengths checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_personal_growth` | Personal Growth checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_objective_feedback` | Objective Feedback checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_actionable_steps` | Actionable Next Steps checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_others` | Others checkbox | ~1550 | ❌ Missing | | `profile_editor__expectation_others_text` | Others text input | ~1564 | ❌ Missing | --- ## Summary Statistics ### Implementation Status - **✅ Implemented**: 14 attributes (9%) - **❌ Missing**: 140+ attributes (91%) - **Total Required**: ~154 attributes ### By Category | Category | Implemented | Missing | Total | |----------|-------------|---------|-------| | Page & Navigation | 1 | 3 | 4 | | Step 1: Personal Information | 6 | 5 | 11 | | Step 2: Contact Information | 2 | 5 | 7 | | Step 3: Parent/Guardian | 0 | 13 | 13 | | Step 4: Education Details | 1 | 3 | 4 | | Step 5: Focus Areas | 0 | 22 | 22 | | Step 6: Self-Assessment | 0 | 36 | 36 | | Step 7: Hobbies & Clubs | 0 | 26 | 26 | | Step 8: Achievements | 0 | 5 | 5 | | Step 9: Expectations | 0 | 11 | 11 | --- ## Critical Components Needing Updates ### 1. MultiSelectPicker Component (Line 147) **Issue**: Checkboxes inside `MultiSelectPicker` don't have `data-testid` attributes. **Current Code** (Line 171): ```jsx {...}} className="..." /> ``` **Required**: Add `data-testid` to each checkbox based on option value. **Solution**: Modify `MultiSelectPicker` to accept a `testIdPrefix` prop: ```jsx ``` **Affected Sections**: - Focus Areas (short-term & long-term) - Self-Assessment (strengths & improvements) - Expectations --- ### 2. Clubs Checkboxes (Line 1434) **Issue**: Direct mapping without `data-testid`. **Current Code**: ```jsx {CLUBS_OPTIONS.map((club) => ( ))} ``` **Required**: Add `data-testid` to each checkbox: ```jsx ``` --- ### 3. All Text Inputs **Issue**: Many text inputs missing `data-testid`. **Pattern to Follow**: ```jsx ``` --- ### 4. All Select Dropdowns **Issue**: Select elements missing `data-testid`. **Pattern to Follow**: ```jsx