website-htmx-rustelo-code/scripts/nav-test
2026-07-10 03:44:13 +01:00
..
benchmark-route.nu init repo with source 2026-07-10 03:44:13 +01:00
benchmark-route.sh init repo with source 2026-07-10 03:44:13 +01:00
full-test-suite.nu init repo with source 2026-07-10 03:44:13 +01:00
full-test-suite.sh init repo with source 2026-07-10 03:44:13 +01:00
README.md init repo with source 2026-07-10 03:44:13 +01:00
test-navigation-sequence.nu init repo with source 2026-07-10 03:44:13 +01:00
test-navigation-sequence.sh init repo with source 2026-07-10 03:44:13 +01:00
test-single-route.nu init repo with source 2026-07-10 03:44:13 +01:00
test-single-route.sh init repo with source 2026-07-10 03:44:13 +01:00
validate-all-routes.nu init repo with source 2026-07-10 03:44:13 +01:00
validate-all-routes.sh init repo with source 2026-07-10 03:44:13 +01:00

Navigation Test Scripts

This directory contains scripts for testing SPA navigation without requiring a browser. These scripts use the HTTP navigation test API to validate routes, test navigation sequences, and benchmark performance.

Prerequisites

  1. Server with navigation testing API enabled:

    just dev::with-nav-test
    # OR manually:
    ENABLE_NAV_TEST_API=true cargo leptos serve --features content-watcher
    
  2. Optional tools for better output:

    # Install jq for JSON parsing
    brew install jq  # macOS
    apt install jq   # Ubuntu
    
    # Install bc for performance calculations  
    brew install bc  # macOS
    apt install bc   # Ubuntu
    

Scripts

1. test-single-route.sh

Test individual route resolution.

# Test home route
./test-single-route.sh /

# Test services route  
./test-single-route.sh /services

# Test Spanish route
./test-single-route.sh /es/contactar

2. test-navigation-sequence.sh

Test navigation transitions between routes.

# Test navigation from home to services
./test-navigation-sequence.sh / /services

# Test cross-language navigation
./test-navigation-sequence.sh / /es

3. validate-all-routes.sh

Validate all configured routes in the system.

# Validate all routes
./validate-all-routes.sh

4. benchmark-route.sh

Benchmark route resolution performance.

# Benchmark home route (default 1000 iterations)
./benchmark-route.sh /

# Benchmark with custom iterations
./benchmark-route.sh /services 5000

5. full-test-suite.sh

Run comprehensive navigation test suite.

# Run all tests
./full-test-suite.sh

Environment Variables

  • BASE_URL: Server base URL (default: http://localhost:3030)
    BASE_URL=http://localhost:8080 ./test-single-route.sh /
    

Integration with Just

These scripts are integrated with the justfile for easy access:

# Individual tests
just dev::nav-test-route /services
just dev::nav-test-sequence / /services
just dev::nav-test-validate
just dev::nav-test-bench /services

# Full suite
just dev::nav-test-all

CI/CD Usage

For automated testing in CI/CD pipelines:

# Start server in background
ENABLE_NAV_TEST_API=true cargo leptos serve --features content-watcher &

# Wait for server startup
sleep 5

# Run quick validation
./validate-all-routes.sh

# Or run full suite
./full-test-suite.sh

Troubleshooting

Server Not Running

❌ Server not running at http://localhost:3030
💡 Start server with: just dev::with-nav-test

Solution: Start the server with navigation testing API enabled.

Invalid Routes Found

❌ Invalid Routes:
  - /nonexistent (en): Route not found

Solution: Check your route configuration in site/config/routes/ directory.

Missing Dependencies

💡 Install jq for better output formatting: brew install jq

Solution: Install optional dependencies for enhanced output formatting.

Output Examples

Successful Route Test

🧭 Testing navigation to: /services
✅ Route test successful
📊 Route Information:
  Path: /services
  Component: ServicesPage
  Language: en
  Valid: true
  Resolution Time: 0.145ms
🎉 Navigation test completed successfully

Navigation Sequence Test

🧭 Testing navigation sequence: / → /services
✅ Navigation test successful
📊 Navigation Information:
  From: / → /services
  Transition: valid
  From Component: HomePage
  To Component: ServicesPage
  Language: en
  Valid: true
🎉 Navigation sequence test completed successfully

Performance Benchmark

🧭 Benchmarking route resolution: /services
✅ Benchmark completed
📊 Performance Metrics:
  Path: /services
  Component: ServicesPage
  Iterations: 1000
  Total Time: 125.43ms
  Average Time: 0.125ms
  Min Time: 0.089ms
  Max Time: 2.134ms
🚀 Excellent performance (< 0.1ms avg)
⚡ Requests per second: ~7968