6.5 KiB
6.5 KiB
Student Assessment Tests
Comprehensive test suite for the complete assessment flow in Cognitive Prism platform.
Overview
This test suite covers the entire assessment journey:
- Assessments Page - Assessment hub and selection
- Domains Page - Domain listing and navigation
- Domain Assessment - Question answering and submission
- Domain Feedback - Per-domain feedback collection
- Final Feedback - Overall assessment feedback
- Complete Flow - End-to-end assessment completion
Test Structure
tests/student_assessment/
├── conftest.py # Fixtures (assessment-ready student)
├── test_01_assessments_page.py # Assessments hub tests
├── test_02_domains_page.py # Domains listing tests
├── test_03_domain_assessment.py # Question answering tests
├── test_04_domain_feedback.py # Domain feedback tests
├── test_05_final_feedback.py # Final feedback tests
└── test_06_complete_assessment_flow.py # End-to-end flow tests
Fixtures
assessment_ready_student
Ensures student is ready for assessments:
- ✅ Login (with smart password handling)
- ✅ Password reset (if needed)
- ✅ Profile completion to 100% (if needed)
- ✅ Navigate to Assessments page
Returns: Dictionary with driver, CPID, and page objects
assessment_with_domains
Extends assessment_ready_student and starts an assessment:
- ✅ Selects first available assessment
- ✅ Navigates to domains page
- ✅ Extracts domain IDs
Returns: Dictionary with domains page, assessment ID, and domain IDs
domain_assessment_started
Starts a domain assessment:
- ✅ Finds first unlocked domain
- ✅ Starts domain assessment
- ✅ Dismisses guidance modal
Returns: Dictionary with domain assessment page and domain ID
Test Categories
Assessments Page Tests (test_01_assessments_page.py)
- Page load verification
- Assessment cards visibility
- Assessment ID extraction
- Card structure validation
- Begin assessment navigation
- Multiple assessments handling
Domains Page Tests (test_02_domains_page.py)
- Page load verification
- Domain cards visibility
- Domain ID extraction
- Lock/unlock status checking
- Action button validation
- Overall progress tracking
- Start domain navigation
- Back button navigation
Domain Assessment Tests (test_03_domain_assessment.py)
- Page load verification
- Progress tracking
- Timer display
- Question detection
- Question type detection
- Navigation buttons
- Answer submission (all types):
- Multiple choice
- True/False
- Rating
- Open-ended
- Matrix
- Submit modal flow
Domain Feedback Tests (test_04_domain_feedback.py)
- Modal detection
- Modal structure validation
- Question 1 (Yes/No + Reason)
- Question 2 (Textarea)
- Submit feedback
- Skip feedback
- Navigation after feedback
Final Feedback Tests (test_05_final_feedback.py)
- Overall feedback modal
- Per-question feedback modal
- Rating selection
- Comment entry
- Feedback submission
Complete Flow Tests (test_06_complete_assessment_flow.py)
- Single domain completion (questions + feedback)
- Full assessment completion (all domains + final feedback)
Running Tests
Run All Assessment Tests
pytest tests/student_assessment/ -v
Run Specific Test Category
# Assessments page only
pytest tests/student_assessment/test_01_assessments_page.py -v
# Domains page only
pytest tests/student_assessment/test_02_domains_page.py -v
# Domain assessment only
pytest tests/student_assessment/test_03_domain_assessment.py -v
# Domain feedback only
pytest tests/student_assessment/test_04_domain_feedback.py -v
# Final feedback only
pytest tests/student_assessment/test_05_final_feedback.py -v
# Complete flow only
pytest tests/student_assessment/test_06_complete_assessment_flow.py -v
Run with Markers
# All assessment tests
pytest -m assessment -v
# End-to-end tests only
pytest -m e2e -v
# Complete flow tests
pytest -m complete_flow -v
# Slow tests (complete flow)
pytest -m slow -v
Run Single Test
pytest tests/student_assessment/test_01_assessments_page.py::TestAssessmentsPage::test_assessments_page_loads -v
Test Coverage
✅ Covered
- Assessments page rendering
- Assessment card structure
- Domain listing and navigation
- Domain lock/unlock status
- Question type detection
- All question types (MC, T/F, Rating, Open-ended, Matrix)
- Question navigation (Previous/Next)
- Domain submission flow
- Domain feedback collection
- Final feedback collection
- End-to-end flow
🔄 Future Enhancements
- Question validation testing
- Timer expiration handling
- Resume incomplete assessments
- Assessment results verification
- Export functionality
- Performance metrics collection
Test Data
Tests use:
- Default test student: From
config.config.TEST_USERNAME - Smart password handling: Tries Excel password, then
Admin@123 - Default profile data: For profile completion
- Automated answers: For question answering
Best Practices
- Fixtures: Use fixtures to ensure test isolation and proper setup
- Explicit Waits: All waits use explicit waits (no hard sleeps)
- Error Handling: Comprehensive error handling with meaningful messages
- Logging: Detailed logging for debugging and tracking
- Skip Logic: Tests skip gracefully when prerequisites aren't met
- Data-testid: All locators use
data-testidattributes
Troubleshooting
"No assessments available"
- Ensure student profile is 100% complete
- Check if assessments are assigned to the student
- Verify environment (local vs live)
"No unlocked domains available"
- Some domains may require previous domains to be completed
- Check domain dependencies
- Verify assessment structure
"Question not found"
- Question may have been answered already
- Check if on last question (Submit button should be visible)
- Verify question elements are loaded
"Feedback modal not present"
- Domain may not be completed yet
- Check if feedback is optional
- Verify modal timing
Notes
- Tests are designed to be independent and idempotent
- Each test handles its own setup and cleanup
- Tests use smart skipping when prerequisites aren't met
- End-to-end tests are marked as
@pytest.mark.slowfor selective execution - All tests follow Page Object Model pattern
- Comprehensive logging for debugging and tracking