ImmoPrüf — QA Projekt

Vollständiges QA-Testprojekt — manuelle Tests, automatisierte End-to-End-Tests mit Playwright, API-Tests mit Postman und CI/CD mit GitHub Actions.

✅ 35/35 Tests bestanden QA Tests
HTML / JS Node.js Express Playwright TypeScript Postman REST API GitHub Actions Git
GitHub Repository

1. Projektziel

ImmoPrüf ist eine simulierte Immobilienbewertungs-Web-App, entwickelt um einen vollständigen QA-Workflow zu demonstrieren.

Was

Was getestet wird

  • Formularvalidierung
  • Berechnungslogik (Marktwert, Beleihungswert)
  • REST-API Endpoints
  • Fehlerfälle und Edge Cases
Wie

Wie getestet wird

  • Manuelles exploratives Testen
  • Automatisierte E2E-Tests (Playwright)
  • API-Tests (Postman)
  • Automatische CI-Pipeline (GitHub Actions)

2. Architekturübersicht

Drei unabhängige Schichten — Frontend, API und Tests.

3. Gefundene und behobene Bugs

5 Bugs durch manuelles exploratives Testen entdeckt.

ID Beschreibung Schweregrad Status
BUG-001 Beleihungswert 80% statt 60% Kritisch ✅ Behoben
BUG-002 Datum zeigt 01.01.1970 Mittel ✅ Behoben
BUG-003 Fläche ohne m² Einheit Niedrig ✅ Behoben
BUG-004 Gewerbeimmobilie zeigt "undefined" Kritisch ✅ Behoben
BUG-005 Kein Fehler bei Wert unter 10.000€ Mittel ✅ Behoben
5 Bugs gefunden — 5 Bugs behoben ✅
Jeder Bug wurde mit Reproduktionsschritten, erwartetem und tatsächlichem Ergebnis dokumentiert.

4. Automatisierte Tests — Playwright

Stack

Technologie

  • Playwright + TypeScript
  • Chromium Browser
  • End-to-End Tests
  • Headless Modus für CI
Tests

Was getestet wird

  • Validierung aller 4 Formularfelder
  • Alle 5 Bug-Fixes verifiziert
  • Happy-Path Gesamttest
  • Regression nach jeder Änderung
// Beispiel — BUG-001 Test
test('Beleihungswert ist 60% des Marktwerts', async ({ page }) => {
  await fillForm(page, {
    adresse: 'Hauptstrasse 12, Erfurt',
    typ: 'wohnung',
    flaeche: '100',
    baujahr: '2020'
  });
  const ratio = beleihung / marktwert;
  expect(ratio).toBeCloseTo(0.6, 1); // ✅
});
10 / 10 Tests bestanden ✅

5. API Tests — Postman

3 REST-Endpoints mit 20 automatisierten Tests.

Endpoint Methode Tests Status
/api/marktdaten GET 7
/api/wertindikation GET 5
/api/hochwasser GET 5
Fehlertests GET 3
// Beispiel — Postman Test Script
pm.test("Beleihungswert ist 60% des Marktwerts", function () {
    const json = pm.response.json();
    const ratio = json.ergebnis.beleihungswert / json.ergebnis.marktwert;
    pm.expect(ratio).to.be.closeTo(0.6, 0.01); // ✅
});
20 / 20 Tests bestanden ✅

6. CI/CD — GitHub Actions

Bei jedem Push auf main werden alle Tests automatisch ausgeführt.

Pipeline

Schritte

  1. Code checkout
  2. Node.js 24 installieren
  3. Dependencies installieren (npm ci)
  4. Playwright + Chromium installieren
  5. API Server + HTTP Server starten
  6. Server-Startzeit abwarten (sleep 8s)
  7. Playwright Tests ausführen
  8. HTML Report als Artifact speichern (30 Tage)
Warum

Mehrwert

  • Kein manuelles Testen nach jedem Commit
  • Bug wird sofort erkannt bevor er live geht
  • Report als Beweis gespeichert (30 Tage)
  • Gleicher Ablauf wie Jenkins bei on-geo
  • Badge zeigt Status direkt im README
Workflow: .github/workflows/playwright.yml
Trigger: Push + Pull Request auf main
Runner: ubuntu-latest · Node.js 24

7. Projektstruktur

immopruf/
├── app/
│   └── index.html           ← Web-Anwendung
├── tests/
│   └── immopruf.spec.ts     ← Playwright Tests (TypeScript)
├── api/
│   └── server.js            ← Mock REST API (Node.js + Express)
├── docs/
│   ├── bug-report.md        ← Bug-Dokumentation
│   ├── api-test-report.md   ← API Testergebnisse
│   ├── ci-cd-report.md      ← CI/CD Dokumentation
│   ├── architecture.html    ← Architektur-Diagramm
│   └── project.html         ← Diese Seite
├── .github/
│   └── workflows/
│       └── playwright.yml   ← GitHub Actions Pipeline
├── playwright.config.ts
├── package.json
└── README.md

8. Gesamtergebnis

Testart Tests Bestanden Status
Manuell (Bugs gefunden) 5 5
Playwright E2E 10 10
Postman API 20 20
Total 35 35
35 / 35 Tests bestanden ✅
Vollständiger QA-Workflow von manuellen Tests bis CI/CD-Pipeline.