- Create consistent test structure with latest Playwright version (1.52.0) - Implement trainer-journey-harmonized.test.ts that works with updated Playwright - Fix package.json to ensure consistent dependencies - Add certificate-basic.spec.ts that avoids framework compatibility issues - Create run-advanced-tests.sh script with enhanced configuration options - Add comprehensive documentation for the harmonized testing approach 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			181 lines
		
	
	
		
			No EOL
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			No EOL
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Advanced Playwright Test Runner
 | |
| # This script runs Playwright tests with enhanced setup and config options
 | |
| # Usage: ./bin/run-advanced-tests.sh [--test TEST_TYPE] [--headed] [--debug] [--ui]
 | |
| #
 | |
| # Test types:
 | |
| #   basic      - Basic certificate tests (default)
 | |
| #   journey    - Full trainer journey with certificates
 | |
| #   cert       - Certificate generation
 | |
| #   cert-gen   - Certificate generation for checked-in attendees
 | |
| #   all        - All certificate tests
 | |
| 
 | |
| # Colors for output
 | |
| GREEN='\033[0;32m'
 | |
| RED='\033[0;31m'
 | |
| YELLOW='\033[1;33m'
 | |
| BLUE='\033[0;34m'
 | |
| NC='\033[0m' # No Color
 | |
| 
 | |
| # Change to the project root directory
 | |
| SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
 | |
| cd "$SCRIPT_DIR/.." || exit 1
 | |
| echo "Changed working directory to: $(pwd)"
 | |
| 
 | |
| # Display banner
 | |
| echo -e "${BLUE}============================================${NC}"
 | |
| echo -e "${BLUE}      Advanced Playwright Test Runner       ${NC}"
 | |
| echo -e "${BLUE}============================================${NC}"
 | |
| 
 | |
| # Parse command line arguments
 | |
| TEST_TYPE="basic"
 | |
| UI_MODE=""
 | |
| DEBUG_MODE=""
 | |
| UI_INSPECTOR=""
 | |
| 
 | |
| while [[ "$#" -gt 0 ]]; do
 | |
|   case $1 in
 | |
|     --test)
 | |
|       TEST_TYPE="$2"
 | |
|       shift 2
 | |
|       ;;
 | |
|     --headed)
 | |
|       UI_MODE="--headed"
 | |
|       shift
 | |
|       ;;
 | |
|     --debug)
 | |
|       DEBUG_MODE="--debug"
 | |
|       shift
 | |
|       ;;
 | |
|     --ui)
 | |
|       UI_INSPECTOR="--ui"
 | |
|       shift
 | |
|       ;;
 | |
|     *)
 | |
|       echo -e "${RED}Unknown parameter: $1${NC}"
 | |
|       echo "Usage: ./bin/run-advanced-tests.sh [--test TEST_TYPE] [--headed] [--debug] [--ui]"
 | |
|       echo "Test types: basic, journey, cert, cert-gen, all"
 | |
|       exit 1
 | |
|       ;;
 | |
|   esac
 | |
| done
 | |
| 
 | |
| # Load environment variables
 | |
| if [ -f ./.env ]; then
 | |
|   echo "Loading environment variables from .env"
 | |
|   source ./.env
 | |
| else
 | |
|   echo -e "${RED}Error: .env file not found!${NC}"
 | |
|   echo "Make sure you have a .env file with the required environment variables"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| # Verify plugin is activated
 | |
| echo -e "${YELLOW}Verifying plugin activation...${NC}"
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp plugin is-active hvac-community-events --allow-root"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|   echo -e "${YELLOW}Plugin not active. Activating hvac-community-events...${NC}"
 | |
|   sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp plugin activate hvac-community-events --allow-root"
 | |
|   
 | |
|   if [ $? -ne 0 ]; then
 | |
|     echo -e "${RED}Failed to activate plugin. Cannot continue.${NC}"
 | |
|     exit 1
 | |
|   fi
 | |
|   
 | |
|   # Flush rewrite rules
 | |
|   echo -e "${YELLOW}Flushing rewrite rules...${NC}"
 | |
|   sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp rewrite flush --hard --allow-root"
 | |
| else
 | |
|   echo -e "${GREEN}Plugin is active.${NC}"
 | |
| fi
 | |
| 
 | |
| # Check if test user exists
 | |
| echo -e "${YELLOW}Checking test user...${NC}"
 | |
