diff --git a/TESTING_STRATEGY.md b/TESTING_STRATEGY.md
new file mode 100644
index 00000000..ec11704a
--- /dev/null
+++ b/TESTING_STRATEGY.md
@@ -0,0 +1,376 @@
+# Teststrategie für TipTap Markdown-Migration
+
+## Zusammenfassung der Analyse
+
+Die TipTap-Migration umfasst folgende Kernkomponenten:
+
+| Komponente | Beschreibung | Komplexität |
+|------------|--------------|-------------|
+| `lib/src/Components/TipTap/utils/preprocessMarkdown.ts` | 6-stufige Preprocessing-Pipeline | Hoch |
+| `lib/src/Components/TipTap/utils/simpleMarkdownToHtml.tsx` | Statische HTML-Konvertierung | Mittel |
+| `lib/src/Components/TipTap/extensions/Hashtag.tsx` | Custom Extension mit Tokenizer | Mittel |
+| `lib/src/Components/TipTap/extensions/ItemMention.tsx` | Custom Extension mit Tokenizer | Mittel |
+| `lib/src/Components/TipTap/extensions/VideoEmbed.tsx` | Block-Element für Videos | Mittel |
+| `lib/src/Components/Input/RichTextEditor.tsx` | Haupt-Editor-Komponente | Hoch |
+| `lib/src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx` | Read-Only Editor | Mittel |
+| `lib/src/Components/Map/Subcomponents/ItemPopupComponents/TextViewStatic.tsx` | Lightweight Static Renderer | Niedrig |
+
+---
+
+## Empfohlene Teststrategie: Testing Pyramid
+
+```
+ ┌─────────────────┐
+ │ E2E Tests │ ← Wenige, kritische User Journeys
+ │ (Cypress) │
+ └────────┬────────┘
+ │
+ ┌────────┴────────┐
+ │ Integration │ ← TipTap + Extensions zusammen
+ │ Tests (Vitest) │
+ └────────┬────────┘
+ │
+ ┌───────────────────┴───────────────────┐
+ │ Unit Tests (Vitest) │ ← Utility-Funktionen isoliert
+ │ preprocessMarkdown, simpleMarkdownToHtml │
+ └────────────────────────────────────────┘
+```
+
+### Begründung der Strategie
+
+1. **Unit Tests für Utility-Funktionen (Hauptfokus)**
+ - `preprocessMarkdown.ts` und `simpleMarkdownToHtml.tsx` sind **pure Funktionen** ohne Abhängigkeiten
+ - Extrem schnelle Ausführung, hohe Coverage möglich
+ - Einfach zu warten und zu debuggen
+ - Hier liegt die meiste **Geschäftslogik** der Markdown-Verarbeitung
+
+2. **Integration Tests für TipTap Extensions**
+ - Extensions benötigen einen Editor-Kontext
+ - Testen der Markdown ↔ JSON ↔ HTML Roundtrips
+ - Mäßiger Aufwand, gute Fehlererkennung
+
+3. **E2E Tests nur für kritische User Journeys**
+ - Hoher Wartungsaufwand
+ - Langsame Ausführung
+ - Für Smoke Tests und Regressionsschutz
+
+---
+
+## Detaillierte Testfälle
+
+### 1. Unit Tests für `preprocessMarkdown.ts`
+
+#### A) `convertNakedUrls`
+
+| Testfall | Input | Expected Output |
+|----------|-------|-----------------|
+| **Happy Path** | `Check https://example.com out` | `Check [example.com](https://example.com) out` |
+| **www entfernen** | `https://www.example.com` | `[example.com](https://example.com)` |
+| **URL in Markdown-Link (Skip)** | `[link](https://example.com)` | Unverändert |
+| **URL in Autolink (Skip)** | `Title
` |
+| **Header H2-H6** | `## ... ######` | Entsprechende h-Tags |
+| **Inline Code** | `` `code` `` | `code` |
+| **Blockquote** | `> quote` | `quote
` |
+| **Video Embed** | `
` Trennung | + +--- + +### 3. Integration Tests für TipTap Extensions + +Diese Tests benötigen einen TipTap Editor-Kontext. Setup via `@tiptap/core`: + +```typescript +// Test-Setup Beispiel +import { Editor } from '@tiptap/core' +import StarterKit from '@tiptap/starter-kit' +import { Markdown } from '@tiptap/markdown' +import { Hashtag } from './Hashtag' +``` + +#### A) Hashtag Extension + +| Testfall | Beschreibung | +|----------|--------------| +| **Markdown → JSON** | `#tag` wird zu `{ type: 'hashtag', attrs: { label: 'tag' } }` | +| **JSON → Markdown** | Hashtag-Node wird zu `#tag` serialisiert | +| **HTML Parse** | `#x` wird erkannt | +| **HTML Render** | Node rendert korrekte HTML-Struktur | +| **Tokenizer Start** | `/(? { + it('should create and save content with hashtags and mentions', () => { + // 1. Neues Item erstellen + // 2. Text eingeben mit #tag und @mention + // 3. Speichern + // 4. Popup öffnen und Rendering prüfen + }) + + it('should handle video embeds', () => { + // YouTube URL einfügen → Video-Embed sichtbar + }) +}) +``` + +#### B) Display Flow + +```typescript +describe('Text Display', () => { + it('should render hashtags clickable in popup', () => { + // Item mit Hashtag öffnen + // Hashtag klicken + // Filter wird aktiviert + }) + + it('should navigate to mentioned items', () => { + // Item mit @mention öffnen + // Mention klicken + // Navigation zum verlinkten Item + }) +}) +``` + +--- + +## Priorisierung der Implementierung + +### Phase 1: Unit Tests (Höchste Priorität) + +| Datei | Geschätzte Tests | Grund | +|-------|------------------|-------| +| `preprocessMarkdown.spec.ts` | ~40 Tests | Pure Functions, schnell, hohe Coverage | +| `simpleMarkdownToHtml.spec.ts` | ~25 Tests | Pure Function, XSS-kritisch | + +### Phase 2: Integration Tests + +| Datei | Geschätzte Tests | Grund | +|-------|------------------|-------| +| `Hashtag.spec.ts` | ~15 Tests | Custom Extension mit Tokenizer | +| `ItemMention.spec.ts` | ~15 Tests | Custom Extension mit Tokenizer | +| `VideoEmbed.spec.ts` | ~10 Tests | Block-Element | + +### Phase 3: Component Tests + +| Datei | Geschätzte Tests | Grund | +|-------|------------------|-------| +| `RichTextEditor.spec.tsx` | ~15 Tests | Haupt-Editor | +| `TextView.spec.tsx` | ~10 Tests | Read-Only Variante | +| `TextViewStatic.spec.tsx` | ~8 Tests | Lightweight Renderer | + +### Phase 4: E2E Tests (Niedrigste Priorität) + +| Datei | Geschätzte Tests | Grund | +|-------|------------------|-------| +| `editor-flow.cy.ts` | 3-5 Tests | Kritische User Journey | + +--- + +## Edge Cases und Error Handling + +### Besonders wichtige Grenzfälle + +1. **Leerer Input** - Alle Funktionen sollten mit `''`, `null`, `undefined` umgehen +2. **Sehr langer Text** - Performance bei >10.000 Zeichen +3. **Verschachtelte Syntax** - `**#bold-hashtag**`, `[[@mention](/item/x)](url)` +4. **Unicode** - Emojis, RTL-Text, Sonderzeichen +5. **Malformed Markdown** - Ungeschlossene Tags: `**bold`, `[link(` +6. **XSS Vectors** - `