diff --git a/.runner.pid b/.runner.pid
new file mode 100644
index 0000000..5c1838f
--- /dev/null
+++ b/.runner.pid
@@ -0,0 +1 @@
+39731
diff --git a/TESTING_STRATEGY.md b/TESTING_STRATEGY.md
new file mode 100644
index 0000000..be3cb19
--- /dev/null
+++ b/TESTING_STRATEGY.md
@@ -0,0 +1,257 @@
+# Testing Strategy for CommunityRule
+
+## Overview
+
+This document outlines our comprehensive testing strategy that properly separates unit testing from responsive behavior testing, following best practices for JSDOM limitations and real browser testing.
+
+## Current Test Status
+
+- **184 total tests** across the project
+- **176 tests passing** (95.7% success rate)
+- **8 tests failing** (all related to multiple element instances)
+- **13 test files** covering all major components
+
+## Testing Philosophy
+
+### The Problem with JSDOM and Responsive Testing
+
+**Short take: Unit tests in JSDOM can't truly "switch breakpoints."** JSDOM doesn't evaluate CSS media queries, so Tailwind's `hidden sm:block …` won't change visibility when you "resize" the window.
+
+### Solution: Proper Test Separation
+
+- **Unit / component tests (Vitest + RTL):** assert **structure and classes**, not responsive visibility.
+- **Responsive behavior:** verify with **browser-based tests** (Playwright) or **visual tests** (Chromatic/Storybook) at real viewport widths.
+
+## Test Categories
+
+### 1. Unit Tests (Vitest + React Testing Library)
+
+**Purpose:** Test component structure, accessibility, and configuration data.
+
+**What to test:**
+
+- DOM roles/labels exist: `role="banner"`, nav landmark, menu items
+- The right **Tailwind classes** are present on wrappers (`block sm:hidden`, `hidden md:block`, etc.)
+- Data-driven bits produce the expected count/order (e.g., `navigationItems`, `avatarImages`, `logoConfig`)
+- Component configuration and exported data structures
+
+**Example:**
+
+```javascript
+// tests/unit/Header.structure.test.js
+test("logo wrappers include breakpoint classes", () => {
+ render(