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:
- ✅ Alle Dependencies installiert haben (
npm installin server/) - ✅ Eine
.envDatei mit allen erforderlichen Credentials erstellt haben - ✅ Das Bootstrap-Script ausgeführt haben (
npm run bootstrap) - ✅ 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?
-
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
-
Submission erstellen (Requirements 2.2, 2.3)
- Erstellt eine neue Submission mit Test-Antworten
- Speichert Kundeninformationen (Email, Name)
- Validiert Property 2: Submission Creation
-
Antworten speichern (Requirements 2.3)
- Speichert alle Antworten in der Answers Collection
- Verifiziert, dass Antworten korrekt abgerufen werden können
-
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
-
Webhook Konfiguration (Requirements 3.4)
- Überprüft, dass Webhook Secret konfiguriert ist
- Validiert Property 4: Webhook Validation
-
Payment Completion (Requirements 3.3)
- Simuliert erfolgreiche Bezahlung
- Aktualisiert Submission Status auf "paid"
- Erstellt Order-Record
-
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:
-
Server starten:
cd server npm start -
Browser öffnen:
- Navigieren Sie zu http://localhost:3000
-
Fragebogen ausfüllen:
-
Schritt 1: Kontaktinformationen
- Email: test@example.com
- Name: Test User
- Firma: Test Company
-
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"
-
-
Zusammenfassung überprüfen:
- Alle Antworten sollten korrekt angezeigt werden
- "Jetzt kaufen" Button sollte sichtbar sein
-
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
-
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:
-
Stripe CLI installieren:
stripe login -
Webhook forwarding starten:
stripe listen --forward-to localhost:3000/stripe/webhook -
Webhook Secret kopieren:
- Kopieren Sie das angezeigte Secret (whsec_...)
- Fügen Sie es in Ihre
.envalsSTRIPE_WEBHOOK_SECRETein - Starten Sie den Server neu
-
Test-Event senden:
stripe trigger checkout.session.completed -
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
.envgesetzt sind - Kopieren Sie
.env.examplezu.envund 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_IDkorrekt gesetzt ist
Test schlägt fehl: "Stripe error"
- Überprüfen Sie, dass
STRIPE_SECRET_KEYkorrekt 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_SECRETkorrekt 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! 🎉