# Dompdf güncellemesi ve gerçek yerel WooCommerce testleri

Tarih: 28 Ekim 2026.

Bu değişiklikler 2.4.13 sürüm paketine dahil edilmiştir. Önceki `tags/2.4.12` değiştirilmemiştir. Odak düzeltmesi de yerel test kurulumuna dahil edilmiştir.

## Güncellenen bağımlılıklar

| Paket | Önce | Sonra |
| --- | --- | --- |
| dompdf/dompdf | 3.1.0 | 3.1.6 |
| dompdf/php-font-lib | 1.0.1 | 1.0.2 |
| dompdf/php-svg-lib | 1.0.0 | 1.0.2 |
| masterminds/html5 | 2.9.0 | 2.12.0 |
| sabberworm/php-css-parser | 8.7.0 | 9.5.0 |

`composer.json` gereksinimi `^3.1.6` yapıldı. `composer.lock`, dağıtılan `vendor/` dosyaları ve Composer autoload bilgileri yenilendi. Artık pakette bulunmayan eski dosyalar SVN silme listesine, yeni dosyalar ekleme listesine alındı. `composer validate`, `check-platform-reqs` ve `audit --no-dev` başarılı; denetim bilinen güvenlik açığı veya terk edilmiş paket bildirmedi. Yeni bağımlılıkların ortak minimum PHP gereksinimi 7.4'tür; PHP 7.4 çalıştırma testi yapılmadı.

