upskill-event-manager/wordpress-dev/bin/update-test-urls.sh
bengizmo ba40c296f5 update: Change staging domain to upskill-staging.measurequick.com
- Updated configuration files and documentation to use new staging domain
- Created centralized URL configuration for tests
- Updated page objects to use configuration instead of hardcoded URLs
- Added script to automatically update test files with new domain

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-21 16:42:10 -03:00

121 lines
No EOL
3.7 KiB
Bash
Executable file

#!/bin/bash
# Script to update hardcoded staging URLs in test files
# Will replace old URLs with references to the centralized config
# Set variables
OLD_URL="wordpress-974670-5399585.cloudwaysapps.com"
NEW_URL="upskill-staging.measurequick.com"
TESTS_DIR="/Users/ben/dev/upskill-event-manager/wordpress-dev/tests/e2e"
# Check if config directory exists, if not create it
mkdir -p "$TESTS_DIR/config"
# Check if central config file exists, create it if not
if [ ! -f "$TESTS_DIR/config/staging-config.ts" ]; then
echo "Creating central config file..."
cat > "$TESTS_DIR/config/staging-config.ts" << 'EOF'
/**
* Shared staging configuration for E2E tests
*
* This file centralizes the staging URL configuration to avoid
* hardcoded URLs throughout the test files
*/
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
/**
* Staging URL for tests
* Uses the environment variable as the primary source
* Falls back to the current staging URL if not set
*/
export const STAGING_URL = process.env.UPSKILL_STAGING_URL || 'https://upskill-staging.measurequick.com';
/**
* Helper function to generate full URLs to specific paths
* @param path The path relative to the staging URL
* @returns Full URL
*/
export function getUrl(path: string): string {
const basePath = path.startsWith('/') ? path : `/${path}`;
return `${STAGING_URL}${basePath}`;
}
/**
* Common paths used in tests
*/
export const PATHS = {
// WordPress Admin
admin: getUrl('/wp-admin'),
login: getUrl('/community-login'),
dashboard: getUrl('/hvac-dashboard'),
createEvent: getUrl('/community/events/edit'),
myEvents: getUrl('/my-events'),
// Certificate paths
certificatesReport: getUrl('/certificates-report'),
generateCertificates: getUrl('/generate-certificates'),
// Event related paths
eventSummary: getUrl('/event-summary'),
modifyEvent: getUrl('/modify-event'),
// User paths
profile: getUrl('/trainer-profile'),
registration: getUrl('/trainer-registration'),
};
/**
* Timeout settings for tests
*/
export const TIMEOUTS = {
navigation: 30000,
network: 15000,
animation: 5000,
standard: 10000,
};
EOF
fi
# Update BasePage to use the new config
echo "Updating BasePage.ts..."
if [ -f "$TESTS_DIR/pages/BasePage.ts" ]; then
sed -i '' "s|baseUrl: string = 'https://$OLD_URL'|baseUrl: string = STAGING_URL|g" "$TESTS_DIR/pages/BasePage.ts"
sed -i '' "1s|^|import { STAGING_URL } from '../config/staging-config';\n|" "$TESTS_DIR/pages/BasePage.ts"
fi
# Find all test files
echo "Finding test files with hardcoded URLs..."
TEST_FILES=$(grep -l "$OLD_URL" "$TESTS_DIR"/*.ts)
# Replace hardcoded URLs in each file
for file in $TEST_FILES; do
echo "Processing $file..."
# Add config import if it doesn't exist
if ! grep -q "import.*staging-config" "$file"; then
sed -i '' "1s|^|import { STAGING_URL, PATHS, TIMEOUTS } from './config/staging-config';\n|" "$file"
fi
# Replace hardcoded URLs with new URL
sed -i '' "s|https://$OLD_URL|https://$NEW_URL|g" "$file"
# Replace STAGING_URL variable declaration if it exists
sed -i '' "s|const STAGING_URL = .*|// STAGING_URL is now imported from config|g" "$file"
# Replace direct URL references with PATHS object
sed -i '' "s|\`\${STAGING_URL}/hvac-dashboard/\`|PATHS.dashboard|g" "$file"
sed -i '' "s|\`\${STAGING_URL}/community-login/\`|PATHS.login|g" "$file"
sed -i '' "s|\`\${STAGING_URL}/wp-admin/\`|PATHS.admin|g" "$file"
# Update page navigation timeouts
sed -i '' "s|setDefaultNavigationTimeout(30000)|setDefaultNavigationTimeout(TIMEOUTS.navigation)|g" "$file"
echo "Completed $file"
done
echo "URL update completed. ${#TEST_FILES[@]} files processed."
echo "You may still need to manually check files for specific URL patterns not caught by the script."