upskill-event-manager/wordpress-dev/bin/run-advanced-tests.sh
bengizmo 8d44245ec9 feat: Harmonize Playwright testing capabilities
- 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>
2025-05-21 10:33:48 -03:00

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