# Test Stratejisi

## Tek komutluk kalite kapısı

```bash
npm run test:all
```

Bu komut sırayla Node.js testlerini, iki Chromium mobil testini, release kalite kontrolünü, production kaynak denetimini ve güvenlik kaynak taramasını çalıştırır. Paylaşımlı cPanel üzerinde Chromium process/thread sınırına takılabileceğinden canlı sunucuda `npm test`, `npm run release:check`, `npm run production:audit` ve `npm run security:scan` ayrı çalıştırılmalıdır; tam komut release/CI ortamı içindir.

## Node.js testleri

```bash
npm test
```

v1.4.1 paketinde 51 test bulunur. Kapsam:

- `.env` ayrıştırma, production gizli değer kontrolü ve alt yol kurulumu
- HTTP güvenlik başlıkları, origin, içerik tipi, gövde limiti, traversal ve gzip
- Yetki, üreticinin kendi bölümünü test etmesi ve mükerrer oy engeli
- 10 testçi yayın/ret ve zorluk kararı
- Yayınlanan topluluk bölümlerinin aynı listede 6. bölümden devam etmesi
- Zorluk kartında `5 + topluluk` yerine doğrudan toplam bölüm sayısı
- Üretici, üniversite, topluluk, tahta boyutu ve yayın tarihi görünürlüğü
- Yayınlanan kartlarda test sayısının son kullanıcıdan kaldırılması
- Kronolojik ve kalıcı topluluk bölümü numaralandırması
- 15 yerleşik bölümün yapı, geçerli çözüm ve tek çözüm kontrolü
- 240 deterministik rastgele küçük tahtanın bağımsız kaba kuvvet çözümleyiciyle karşılaştırılması
- Worker thread çözümleyicinin standart ve 14×14 tahtada çalışması
- Tahta boyutunun zorluktan bağımsız olması
- Oyun/atölye satır ve sütun kalan yıldız göstergeleri
- Boş oluşturucu tuvali, benzersiz bölge kimliği, Silgi/Boş ve kopuk bölge uyarıları
- Şablonların çözüm yıldızlarını koruması
- Yakınlaştırılmış tahta için taşıma modu
- Çift dokunma/pinch yakınlaştırma koruması
- iOS Ana Ekran viewport ve güvenli alan yapılandırması
- Service worker ve manifest uygulama kabuğu
- Release statik kalite kapıları

## Mobil Chromium E2E

```bash
npm run test:browser
```

İki ayrı gerçek tarayıcı regresyonu çalışır:

### Uygulama ana akışı

390×844 mobil görünüm ve dokunmatik özellikleriyle:

- Ana ekran ve üç zorluk kartı
- Her zorlukta beş başlangıç bölümü ve yayınlanan topluluk bölümünün aynı numaralı listede 6. bölüm olarak görünmesi
- Zorluk kartının `6 bölüm` gibi doğrudan toplam göstermesi
- Yayınlanan bölümün hazırlayan/üniversite/topluluk kaynağının ve yayın tarihinin görünmesi
- Yayın kartında test sayısının bulunmaması
- Boyut-zorluk metni bulunmaması
- Bölüm oynama, hücre geometrisi, işaret döngüsü ve minimal sonuç penceresi
- Satır/sütun göstergelerinin `1 → 0 → negatif` davranışı
- Çift tıklamanın varsayılan yakınlaştırma eyleminin engellenmesi
- Tarayıcı modunda uygulama yüksekliğinin görünür viewport ile eşleşmesi
- Üretici anahtarıyla atölyeye giriş
- 14×14 boş/atanmamış tahta
- Yeni bölge oluşturma, bölge boyama ve Silgi/Boş
- Bölge şablonunun yıldızları koruması
- Kopuk bölge uyarısı
- Tahtayı taşı modunun hücreleri değiştirmemesi
- Yakınlaştırma, sığdırma ve yatay taşma kontrolü
- Koyu ve açık tema ekran görüntüleri

### Satır/sütun göstergesi regresyonu

İzole fixture üzerinde:

- Oyun ve oluşturucu kılavuzlarının doğru sayıda oluşturulması
- Başlangıçta `1`, doğru yıldızda yeşil `0`, fazla yıldızda kırmızı negatif değer
- Hücre geometrisinin gösterge güncellemelerinde değişmemesi
- Erişilebilir canlı açıklamanın güncellenmesi

## Release ve güvenlik kapıları

```bash
npm run release:check
npm run production:audit
npm run security:scan
```

Kontroller arasında şunlar bulunur:

- PHP, gerçek `.env`, `node_modules` ve canlı `KK-...` anahtarı bulunmaması
- Public dosyalarda istenmeyen “resmi/reklamsız” ve boyut-zorluk metinlerinin bulunmaması
- Sabit hücre Grid korumaları
- Boş oluşturucu, güvenli şablon, taşıma modu ve PWA shell kodunun bulunması
- Service worker'ın API yanıtlarını önbelleğe almaması
- JavaScript sözdizimi
- Migration ve tam sürüme sabitlenmiş MySQL sürücüsü
- `eval`, `new Function`, `document.write`, wildcard CORS ve zayıf hash kalıplarının bulunmaması

## Gerçek MySQL kapısı

Aşağıdaki test yalnızca hedef MySQL/MariaDB sunucusunda anlamlıdır:

```bash
npm run db:migrate
npm run db:smoke
npm run db:integration
```

`db:integration`; üretici ve testçileri oluşturur, yayın/ret kararlarını transaction içinde doğrular ve test kayıtlarını temizler. Canlı trafiğe geçmeden önce hedef cPanel ortamında başarılı olmalıdır.
