Files
ANDJJJJJJ/server/E2E_TEST_GUIDE.md

7.5 KiB

End-to-End Test Guide

Dieses Dokument beschreibt, wie Sie das Email-Sortierer System vollständig testen können.

Voraussetzungen

Bevor Sie die Tests durchführen können, müssen Sie:

  1. Alle Dependencies installiert haben (npm install in server/)
  2. Eine .env Datei mit allen erforderlichen Credentials erstellt haben
  3. Das Bootstrap-Script ausgeführt haben (npm run bootstrap)
  4. Den Server gestartet haben (npm start)

Automatisierter End-to-End Test

Der automatisierte Test überprüft alle Backend-Komponenten:

cd server
npm test

Was wird getestet?

  1. Fragen laden (Requirements 1.1, 2.4)

    • Lädt alle aktiven Fragen für das Produkt "email-sorter"
    • Verifiziert, dass Fragen korrekt nach Step und Order sortiert sind
    • Validiert Property 1: Question Loading
  2. Submission erstellen (Requirements 2.2, 2.3)

    • Erstellt eine neue Submission mit Test-Antworten
    • Speichert Kundeninformationen (Email, Name)
    • Validiert Property 2: Submission Creation
  3. Antworten speichern (Requirements 2.3)

    • Speichert alle Antworten in der Answers Collection
    • Verifiziert, dass Antworten korrekt abgerufen werden können
  4. Stripe Checkout Session (Requirements 3.1, 3.2)

    • Erstellt eine Stripe Checkout Session
    • Verifiziert, dass eine gültige Checkout-URL zurückgegeben wird
    • Validiert Property 3: Payment Flow
  5. Webhook Konfiguration (Requirements 3.4)

    • Überprüft, dass Webhook Secret konfiguriert ist
    • Validiert Property 4: Webhook Validation
  6. Payment Completion (Requirements 3.3)

    • Simuliert erfolgreiche Bezahlung
    • Aktualisiert Submission Status auf "paid"
    • Erstellt Order-Record
  7. Kompletter Datenfluss

    • Verifiziert, dass alle Daten korrekt gespeichert wurden
    • Überprüft Verknüpfungen zwischen Collections

Erwartete Ausgabe

🧪 Starting End-to-End Test

Test 1: Loading questions from Appwrite...
✅ Product found: Email Sorter Setup (49.00 EUR)
✅ Loaded 13 questions
✅ Questions are properly ordered by step and order

Test 2: Creating submission with test answers...
✅ Submission created with ID: [ID]

Test 3: Saving answers to Appwrite...
✅ Answers saved with ID: [ID]
✅ Answers can be retrieved correctly

Test 4: Creating Stripe checkout session...
✅ Stripe session created: [SESSION_ID]
   Checkout URL: https://checkout.stripe.com/...

Test 5: Verifying webhook signature validation...
✅ Webhook secret is configured

Test 6: Simulating payment completion...
✅ Submission status updated to "paid"
✅ Order record created with ID: [ID]

Test 7: Verifying complete data flow...
✅ Data verification:
   - Submission status: paid
   - Answers records: 1
   - Order records: 1

✅ All tests passed!

📊 Test Summary:
   ✅ Questions loaded and ordered correctly
   ✅ Submission created successfully
   ✅ Answers saved and retrieved correctly
   ✅ Stripe checkout session created
   ✅ Webhook configuration verified
   ✅ Payment completion simulated
   ✅ Complete data flow verified

🎉 End-to-End test completed successfully!

Manueller Frontend Test