Resmi [Dompdf 3.1.6 sürüm notları](https://github.com/dompdf/dompdf/releases/tag/v3.1.6) güvenlik düzeltmelerini içerir. Projedeki PDF erişim kontrolü, izinli uzak sunucular, chroot ve sözleşme kabul doğrulaması değiştirilmedi.

## Ayrı yerel kurulum

- Dizin: `/Users/yemlihakorkmaz/Local Sites/wc-korkmaz-contract-qa/`.
- Mağaza: `http://127.0.0.1:18728/`; yönetim: `/wp-admin/`.
- Resmi paketlerden WordPress 7.1.3 ve WooCommerce 11.2.1; Türkçe `tr_TR`, Twenty Twenty-Five, HPOS, MySQL 8.0.35, HTTP sunucusunda PHP 8.2.30.
- WooCommerce paketindeki `sample-data/sample_products.csv`, WooCommerce'in gerçek CSV içe aktarıcısıyla yüklendi: 18 ürün, 7 varyasyon ve 23 görsel. İki indirilebilir örnek ürünün eski kaynak dizini ilk denemede devre dışı/onaysız olduğu için WooCommerce tarafından reddedildi; yalnızca bu yerel kurulumda ilgili örnek dizin onaylanarak yeniden içe aktarıldı. Son durumda tüm örnek ürünler yüklendi.
- Fiziksel Beanie/T-Shirt ürünleri, 25 TRY sabit kargo ve yerel havale yöntemi kullanıldı. Varyasyonlu örnek ürün de gerçek ürün sayfasından seçilip sepete eklendi.
- Mevcut Local siteleri ve canlı mağaza değiştirilmedi. Test e-postaları yerel mu-plugin ile dışarı gönderilmeden kesildi. Zamanlanmış görevlerin arka planda eşzamanlı çalışması yerel testte kapatıldı.
- Eklenti bu kurulumda ayrı bir kopyadır; kaynak projeye sembolik bağ yapılmadı. Test PDF ve font önbellekleri kaynak depoya yazılmadı.

Kurulumu açmak için `start-local.sh`, durdurmak için `stop-local.sh` hazırlanmıştır. Yerel yönetici bilgileri kurulumun `YEREL-KULLANIM.md` dosyasındadır. Bu dosyalar eklenti paketine dahil değildir.

## Gerçek tarayıcı ve HTTP sonuçları

Google Chrome ile gerçek WordPress/WooCommerce ön yüzü kullanıldı; bu bölümde ödeme deposu veya checkout isteği dublör değildir.

- Blok ödeme: 29 kontrol başarılı. Tek onay kutusu, Sipariş Ver öncesinde konum, Türkçe metinler, fiziksel ürün/kargo, sözleşme modalındaki gerçek müşteri/ürün bilgileri doğrulandı.
- Onaysız gönderim ve onayın geri alınması checkout POST'unu engelledi. İlk hatalı gönderimde kutuya odaklanıldı; kutu görünürken kaydırma korundu, ekran dışındayken görünür alana geldi. 1280×850 ve 390×844 görünümleri denendi.
- WooCommerce aynı görünür hata ile tekrar gönderimde odağı düğmede bırakabiliyor. Tekrarlanan bu gönderimde sayfa başına kayma veya checkout POST'u görülmedi. Bu durum önceki dublörlü bileşen testinin her gönderimde odak iddiasından ayrıdır.
- Gerçek Store API isteğinin onay değeri testte `0` olarak değiştirildi: sunucu HTTP 400 / `korkmaz_contract_not_approved` ile reddetti.
- Geçerli kabul ile gerçek yerel havale siparişi HTTP 200 ile oluşturuldu; sipariş 62 `on-hold`, kargo 25 TRY. İki sözleşme bağlantısı HTTP 200 / `application/pdf`; yanlış sipariş anahtarı ve nonce HTTP 403 döndürdü.
- Klasik ödeme: 12 kontrol başarılı. Türkçe onay alanı ve konumu korundu; eksik kabul ve hatalı sözleşme nonce'u gerçek checkout sunucusunda reddedildi. Geçerli onayla sipariş 72 `on-hold`, kargo 25 TRY; iki PDF indirildi.
- Yerel yönetici girişinden sonra eklenti ayar ekranı açıldı. Varyasyonlu örnek ürünün nitelikleri seçilerek gerçek sepete ekleme kontrol edildi.
- Kontrol edilen sayfalarda JavaScript çalışma zamanı hatası yakalanmadı. Son doğrulama koşusunda WordPress debug günlüğüne kayıt düşmedi. Kurulum/ilk test denemelerindeki CLI çeviri bildirimi, Action Scheduler kilit yarışı ve test düzeneği hataları ayrı günlüklerde saklandı; son koşunun başarısı olarak gösterilmedi.

## PDF ve PHP matrisi

Yeni `tests/pdf-integration.php`, gerçek WordPress, WooCommerce siparişi, içe aktarılmış ürün/görsel ve gerçek Dompdf ile çalışır. Yalnızca açıkça izin verilen `local` ortamda çalıştırılabilir. Uzun sözleşme şablonları süreç içi filtreyle sağlanır; kayıtlı sözleşme ayarları değiştirilmez.

| PHP | PHP syntax | Gerçek WP/WC entegrasyonu | Gerçek PDF entegrasyonu |
| --- | --- | --- | --- |
| 8.1.29 | 261 dosya geçti | 45 kontrol geçti | 15 kontrol geçti |
| 8.2.30 | 261 dosya geçti | 45 kontrol geçti | 15 kontrol geçti |
| 8.4.4 | 261 dosya geçti | 45 kontrol geçti | 15 kontrol geçti |
| 8.5.9 | 261 dosya geçti | 45 kontrol geçti | 15 kontrol geçti |

261 dosya sayısı `vendor/` ve yeni testi içerir; `node_modules/` içermez. Matris WordPress doğrudan yüklenerek çalıştırıldı; eski WP-CLI'nin yeni PHP sürümlerindeki kendi çıktı yardımcıları kullanılmadı.

PDF kontrolleri: gerçek runtime sürümü 3.1.6, hatalı sipariş kimliği, örnek ürün/görsel varlığı, iki gerçek PDF'nin kaydı/başlığı/veri boyutu, tekrar üretimde mevcut dosyanın korunması, uzun şablonun gerçek snapshot'a ulaşması ve tamamlanan siparişin iki PDF ekini alması. Harici e-posta teslimi test edilmedi.

Pypdf ile 12 PDF incelendi: blok ve klasik ödeme için dört belge, dört PHP sürümünün her birinden iki belge. Üretici bilgisi `dompdf 3.1.6 + CPDF`, Türkçe karakterler/müşteri adı ve sözleşme sonu doğrulandı. Her PHP sürümündeki uzun tablo 90 satır ve dört sayfa içerdi; kısa test belgesinde ürün görselinin gerçekten gömüldüğü doğrulandı.

Poppler ile blok/klasik belgelerin dört sayfası, görselli kısa test belgesi ve uzun sözleşmenin dört sayfası olmak üzere dokuz sayfa PNG'ye dönüştürüldü ve görsel olarak incelendi. Metinlerde bozuk Türkçe karakter, taşan tablo, kesilen satır veya boş görsel görülmedi. Örnek belgeler ve ekran görüntüleri yerel kurulumun `setup/` dizinindedir.

Ek olarak `npm test` ile 6 JavaScript/React testi, WordPress 7.1.3 parser/çeviri koduyla 42 izole PHP regresyon kontrolü başarılı. İkinci grupta veritabanı ve sipariş nesneleri dublördür.

## Tekrar çalıştırma ve sınırlar

`KC_CONTRACT_TEST_ALLOW=1 setup/wp eval-file /absolute/plugin/path/tests/wp-integration.php` ve aynı biçimde `tests/pdf-integration.php` kullanılabilir. JSON PDF çıktısı için `KC_PDF_TEST_RESULTS_DIR=/absolute/existing/directory` verilebilir. Test kurulumu içindeki `setup/matrix.py`, `browser.cjs`, `classic.cjs`, `verify-pdfs.py` ve `render-pdfs.py` kayıtlıdır.

Safari, gerçek kredi kartı sağlayıcısı, harici e-posta teslimi, tüm tema/eklenti kombinasyonları ve PHP 7.4/8.0 denenmedi. Chrome mobil görünümü gerçek iOS/Safari testi sayılmaz. Bu kurulum yerel test ortamıdır ve internet yayını yapılmamıştır.

## 2.4.13 sürüm hazırlığı doğrulaması

Yayın hazırlığında sürüm numarası 2.4.13 yapıldıktan sonra derleme, 6 JavaScript testi ve Composer doğrulama/güvenlik denetimi tekrar geçti. Güncellenen stil kaydı kontrolleri dahil gerçek WP/WC entegrasyon sayısı 49 oldu. PHP 8.1.29, 8.2.30, 8.4.4 ve 8.5.9 üzerinde her biri 49 WP/WC ve 15 PDF kontrolü, ayrıca 261 PHP dosyası syntax kontrolü yeniden başarılı oldu. Tema boşluğu testleri ayrı raporda kayıtlıdır.