| USER_EXISTS=$(sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp user get test_trainer --field=ID --allow-root 2>/dev/null || echo 'notfound'")
 | |
| 
 | |
| if [ "$USER_EXISTS" == "notfound" ]; then
 | |
|   echo -e "${YELLOW}Test user not found. Creating test user...${NC}"
 | |
|   # Run the setup script
 | |
|   ./bin/setup-staging-test-users.sh
 | |
| else
 | |
|   echo -e "${GREEN}Test user found with ID: $USER_EXISTS${NC}"
 | |
| fi
 | |
| 
 | |
| # Clear cache if needed
 | |
| echo -e "${YELLOW}Clearing cache...${NC}"
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp cache flush --allow-root"
 | |
| 
 | |
| # Determine test to run
 | |
| case $TEST_TYPE in
 | |
|   "basic")
 | |
|     TEST_FILE="tests/e2e/certificate-basic.spec.ts"
 | |
|     TEST_DESC="Basic certificate tests"
 | |
|     ;;
 | |
|   "journey")
 | |
|     TEST_FILE="tests/e2e/trainer-journey-harmonized.test.ts"
 | |
|     TEST_DESC="Full trainer journey with certificates"
 | |
|     ;;
 | |
|   "cert")
 | |
|     TEST_FILE="tests/e2e/certificates.test.ts"
 | |
|     TEST_DESC="Certificate tests"
 | |
|     ;;
 | |
|   "cert-gen")
 | |
|     TEST_FILE="tests/e2e/certificate-generation-checked-in.test.ts"
 | |
|     TEST_DESC="Certificate generation for checked-in attendees"
 | |
|     ;;
 | |
|   "all")
 | |
|     TEST_FILE="tests/e2e/certificate*.{ts,spec.ts}"
 | |
|     TEST_DESC="All certificate tests"
 | |
|     ;;
 | |
|   *)
 | |
|     echo -e "${RED}Unknown test type: $TEST_TYPE${NC}"
 | |
|     echo "Valid test types: basic, journey, cert, cert-gen, all"
 | |
|     exit 1
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| # Show test configuration
 | |
| echo -e "${YELLOW}Test configuration:${NC}"
 | |
| echo -e "${YELLOW}* Test type: $TEST_DESC${NC}"
 | |
| echo -e "${YELLOW}* Test file: $TEST_FILE${NC}"
 | |
| 
 | |
| if [ -n "$UI_MODE" ]; then
 | |
|   echo -e "${YELLOW}* UI mode: Headed (browser visible)${NC}"
 | |
| else
 | |
|   echo -e "${YELLOW}* UI mode: Headless (browser hidden)${NC}"
 | |
| fi
 | |
| 
 | |
| if [ -n "$DEBUG_MODE" ]; then
 | |
|   echo -e "${YELLOW}* Debug mode: Enabled${NC}"
 | |
| else
 | |
|   echo -e "${YELLOW}* Debug mode: Disabled${NC}"
 | |
| fi
 | |
| 
 | |
| if [ -n "$UI_INSPECTOR" ]; then
 | |
|   echo -e "${YELLOW}* UI Inspector: Enabled${NC}"
 | |
| else
 | |
|   echo -e "${YELLOW}* UI Inspector: Disabled${NC}"
 | |
| fi
 | |
| 
 | |
| # Run the test
 | |
| echo -e "\n${YELLOW}Running tests...${NC}"
 | |
| echo -e "${YELLOW}$ npx playwright test $TEST_FILE $UI_MODE $DEBUG_MODE $UI_INSPECTOR${NC}"
 | |
| 
 | |
| # Start the test
 | |
| npx playwright test $TEST_FILE $UI_MODE $DEBUG_MODE $UI_INSPECTOR
 | |
| 
 | |
| # Check test result
 | |
| TEST_RESULT=$?
 | |
| if [ $TEST_RESULT -eq 0 ]; then
 | |
|   echo -e "${GREEN}✓ Tests completed successfully!${NC}"
 | |
| else
 | |
|   echo -e "${RED}✗ Tests failed with exit code $TEST_RESULT${NC}"
 | |
| fi
 | |
| 
 | |
| # Show report location
 | |
| echo -e "${YELLOW}Test artifacts are available in the test-results directory${NC}"
 | |
| echo -e "${YELLOW}To view HTML report, run: npx playwright show-report${NC}"
 | |
| 
 | |
| exit $TEST_RESULT |