Complete Email Sortierer implementation with Appwrite and Stripe integration
This commit is contained in:
258
server/E2E_TEST_GUIDE.md
Normal file
258
server/E2E_TEST_GUIDE.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
cd server
|
||||
npm start
|
||||
```
|
||||
|
||||
2. **Browser öffnen:**
|
||||
- Navigieren Sie zu http://localhost:3000
|
||||
|
||||
3. **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"
|
||||
|
||||
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:**
|
||||
```bash
|
||||
stripe login
|
||||
```
|
||||
|
||||
2. **Webhook forwarding starten:**
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
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! 🎉
|
||||
Reference in New Issue
Block a user