Um das Frontend manuell zu testen:

  1. Server starten:

    cd server
    npm start
    
  2. Browser öffnen:

  3. Fragebogen ausfüllen:

    • Schritt 1: Kontaktinformationen

    • Schritt 2: Unternehmensgröße

      • Mitarbeiter: 1-10
      • Email-Volumen: 100-500
    • Schritt 3: Aktueller Anbieter

      • Provider: Gmail
    • Schritt 4: Probleme (Multiselect)

      • Wählen Sie: Spam, Organization
    • Schritt 5: Budget

      • Budget: 50-100
    • Schritt 6: Timeline

      • Timeline: Sofort
    • Schritt 7: Gewünschte Features (Multiselect)

      • Wählen Sie: Auto-Sorting, Priority Inbox
    • Schritt 8: Integration

      • Integration: Ja
    • Schritt 9: Datenschutz

      • Datenschutz: Sehr wichtig
    • Schritt 10: Zusätzliche Informationen

      • Text: "Test submission"
  4. Zusammenfassung überprüfen:

    • Alle Antworten sollten korrekt angezeigt werden
    • "Jetzt kaufen" Button sollte sichtbar sein
  5. Bezahlung testen:

    • Klicken Sie auf "Jetzt kaufen"
    • Sie werden zu Stripe Checkout weitergeleitet
    • Verwenden Sie Test-Kreditkarte: 4242 4242 4242 4242
    • Ablaufdatum: Beliebiges zukünftiges Datum
    • CVC: Beliebige 3 Ziffern
  6. Daten in Appwrite überprüfen:

    • Öffnen Sie Ihr Appwrite Dashboard
    • Navigieren Sie zur EmailSorter Database
    • Überprüfen Sie die Collections:
      • Submissions: Sollte einen neuen Eintrag mit status "paid" haben
      • Answers: Sollte die gespeicherten Antworten enthalten
      • Orders: Sollte einen Order-Record haben

Webhook Test

Um den Stripe Webhook zu testen:

  1. Stripe CLI installieren:

    stripe login
    
  2. Webhook forwarding starten:

    stripe listen --forward-to localhost:3000/stripe/webhook
    
  3. Webhook Secret kopieren:

    • Kopieren Sie das angezeigte Secret (whsec_...)
    • Fügen Sie es in Ihre .env als STRIPE_WEBHOOK_SECRET ein
    • Starten Sie den Server neu
  4. Test-Event senden:

    stripe trigger checkout.session.completed
    
  5. Logs überprüfen:

    • Server-Logs sollten "Webhook received" zeigen
    • Appwrite sollte eine neue Order haben

Validierung der Correctness Properties

Property 1: Question Loading

Test: Fragen werden korrekt geladen und sortiert

  • Automatischer Test verifiziert Sortierung nach step und order
  • Nur aktive Fragen werden zurückgegeben

Property 2: Submission Creation

Test: Submissions werden korrekt erstellt

  • Automatischer Test erstellt Submission mit allen Feldern
  • SubmissionId wird zurückgegeben

Property 3: Payment Flow

Test: Checkout-Flow funktioniert

  • Automatischer Test erstellt Stripe Session
  • Checkout URL wird generiert

Property 4: Webhook Validation

Test: Webhook-Signatur wird validiert

  • Server prüft Stripe-Signatur
  • Ungültige Signaturen werden mit 400 abgelehnt

Fehlerbehebung

Test schlägt fehl: "Missing required environment variable"

  • Überprüfen Sie, dass alle Variablen in .env gesetzt sind
  • Kopieren Sie .env.example zu .env und füllen Sie alle Werte aus

Test schlägt fehl: "No active product found"

  • Führen Sie das Bootstrap-Script aus: npm run bootstrap
  • Überprüfen Sie, dass APPWRITE_DATABASE_ID korrekt gesetzt ist

Test schlägt fehl: "Stripe error"

  • Überprüfen Sie, dass STRIPE_SECRET_KEY korrekt ist
  • Verwenden Sie einen Test-Key (sk_test_...)

Frontend lädt keine Fragen

  • Öffnen Sie die Browser-Konsole (F12)
  • Überprüfen Sie auf Netzwerkfehler
  • Stellen Sie sicher, dass der Server läuft

Webhook funktioniert nicht

  • Stellen Sie sicher, dass Stripe CLI läuft
  • Überprüfen Sie, dass STRIPE_WEBHOOK_SECRET korrekt ist
  • Überprüfen Sie Server-Logs auf Fehler

Erfolgreiche Test-Checkliste

  • Automatischer E2E-Test läuft ohne Fehler durch
  • Frontend lädt alle 13 Fragen
  • Navigation zwischen Steps funktioniert
  • Validierung von Pflichtfeldern funktioniert
  • Zusammenfassung zeigt alle Antworten
  • Stripe Checkout wird korrekt erstellt
  • Submission wird in Appwrite gespeichert
  • Answers werden in Appwrite gespeichert
  • Webhook aktualisiert Submission Status
  • Order wird nach Bezahlung erstellt

Wenn alle Punkte erfüllt sind, ist das System vollständig funktionsfähig! 🎉