Kapsam ve Sınırlar
Scoreba, sitenizi otomatik araçlarla (axe-core tabanlı tarama + kendi Playwright kontrollerimiz) ve bazı kriterlerde yapay zeka destekli analizle tarar. Ama dürüst olalım: hiçbir otomatik araç, bizimki dahil, WCAG'a "tam uyum" garantisi VEREMEZ. Bilinen çalışmalara göre otomatik araçlar WCAG başarı kriterlerinin ancak bir kısmını güvenilir şekilde tespit edebilir; geri kalanı (klavye kullanılabilirliğinin bağlamsal değerlendirmesi, ekran okuyucu deneyiminin anlamlılığı, bilişsel erişilebilirlik, form/işlem akışlarının anlamsal doğruluğu gibi) yalnızca UZMAN, İNSAN TARAFINDAN yapılan bir denetimle değerlendirilebilir.
Bu sayfa, hangi kriterin bizim tarafımızdan tam otomatik, hangisinin kısmi (bir sinyal veriyor ama bağlamı tam doğrulayamıyor) ve hangisinin tamamen manuel (bu depoda hiç otomatik kontrolü yok) olarak değerlendirildiğini satır satır gösterir. Bu tablolar elle yazılmadı — kod tabanımızdaki gerçek kontrol referanslarından otomatik üretilir ve her yayından önce ayrı bir testle doğrulanır (iddia ettiğimiz her referansın kod tabanında GERÇEKTEN var olduğu ve bulgu üretebildiği kontrol edilir).
WCAG 2.2 Seviye A ve AA — 55 Başarı Kriteri
Aşağıdaki tablo, WCAG 2.2'nin A ve AA seviyesindeki tüm başarı kriterlerini kapsam durumuna göre listeler. 'Kısmi' olan kriterlerde, otomatik kontrolün TAM OLARAK neyi tespit ettiğini açıklayan bir not bulunur.
55 kriterden 9 tam otomatik, 44 kısmi, 2 manuel olarak değerlendirilir.
"Kısmen ölçüldü" ne kadar kısmi?
Otomatik kontrolümüz olan ama kriterin tamamını kapsamayan kriterleri üç bantta gösteriyoruz. Bu bantlar bir puan değil, satırdaki açıklamanın özetidir.
- Büyük ölçüde ölçüldü
Bu kriterin başarısızlık biçimlerinin çoğunu otomatik olarak tespit ediyoruz. Geriye kalan kısım genellikle bir anlam yargısıdır — örneğin alt metnin varlığını kesin ölçeriz, doğru olup olmadığı yargı gerektirir. Ne yapmalısınız: bulguları düzeltin; bu kriter için genellikle ayrıca uzman denetimi gerekmez.
- Kısmen ölçüldü
Kriterin önemli bir kısmını ölçüyoruz, ancak gözden kaçabilecek yaygın desenler var — örneğin iframe içine gömülü medya ya da degrade arka plan üzerindeki metin. Ne yapmalısınız: bulguları düzeltin, ayrıca kapsam dışı kalan alanları elle gözden geçirin; hangi alanların dışarıda kaldığı satırdaki açıklamada yazılıdır.
- Sınırlı sinyal
Bu kriter için yalnızca dar bir sinyal ölçebiliyoruz; kriterin çoğu otomatik araçlarla (bizimki dahil) güvenilir şekilde değerlendirilemez — örneğin bir dokunma hareketinin tek parmakla da yapılabildiğini anlamak, kodun çalışma anındaki davranışını görmeyi gerektirir. Bu kriter insan incelemesi gerektirir: temiz bir sonuç, kriterin karşılandığı anlamına gelmez. Ne yapmalısınız: bu kriteri erişilebilirlik uzmanına elle inceletin.
| Kriter | Ad | Kapsam Durumu | Açıklama |
|---|---|---|---|
| 1.3.1 | Bilgi ve İlişkiler / Info and Relationships | Tam Otomatik | list, listitem, definition-list, td-headers-attr, th-has-data-cells + runContentStructureCheck (başlık hiyerarşisi, tablo başlığı, fieldset/legend, pseudoNavRegions, nonSemanticTextBlocks, cssOnlyEmphasis) |
| 1.3.4 | Yönlendirme / Orientation | Tam Otomatik | css-orientation-lock (axe-core'da 'experimental' etiketli, axeRunner.ts'te elle etkinleştirildi — bkz. proje geçmişi) |
| 1.3.5 | Girdi Amacının Belirlenmesi / Identify Input Purpose | Tam Otomatik | autocomplete-valid |
| 1.4.3 | Kontrast (Minimum) / Contrast (Minimum) | Tam Otomatik | color-contrast (degrade/görsel arka planda karar verilemeyen öğeler skorlanmaz — raporun 'İncelenmesi Gerekenler' bölümünde listelenir) + displayModeCheck (karanlık mod destekleniyorsa kontrast yeniden kontrolü) |
| 1.4.12 | Metin Aralığı / Text Spacing | Tam Otomatik | avoid-inline-spacing |
| 2.4.2 | Sayfa Başlığı / Page Titled | Tam Otomatik | document-title |
| 2.5.3 | İsimlerin Kullanılan Etiketi İçermesi / Label in Name | Tam Otomatik | label-content-name-mismatch (axe-core'da 'experimental' etiketli, axeRunner.ts'te elle etkinleştirildi — bkz. proje geçmişi) |
| 3.1.1 | Varsayılan İçerik Dili / Language of Page | Tam Otomatik | html-has-lang, html-lang-valid |
| 3.1.2 | Parçaların Dili / Language of Parts | Tam Otomatik | valid-lang |
| 1.1.1 | Metinsel Olmayan İçerik (Non-text Content) | Büyük ölçüde ölçüldü | image-alt + checkAltText |
| 1.2.1 | Sadece Ses ve Sadece Video / Audio-only and Video-only (Prerecorded) | Kısmen ölçüldü | runMediaPresenceCheck (native <audio> için transkript bağlantısı; iframe embed medya içeriği değerlendirilemez ama varlığı artık raporlanır) |
| 1.2.2 | Altyazılar / Captions (Prerecorded) | Büyük ölçüde ölçüldü | video-caption + runMediaPresenceCheck (iframe embed medyanın varlığı kapsam sınırı olarak bildirilir) |
| 1.2.3 | Sesli Betimleme veya Medya Alternatifi / Audio Description or Media Alternative (Prerecorded) | Kısmen ölçüldü | runMediaPresenceCheck |
| 1.2.5 | Sesli Betimleme (Önceden Kaydedilmiş) / Audio Description (Prerecorded) | Kısmen ölçüldü | runMediaPresenceCheck (bulgu 1.2.3 altında raporlanır — sesli betimleme yokluğu iki kriterin ortak sinyalidir) |
| 1.3.2 | Anlamlı Sıralama / Meaningful Sequence | Kısmen ölçüldü | readingOrderCheck + checkMeaningfulSequence |
| 1.3.3 | Duyusal Özellikler / Sensory Characteristics | Kısmen ölçüldü | checkSensoryLanguage |
| 1.4.1 | Renk Kullanımı / Use of Color | Kısmen ölçüldü | link-in-text-block + runColorOnlyStatusCheck (aktif sekme deseni) + runFormInteractionCheck (form hatası sadece renkle mi gösteriliyor — gönderim öncesi/sonrası renk ile metin/simge/aria-invalid karşılaştırması; grafik/lejant renk kodlaması kapsam dışı) |
| 1.4.2 | Ses Kontrolü / Audio Control | Büyük ölçüde ölçüldü | runAudioAutoplayCheck (3sn + sesli otomatik çalma ölçümü + durdurma mekanizmasının tıklanarak doğrulanması; iframe embed medyası kapsam dışı) |
| 1.4.4 | Metni Yeniden Boyutlandırma / Resize Text | Büyük ölçüde ölçüldü | meta-viewport + displayModeCheck (%200 yakınlaştırmada yatay taşma/kesilen metin) |
| 1.4.5 | Metin Görselleri / Images of Text | Kısmen ölçüldü | checkTextInImage |
| 1.4.10 | Yeniden Akış / Reflow | Büyük ölçüde ölçüldü | reflowCheck (320px yatay taşma — sayfa geneli, örneklemsiz) + displayModeCheck (%200'de üst üste binme — İçerik kaybı boyutu, ilk 60 mutlak-konumlu öğe örneklemi) |
| 1.4.11 | Metin Olmayan Kontrast / Non-text Contrast | Kısmen ölçüldü | nonTextContrastCheck + displayModeCheck (yüksek kontrast modda görünürlük kaybı) |
| 1.4.13 | Üzerine Gelme veya Odaklanma ile Ortaya Çıkan İçerik / Content on Hover or Focus | Kısmen ölçüldü | hoverContentCheck (aria-describedby tetikleyicileri + stylesheet'ten çıkarılan CSS :hover menüleri, en fazla 6 aday; hoverable/persistent alt koşulları kapsam dışı) |
| 2.1.1 | Klavye Erişimi / Keyboard | Büyük ölçüde ölçüldü | frame-focusable-content, scrollable-region-focusable + keyboardCheck + accordionTabsStateCheck (etkileşimli durumda açılan içerik/sekme klavye erişimi) + keyboardTaskFlowCheck (birincil görevin uçtan uca sadece klavyeyle tamamlanabilirliği) + runAutoPopupCheck (otomatik açılan pop-up varlığı) |
| 2.1.2 | Klavye Kilitlenmesinin Olmaması / No Keyboard Trap | Büyük ölçüde ölçüldü | keyboardCheck (Tab gezinmesi 400 basımla sınırlı) + modalStateCheck (açık modalda Escape ile kaçış testi) |
| 2.1.4 | Klavye Kısayolları / Character Key Shortcuts | Sınırlı sinyal | runCharKeyShortcutProbe (davranışsal tuş sondajı — yalnız pozitif tespit bulgu üretir, negatif sonuç kanıt sayılmaz) |
| 2.2.1 | Zaman Kontrolü / Timing Adjustable | Sınırlı sinyal | meta-refresh + runTimeLimitCheck (20sn üstü setTimeout/setInterval kaydı ve ekranda gerçekten azalan geri sayım — Ölçülen: zaman sınırının varlığı; Ölçülmeyen: sınırın ayarlanabilir olması, yani kriterin asıl şartı — bunu ölçmek sınırın dolmasını beklemeyi gerektirir ve tarama bütçesinde yapılamaz) |
| 2.2.2 | Duraklatma, Durdurma, Gizleme / Pause, Stop, Hide | Kısmen ölçüldü | blink, marquee + displayModeCheck (prefers-reduced-motion altında sonsuz döngüler) + runLongMotionCheck (5sn + süren sonlu animasyon ve otomatik dönen carousel; duraklat kontrolü varsa bulgu üretilmez) |
| 2.3.1 | Üç Kere veya Aşağısı Yanıp Sönme Eşiği / Three Flashes or Below Threshold | Kısmen ölçüldü | runFlickerCheck (faz 9.1 — Tüm kademelerde varsayılan açık; ~6sn ekran görüntüsü örneklemesi, ağır katman sayfalarında) |
| 2.4.1 | Tekrarlanan Blokların Atlanabilmesi / Bypass Blocks | Büyük ölçüde ölçüldü | runBypassCheck (atlama bağlantısı Enter ile davranışsal sınanır; landmark + başlık yapısı alternatif mekanizma kabul edilir) |
| 2.4.3 | Odaklama Sırası / Focus Order | Büyük ölçüde ölçüldü | focusOrderCheck (60 Tab basımı örneklemi) + modalStateCheck (modal odak yönetimi/Tab-döngüsü) + accordionTabsStateCheck (roving tabindex) + spaRouteCheck (SPA rota değişiminde odak yönetimi) |
| 2.4.4 | Bağlantının Maksadı / Link Purpose (In Context) | Büyük ölçüde ölçüldü | link-name + checkLinkText |
| 2.4.5 | Birden Fazla Yol / Multiple Ways | Büyük ölçüde ölçüldü | multipleWaysCheck (arama kutusuna gerçek sorgu yazılıp sonuç ürettiği doğrulanır; gizli girdiler ve salt-dış-bağlantılı üstbilgiler sayılmaz) |
| 2.4.6 | Başlıklar ve Etiketler / Headings and Labels | Kısmen ölçüldü | checkHeadingLabelQuality |
| 2.4.7 | Odak Görünürlüğü / Focus Visible | Kısmen ölçüldü | focusIndicatorCheck (Tab ile ulaşılan öğelerden baş/orta/son katmanlarına dağıtılmış 39 öğe; Tab gezinmesi 400 basımla sınırlı) + displayModeCheck (yüksek kontrast modda odak göstergesi kaybı) |
| 2.4.11 | Odak Engellenmiyor (Minimum) / Focus Not Obscured (Minimum) (WCAG 2.2) | Büyük ölçüde ölçüldü | focusNotObscuredCheck (baş/orta/son katmanlı 12 öğe örneklemi; doğal odak kaydırması + üst-kenar okuması) |
| 2.5.2 | İşaretçi İptali / Pointer Cancellation | Sınırlı sinyal | pointerInteractionCheck |
| 2.5.4 | Hareket ile Çalıştırma / Motion Actuation | Sınırlı sinyal | motionActuationCheck |
| 2.5.7 | Sürükleme Hareketleri / Dragging Movements (WCAG 2.2) | Kısmen ölçüldü | pointerInteractionCheck |
| 2.5.8 | Hedef Boyutu (Minimum) / Target Size (Minimum) (WCAG 2.2) | Büyük ölçüde ölçüldü | target-size (axe-core'da varsayılan kapalı gelir, axeRunner.ts'te elle etkinleştirildi; 'eşdeğer hedef' istisnası değerlendirilemez) |
| 3.2.1 | Odaklanma Üzerine / On Focus | Büyük ölçüde ölçüldü | contextChangeCheck (şablon temsilcisi sayfalarda ilk 40, şablon kopyalarında ilk 8 odaklanabilir öğe) |
| 3.2.2 | Girdi Üzerine / On Input | Büyük ölçüde ölçüldü | contextChangeCheck (şablon temsilcisi sayfalarda ilk 50, şablon kopyalarında ilk 6 form alanı) |
| 3.2.3 | Tutarlı Gezinme / Consistent Navigation | Kısmen ölçüldü | crossPageConsistencyCheck |
| 3.2.4 | Tutarlı Tanımlama / Consistent Identification | Kısmen ölçüldü | crossPageConsistencyCheck (10 işlev türü karşılaştırılır: sepet, arama, dil, giriş, hesap, iletişim, favori, paylaş, indir, devamını oku) |
| 3.2.6 | Tutarlı Yardım / Consistent Help (WCAG 2.2) | Kısmen ölçüldü | crossPageConsistencyCheck |
| 3.3.1 | Hata Tanımlaması / Error Identification | Büyük ölçüde ölçüldü | formInteractionCheck (sayfa başına en fazla 1 'güvenli' formda gerçek gönderim denemesi) |
| 3.3.2 | Etiketler ve Talimatlar / Labels or Instructions | Kısmen ölçüldü | runContentStructureCheck (zorunlu alan işareti ve format talimatı varlığı) + runLabelInstructionCheck (yalnızca-placeholder etiket; biçim kısıtı olan alanda talimat yokluğu — etiketin/talimatın anlamlı olup olmadığı kapsam dışı) |
| 3.3.3 | Hata Önerisi / Error Suggestion | Kısmen ölçüldü | checkErrorMessageQuality |
| 3.3.4 | Hata Önleme (Yasal, Finansal, Veri) / Error Prevention (Legal, Financial, Data) | Kısmen ölçüldü | formInteractionCheck |
| 3.3.7 | Tekrarlanan Giriş / Redundant Entry (WCAG 2.2) | Kısmen ölçüldü | formInteractionCheck |
| 3.3.8 | Erişilebilir Kimlik Doğrulama (Minimum) / Accessible Authentication (Minimum) (WCAG 2.2) | Kısmen ölçüldü | authenticationCheck |
| 4.1.2 | İsim, Rol, Değer / Name, Role, Value | Büyük ölçüde ölçüldü | aria-*, button-name, label, select-name, summary-name + decorativeCharCheck + modalStateCheck (diyalog erişilebilir adı) + accordionTabsStateCheck (aria-expanded/aria-selected güncellemesi) + checkScreenReaderTranscriptQuality (seslendirme dökümünde adsız yığılma/tekrar/bağlam kaybı) |
| 4.1.3 | Durum Mesajları / Status Messages | Kısmen ölçüldü | contentInventoryCheck (aria-live/role=status/alert varlığı) + spaRouteCheck (SPA rota değişiminde canlı bölgenin gerçekten güncellenip güncellenmediği, sezgisel/zamanlama tabanlı) |
| 1.2.4 | Altyazılar (Canlı) / Captions (Live) | Manuel | — |
| 2.5.1 | İşaretçi Hareketleri / Pointer Gestures | Manuel | — |
Aylık İzleme'nin kapsam farkı
Aylık İzleme, sitenizdeki DEĞİŞİKLİKLERİ yakalamak için tasarlanmıştır: her turda sayfalarınız yeniden taranır ve önceki durumla karşılaştırılır. Ancak İzleme, Ana Denetim'in TAMAMINI her ay tekrarlamaz — aşağıdaki ağır kontroller Ana Denetim'de tam derinlikte çalışır, aylık turlarda ise atlanır (bu alanlardaki bir gerileme İzleme tarafından yakalanmaz):
- Görüntüleme modları (yüksek kontrast, hareket azaltma, %200 yakınlaştırma, karanlık mod)İlgili kriterler: 1.4.3, 1.4.4, 1.4.10, 1.4.11, 2.2.2, 2.4.7
- Klavye görev akışı (birincil görevin uçtan uca yalnız klavyeyle tamamlanması)İlgili kriterler: 2.1.1
- Ekran okuyucu dökümü ve kalite değerlendirmesiİlgili kriterler: 4.1.2
- Tek karakterli klavye kısayolu sondajıİlgili kriterler: 2.1.4
- Yanıp sönme örneklemesi (Ana Denetim'de de yalnız Kurumsal kademede çalışır)İlgili kriterler: 2.3.1
Bunların dışındaki her şey — axe taraması, klavye erişimi, odak kontrolleri, 320px yeniden akış, form etkileşimi, modal/sekme/akordiyon durum taraması, sayfalar arası tutarlılık ve yapay zeka destekli içerik kontrolleri — aylık turlarda da çalışmaya devam eder.
Türkiye Bakanlık Kontrol Listesi
T.C. Aile ve Sosyal Hizmetler Bakanlığı'nın A Seviyesi kontrol listesi iki farklı soru türünden oluşur: 'kapsam tespiti' sorular sitenizde HANGİ içerik türlerinin bulunduğunu belirler (ör. "video içeriği var mı?"); 'uygunluk denetimi' soruları ise bu içeriğin GEREKLİLİKLERİ karşılayıp karşılamadığını sorar (ör. "o video için sesli betimleme var mı?"). Aşağıda ikisi ayrı tablolarda gösterilir.
Kapsam Tespiti Soruları
59 kriterden 28 tam otomatik, 26 kısmi, 5 manuel olarak değerlendirilir.
| # | Soru | Kriter | Kapsam Durumu | Açıklama |
|---|---|---|---|---|
| 1 | Web sayfasında / Mobil uygulamada metinsel olmayan içerikler (görsel, grafik, ikon, video, ses, animasyon, CAPTCHA vb.) bulunuyor mu? | 1.1.1 | Tam Otomatik | contentInventoryCheck |
| 2 | Bilgi sunan metinsel olmayan içerikler (görsel, grafik, infografik, harita, diyagram, veri görselleştirmesi vb.) bulunuyor mu? | 1.1.1 | Kısmi | contentInventoryCheck (boyut + alt-metin sezgisi — sınıflandırma değil, aday tespiti) |
| 4 | Dekoratif amaçlı metinsel olmayan içerikler bulunuyor mu? | 1.1.1 | Tam Otomatik | contentInventoryCheck |
| 6 | Test veya alıştırma amacıyla kullanılan metinsel olmayan içerikler bulunuyor mu? | 1.1.1 | Manuel | — |
| 8 | Belirli bir duyusal deneyim sunmak amacıyla kullanılan metinsel olmayan içerikler bulunuyor mu? | 1.1.1 | Manuel | — |
| 10 | CAPTCHA doğrulaması bulunuyor mu? | 1.1.1 | Tam Otomatik | contentInventoryCheck |
| 13 | Zamana dayalı medya içerikleri (video, film, slayt, ses kaydı gibi) bulunuyor mu? | 1.1.1 | Tam Otomatik | contentInventoryCheck |
| 15 | Metin içermeyen veya yalnızca simge ile sunulan arayüz bileşenleri bulunuyor mu? | 1.1.1 | Tam Otomatik | contentInventoryCheck |
| 17 | Yalnızca ses içeren zamana dayalı medya (podcast, ses kaydı, konuşma kaydı gibi) bulunuyor mu? | 1.2.1 | Tam Otomatik | contentInventoryCheck |
| 19 | Yalnızca görüntü içeren zamana dayalı medya (sessiz video, animasyon, ekran kaydı vb.) bulunuyor mu? | 1.2.1 | Kısmi | contentInventoryCheck (muted + autoplay video sezgisi — kesin değil) |
| 21 | Önceden kaydedilmiş, hem ses hem görüntü içeren zamana dayalı medya (multimedya) içerikleri bulunuyor mu? | 1.2.2 | Tam Otomatik | contentInventoryCheck |
| 24 | Önceden kaydedilmiş video içeriklerinde, sesle aktarılmayan ancak anlaşılması için gerekli görsel bilgiler bulunuyor mu? | 1.2.3 | Kısmi | runMediaPresenceCheck (track kind="descriptions" VARLIĞI — betimlemenin KALİTESİ/doğruluğu değil) |
| 26 | Bilgi/yapı/ilişkileri ifade eden arayüz bileşenleri, içerik yapıları veya metnin yapısal sunumuna ilişkin öğeler bulunuyor mu? | 1.3.1 | Kısmi | contentInventoryCheck (başlık/liste/tablo/nav sayımı — yapısal öğe VARLIĞI, ilişkilerin DOĞRU kodlanıp kodlanmadığı değil) |
| 27 | İçerik yapısını tanımlayan başlıklar bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 29 | Liste yapısı (list) bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 31 | Tablolar (table) bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 32 | Tablolar, veri tablosu niteliğinde mi? | 1.3.1 | Kısmi | contentInventoryCheck (th/scope varlığı sezgisi) |
| 36 | Gezinti (navigasyon) bağlantılarının bulunduğu bir bölüm bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 38 | Form elemanları (metin alanı, onay kutusu, radyo düğmesi, seçim listesi vb.) bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 40 | Birbiriyle ilişkili form alan grupları (radyo/onay kutusu/seçenek grupları gibi) bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 42 | Paragraf yapısına sahip metin içerikleri bulunuyor mu? | 1.3.1 | Tam Otomatik | contentInventoryCheck |
| 44 | Bilgilerin yalnızca görsel biçimlendirme (renk, kalın veya italik) kullanılarak vurgulandığı içerikler bulunuyor mu? | 1.3.1 | Kısmi | runContentStructureCheck (cssOnlyEmphasis — semantik etiket OLMADAN CSS ile kalın/italik metin VARLIĞI) |
| 46 | İçeriğin anlamının doğru iletilebilmesi için belirli bir sırayla okunması gereken bir yapı bulunuyor mu? | 1.3.2 | Kısmi | readingOrderCheck + checkMeaningfulSequence |
| 49 | Kullanıcıya bir içeriği/arayüz öğesini bulması ya da kullanması için yönlendirme veya kullanım talimatı veriliyor mu? | 1.3.3 | Kısmi | checkSensoryLanguage |
| 51 | Bilgi, durum, kullanıcı yanıtı veya eylemin renk kullanılarak ifade edildiği içerikler bulunuyor mu? | 1.4.1 | Kısmi | runColorOnlyStatusCheck (SADECE aktif sekme deseni — form hatası/zorunluluk/stok durumu gibi diğer örnekler bu turda KAPSANMIYOR) |
| 54 | Kullanıcı tarafından başlatılmadan otomatik başlayan ve 3 saniyeden uzun süren ses içeriği bulunuyor mu? | 1.4.2 | Tam Otomatik | contentInventoryCheck |
| 56 | Klavye veya platforma uygun eşdeğer giriş yöntemleriyle kullanılabilmesi gereken etkileşimli bileşenler bulunuyor mu? | 2.1.1 | Tam Otomatik | contentInventoryCheck |
| 57 | Medya oynatıcı bileşenleri bulunuyor mu? | 2.1.1 | Tam Otomatik | contentInventoryCheck |
| 59 | Açılır menüler (dropdown menu) bulunuyor mu? | 2.1.1 | Kısmi | contentInventoryCheck (aria-haspopup varlığı) |
| 61 | Diyalog kutuları (dialog box) bulunuyor mu? | 2.1.1 | Tam Otomatik | contentInventoryCheck |
| 63 | Otomatik açılır pencereler (pop-up) bulunuyor mu? | 2.1.1 | Kısmi | runAutoPopupCheck (yüklemeden sonraki pasif bekleme sırasında hidden→visible geçişi — sayfa yüklenirken ZATEN açık olan pop-up'lar kapsam DIŞI) |
| 65 | Fare/dokunma etkileşimiyle (hover, focus, tıklama) durumu değişen veya ek içerik ortaya çıkan bağlantı/bileşenler bulunuyor mu? | 2.1.1 | Kısmi | contentInventoryCheck (hoverFocusRevealCount — hover/focus olay dinleyicisi/aria-describedby VARLIĞI) + runHoverContentCheck (Esc ile kapanma alt koşulu, sadece aria-describedby deseni) |
| 67 | Sürükle-bırak (drag-and-drop) işlevleri bulunuyor mu? | 2.1.1 | Tam Otomatik | contentInventoryCheck |
| 69 | Kullanıcı etkileşimi veya sistem tarafından tetiklenen, kullanıcının kontrol etmesi gereken içerik/işlemler bulunuyor mu? | 2.1.2 | Kısmi | contentInventoryCheck (ariaLiveRegionCount — aria-live/role=status/alert bölgelerinin VARLIĞI, kullanıcı KONTROLÜ sağlanıp sağlanmadığı DEĞİL) |
| 71 | Tek bir karakterle (harf, sayı, noktalama, sembol) tetiklenen klavye kısayolları bulunuyor mu? | 2.1.4 | Kısmi | runCharKeyShortcutProbe (davranışsal tuş sondajı — POZİTİF tespit kesin cevaptır, negatif sonuç kanıt değildir) |
| 73 | Kullanıcı arayüzünde gerçekleştirilen işlemler için zaman sınırlaması bulunuyor mu (istisnalar hariç)? | 2.2.1 | Kısmi | meta-refresh (yalnız meta-refresh ile otomatik yenilenme tespit edilir; JS oturum zaman aşımı ve geri sayımlar kapsam dışı) |
| 75 | Otomatik başlayan, hareket eden/kayan/yanıp sönen veya otomatik güncellenen bir bilgi/bileşen bulunuyor mu? | 2.2.2 | Kısmi | contentInventoryCheck (sadece blink/marquee etiketi, CSS animasyonlarını YAKALAMAZ) |
| 76 | Bu içerik 5 saniyeden uzun süre kesintisiz devam ediyor mu? | 2.2.2 | Manuel | — |
| 77 | Bu içerik, durdurulması sayfanın temel işlevini engelleyecek zorunlu bir işlevin parçası mı? | 2.2.2 | Manuel | — |
| 79 | Yanıp sönme (flashing) etkisi içeren bilgi veya arayüz bileşenleri bulunuyor mu? | 2.3.1 | Kısmi | runFlickerCheck (opt-in — SADECE Kurumsal kademede varsayılan açık; ekran görüntüsü örneklemesine dayanır, DAİMA manuel doğrulama gerektirir) |
| 80 | Bu içerik, 1 saniyelik aralıkta saniyede 3 kereden fazla ışık çakması içeriyor mu? | 2.3.1 | Kısmi | runFlickerCheck (aynı sinyal — saniyede 3 + geçiş eşiği) |
| 82 | Farklı sayfalarda/ekranlarda tekrar eden içerik blokları (menü, üst gezinme çubuğu vb.) bulunuyor mu? | 2.4.1 | Kısmi | contentInventoryCheck (tek sayfada nav/header varlığı — GERÇEK tekrar sayfalar arası doğrulanmaz) |
| 86 | Klavye veya platforma uygun odaklama yöntemiyle erişilebilen etkileşimli öğeler bulunuyor mu? | 2.4.3 | Kısmi | focusOrderCheck |
| 88 | İç sayfalara, uygulama içi ekranlara veya farklı kaynaklara yönlendiren bağlantılar bulunuyor mu? | 2.4.4 | Tam Otomatik | contentInventoryCheck |
| 91 | Yalnızca simge ile sunulan veya görsel olarak kısa tutulan bağlantılar bulunuyor mu? | 2.4.4 | Kısmi | contentInventoryCheck |
| 93 | Aynı bağlantı metnine/erişilebilir ada sahip birden fazla bağlantı bulunuyor mu? | 2.4.4 | Tam Otomatik | contentInventoryCheck |
| 95 | Birden fazla işaretçi hareketi veya belirli bir hareket (gesture) gerektiren işaretçi etkileşimleri bulunuyor mu? | 2.5.1 | Manuel | — |
| 97 | İşaretçi (pointer) ile tetiklenen işlemler bulunuyor mu (istisnalar hariç)? | 2.5.2 | Kısmi | pointerInteractionCheck |
| 99 | Kullanıcıya görünür metin etiketleri (label) ile sunulan arayüz bileşenleri bulunuyor mu? | 2.5.3 | Tam Otomatik | contentInventoryCheck |
| 101 | Cihazın hareket ettirilmesine (sallama, döndürme, eğme) bağlı gerçekleştirilen bir işlem bulunuyor mu (istisnalar hariç)? | 2.5.4 | Kısmi | motionActuationCheck |
| 105 | Odaklanılabilen (klavye/platforma uygun yöntemlerle erişilebilen) arayüz bileşenleri bulunuyor mu? | 3.2.1 | Tam Otomatik | contextChangeCheck |
| 107 | Kullanıcı bir arayüz bileşenine girdi verdiğinde bağlam değişikliği gerçekleşiyor mu? | 3.2.2 | Tam Otomatik | contextChangeCheck |
| 109 | İletişim sayfaları, insan etkileşimli yardım kanalları, SSS/destek içerikleri veya chatbot gibi yardım mekanizmaları bulunuyor mu? | 3.2.6 | Kısmi | crossPageConsistencyCheck |
| 111 | Kullanıcının veri girişi yapmasını gerektiren ve hata yapma olasılığı bulunan bir işlem bulunuyor mu? | 3.3.1 | Kısmi | formInteractionCheck |
| 115 | Kullanıcıdan veri girişi veya seçim yapılması istenen alanlar/bileşenler bulunuyor mu? | 3.3.2 | Tam Otomatik | contentInventoryCheck |
| 117 | Belirli bir formatta veya kurala bağlı veri girişi gerektiren alanlar bulunuyor mu? | 3.3.2 | Tam Otomatik | contentInventoryCheck |
| 119 | Zorunlu doldurulması gereken alanlar bulunuyor mu? | 3.3.2 | Tam Otomatik | contentInventoryCheck |
| 121 | Aynı adımlar dizisi içinde, kullanıcıdan daha önce girdiği bir bilginin tekrar girilmesi isteniyor mu (istisnalar hariç)? | 3.3.7 | Kısmi | formInteractionCheck |
| 123 | Kullanıcı arayüzü bileşenleri (form alanları, bağlantılar, butonlar, sekmeler, menüler vb.) bulunuyor mu? | 4.1.2 | Tam Otomatik | contentInventoryCheck |
Uygunluk Denetimi Soruları
67 kriterden 15 tam otomatik, 43 kısmi, 9 manuel olarak değerlendirilir.
| # | Soru | Kriter | Kapsam Durumu | Açıklama |
|---|---|---|---|---|
| 3 | Bilgi sunan metinsel olmayan içerikler için yardımcı teknolojiler tarafından algılanabilir metin alternatifleri sağlandı mı? | 1.1.1 | Tam Otomatik | image-alt |
| 5 | Dekoratif amaçlı metinsel olmayan içerikler, yardımcı teknolojiler tarafından göz ardı edilecek şekilde işaretlendi mi? | 1.1.1 | Kısmi | image-alt |
| 7 | Test/alıştırma içerikleri için, sonucu ifşa etmeyen açıklayıcı bir metin alternatifi sunuldu mu? | 1.1.1 | Manuel | — |
| 9 | Belirli bir duyusal deneyim sunan içerikler için algılanabilir tanımlayıcı metin alternatifleri sağlandı mı? | 1.1.1 | Manuel | — |
| 11 | CAPTCHA için içeriğin amacını açıklayan bir metin alternatifi sağlandı mı? | 1.1.1 | Manuel | — |
| 12 | CAPTCHA için farklı duyusal algı türlerine dayalı alternatif veya CAPTCHA dışı erişilebilir doğrulama yöntemleri sağlandı mı? | 1.1.1 | Manuel | — |
| 14 | Zamana dayalı medya içerikleri için algılanabilir bir metin alternatifi (erişilebilir ad) sağlandı mı? | 1.1.1 | Kısmi | video-caption |
| 16 | Bu bileşenler için, amacını ifade eden ve yardımcı teknolojiler tarafından algılanabilir bir erişilebilir ad sağlandı mı? | 1.1.1 | Tam Otomatik | button-name / input-button-name / aria-command-name |
| 18 | Yalnızca ses içeren medya için içeriğin tamamını sunan bir transkript sağlandı mı? | 1.2.1 | Kısmi | mediaPresenceCheck |
| 20 | Yalnızca görüntü içeren medya için eşdeğer bir metin alternatifi veya sesli açıklama sağlandı mı? | 1.2.1 | Manuel | — |
| 22 | Multimedya içerikleri için konuşmaları ve önemli ses bilgilerini içeren senkronize altyazılar sağlandı mı? | 1.2.2 | Kısmi | video-caption |
| 23 | Sağlanan altyazılar konuşmaları, konuşmacı değişimlerini ve önemli ses bilgilerini eksiksiz ve doğru içeriyor mu? | 1.2.2 | Manuel | — |
| 25 | Bu görsel bilgiler için sesli betimleme veya metin temelli medya alternatifi sağlanıyor mu? | 1.2.3 | Kısmi | mediaPresenceCheck |
| 28 | Başlıklar, mantıksal bir hiyerarşi içinde ve programatik olarak tanımlanmış uygun başlık yapıları kullanılarak oluşturuldu mu? | 1.3.1 | Kısmi | contentInventoryCheck |
| 30 | Listeler, platforma uygun semantik yapılar kullanılarak programatik olarak tanımlandı mı? | 1.3.1 | Tam Otomatik | list / listitem / definition-list / dlitem |
| 33 | Veri tabloları, doğru semantik yapılar kullanılarak programatik olarak tanımlandı mı? | 1.3.1 | Tam Otomatik | td-headers-attr / th-has-data-cells |
| 34 | Veri tablolarında, tablonun amacını tanımlayan erişilebilir bir başlık sağlandı mı? | 1.3.1 | Kısmi | contentInventoryCheck |
| 35 | Veri tablolarında satır/sütun başlıkları, bilgi ve ilişkileri gösterecek şekilde programatik olarak tanımlandı mı? | 1.3.1 | Tam Otomatik | td-headers-attr / th-has-data-cells |
| 37 | Gezinti bölümleri, platforma uygun semantik yapı veya rol kullanılarak tanımlandı mı? | 1.3.1 | Kısmi | runContentStructureCheck (pseudoNavRegions — header/footer/aside içinde nav/[role=navigation] SARMALAMAYAN 3 + bağlantılık küme) |
| 39 | Form elemanlarının etiketleri, ilgili alanlarla programatik olarak algılanabilir şekilde ilişkilendirildi mi? | 1.3.1 | Tam Otomatik | label / aria-input-field-name |
| 41 | İlişkili form alanları anlamlı şekilde gruplandırılmış ve grup başlığı programatik olarak tanımlandı mı? | 1.3.1 | Kısmi | contentInventoryCheck |
| 43 | Metin içerikleri, platforma uygun semantik yapılar kullanılarak paragraf hâlinde programatik olarak tanımlandı mı? | 1.3.1 | Kısmi | runContentStructureCheck (nonSemanticTextBlocks — <p> içinde OLMAYAN uzun düz yazı metni) |
| 45 | Metin vurguları, bilgi ve ilişkilerin programatik olarak belirlenebilir olmasını sağlayacak semantik yapılar kullanılarak sunuldu mu? | 1.3.1 | Kısmi | runContentStructureCheck (cssOnlyEmphasis — aynı sinyal, uygunluk yargısı) |
| 47 | İçeriğin programatik okuma sırası, görsel sunumdan bağımsız olarak anlamı koruyacak şekilde mantıklı ve doğru bir sırayla sağlandı mı? | 1.3.2 | Kısmi | readingOrderCheck + checkMeaningfulSequence |
| 48 | Görsel düzen dikkate alınmadığında (CSS devre dışıyken vb.) içerik mantıksal ve anlaşılabilir bir okuma sırasını koruyor mu? | 1.3.2 | Kısmi | readingOrderCheck + checkMeaningfulSequence |
| 50 | Yönlendirme/talimatlar, yalnızca duyusal özelliklere (renk, şekil, boyut, konum, yön veya ses) dayalı olmayacak şekilde sunuluyor mu? | 1.3.3 | Kısmi | checkSensoryLanguage |
| 52 | İçerikte bilgi, durum, yanıt veya eylem YALNIZCA renk kullanılarak mı ifade edildi? | 1.4.1 | Kısmi | runColorOnlyStatusCheck (aynı sinyal, uygunluk yargısı — SADECE aktif sekme deseni) |
| 53 | Yalnızca renkle ifade edilen bilgi için renge ek olarak metin/ikon/şekil/desen gibi alternatif ipuçları sağlandı mı? | 1.4.1 | Kısmi | formInteractionCheck (3.3.1 sinyalinin yeniden kullanımı) |
| 55 | Otomatik başlayan ses için kullanıcıya durdurma/kapatma veya ses düzeyini ayarlama imkânı sağlandı mı? | 1.4.2 | Kısmi | runAudioAutoplayCheck (3sn + sesli otomatik çalma ölçülür, durdurma mekanizması TIKLANARAK doğrulanır; iframe embed medyası ve ses düzeyi ayarı kapsam dışı) |
| 58 | Medya oynatıcıdaki işlemler klavye veya eşdeğer giriş yöntemleriyle kontrol edilip kapatılabiliyor mu? | 2.1.1 | Kısmi | keyboardCheck |
| 60 | Açılır menüler klavye veya eşdeğer giriş yöntemleriyle açılıp menü seçenekleri arasında gezinilebiliyor mu? | 2.1.1 | Kısmi | accordionTabsStateCheck (etkileşimli durumda tetikleyici etkinleştirilip aria-expanded güncellemesi + ok tuşu gezinmesi test edilir — statik VARLIK değil GERÇEK etkileşim) |
| 62 | Diyalog kutuları klavye veya eşdeğer giriş yöntemleriyle kontrol edilip kapatılabiliyor mu? | 2.1.1 | Kısmi | modalStateCheck (etkileşimli durumda modal AÇILIP Escape ile kapanması, odak yönetimi ve Tab-döngüsü GERÇEKTEN test edilir — statik VARLIK değil GERÇEK etkileşim) |
| 64 | Otomatik açılan pencereler klavye veya eşdeğer giriş yöntemleriyle kontrol edilip kapatılabiliyor mu? | 2.1.1 | Kısmi | keyboardCheck |
| 66 | Bu bağlantı/bileşenler klavye veya eşdeğer giriş yöntemleriyle de odaklanılıp kontrol edilebiliyor mu? | 2.1.1 | Kısmi | keyboardCheck |
| 68 | Sürükle-bırak işlevleri klavye veya eşdeğer giriş yöntemleriyle de gerçekleştirilebiliyor mu? | 2.1.1 | Kısmi | contentInventoryCheck |
| 70 | Bu bileşenlere klavye ile erişildikten sonra, klavye kilitlenmesi oluşmadan aynı yöntemlerle çıkılabiliyor mu? | 2.1.2 | Tam Otomatik | keyboardCheck |
| 72 | Tek karakterli kısayollar devre dışı bırakılabiliyor, değiştirilebiliyor veya yalnızca ilgili bileşen odaklandığında etkin mi? | 2.1.4 | Manuel | — |
| 74 | Zaman sınırlaması için kullanıcı durdurabiliyor, uzatabiliyor veya süre dolmadan uyarılıp uzatabiliyor mu? | 2.2.1 | Manuel | — |
| 78 | Zorunlu olmayan otomatik içerik için duraklatma/durdurma/gizleme veya güncelleme sıklığı kontrolü seçeneklerinden en az biri sağlanıyor mu? | 2.2.2 | Kısmi | blink / marquee |
| 81 | Bu yanıp sönme, genel veya kırmızı yanıp sönme eşiğini aşan sağlık riski taşıyan ışık çakmaları barındırıyor mu? | 2.3.1 | Kısmi | runFlickerCheck (YAKLAŞIK bir sinyal — genel/kırmızı yanıp sönme SAĞLIK RİSKİ eşiği AYRI test EDİLMEZ, sadece genel parlaklık geçiş sıklığı ölçülür; bu yüzden UNDESIRABLE yargısı için MANUEL doğrulama ZORUNLUDUR) |
| 83 | Kullanıcıların tekrar eden blokları atlayıp ana içeriğe doğrudan erişmesini sağlayan bir mekanizma sunuluyor mu? | 2.4.1 | Kısmi | runBypassCheck (atlama bağlantısı Enter ile davranışsal sınanır, landmark + başlık alternatifi değerlendirilir; egzotik atlama mekanizmaları kapsam dışı) |
| 84 | Her bir sayfa veya ekran için bir başlık bulunuyor mu? | 2.4.2 | Tam Otomatik | document-title |
| 85 | Sayfa/ekran başlıkları, içeriğin konusunu açık, doğru ve ayırt edici biçimde tanımlıyor mu? | 2.4.2 | Kısmi | crossPageConsistencyCheck |
| 87 | Etkileşimli öğeler arasında gezinildiğinde odak sırası mantıklı, tutarlı ve anlamlı bir sırayı takip ediyor mu? | 2.4.3 | Kısmi | focusOrderCheck |
| 89 | Bağlantı metni/erişilebilir ad, tek başına değerlendirildiğinde bağlantının amacını açık ve anlaşılır ifade ediyor mu? | 2.4.4 | Kısmi | link-name + checkLinkText |
| 90 | Bağlantının amacı, bulunduğu bağlamla (başlık, paragraf, liste öğesi vb.) birlikte programatik olarak belirlenebilir mi? | 2.4.4 | Kısmi | link-name + checkLinkText |
| 92 | Bu bağlantılar için amacını açıklayan erişilebilir bir ad sağlandı mı? | 2.4.4 | Tam Otomatik | link-name / area-alt |
| 94 | Aynı metne sahip bağlantıların her birinin amacı, bağlamıyla birlikte kullanıcı tarafından ayırt edilebilir mi? | 2.4.4 | Kısmi | contentInventoryCheck |
| 96 | Bu işlevler için karmaşık işaretçi hareketi gerektirmeyen alternatif bir etkileşim yöntemi sunuluyor mu? | 2.5.1 | Manuel | — |
| 98 | İşaretçiyle tetiklenen işlemler; yalnızca bırakma anında tetiklenme, iptal edilebilme veya geri alınabilme koşullarından birini sağlıyor mu? | 2.5.2 | Kısmi | pointerInteractionCheck |
| 100 | Erişilebilir ad, görünür etiket metniyle aynı mı veya onunla başlıyor mu? | 2.5.3 | Tam Otomatik | label-content-name-mismatch |
| 102 | Cihaz hareketiyle gerçekleştirilen işlemler için hareket kullanılmadan aynı sonucu sağlayan bir alternatif sunuluyor mu? | 2.5.4 | Kısmi | motionActuationCheck |
| 103 | Cihaz hareketiyle tetiklenen işlevler kullanıcı tarafından devre dışı bırakılabiliyor mu? | 2.5.4 | Kısmi | motionActuationCheck |
| 104 | Sunulan içeriğin varsayılan dili programatik olarak tanımlandı mı? | 3.1.1 | Tam Otomatik | html-has-lang / html-lang-valid |
| 106 | Bir bileşene YALNIZCA odaklanılması sonucu, ek bir işlem yapılmadan bağlam değişikliği gerçekleşiyor mu? | 3.2.1 | Tam Otomatik | contextChangeCheck |
| 108 | Bu bağlam değişikliği, kullanıcının başlattığı açık bir işlemle mi gerçekleşiyor veya önceden bildiriliyor mu? | 3.2.2 | Tam Otomatik | contextChangeCheck |
| 110 | Bu yardım mekanizmaları, farklı sayfalar/ekranlar arasında tutarlı ve öngörülebilir bir konumda sunuluyor mu? | 3.2.6 | Kısmi | crossPageConsistencyCheck |
| 112 | Kullanıcı veri girişinde hata yaptığında, hata durumu metinsel bir mesajla bildiriliyor mu? | 3.3.1 | Kısmi | formInteractionCheck |
| 113 | Hata mesajı, hatanın nedenini kullanıcı tarafından anlaşılabilir şekilde açık ve net ifade ediyor mu? | 3.3.1 | Kısmi | formInteractionCheck |
| 114 | Hata mesajı, hangi giriş alanıyla ilgili olduğunu kullanıcıya açıkça bildiriyor mu? | 3.3.1 | Kısmi | formInteractionCheck |
| 116 | Bu alanlar için anlamlı ve açıklayıcı etiketler veya gereken talimatlar sağlanıyor mu? | 3.3.2 | Kısmi | runContentStructureCheck + label (zorunlu alan işareti ve format talimatı VARLIĞI ölçülür; etiketin ANLAMLILIĞI kapsam dışı) |
| 118 | Bu alanlar için veri girişinden önce açık ve erişilebilir talimatlar sunuluyor mu? | 3.3.2 | Kısmi | contentInventoryCheck |
| 120 | Zorunlu alanlar kullanıcıya açık ve anlaşılır şekilde belirtildi mi? | 3.3.2 | Kısmi | contentInventoryCheck |
| 122 | Daha önce alınmış bilgiler otomatik dolduruluyor veya yeniden kullanılmasına imkân tanınıyor mu? | 3.3.7 | Kısmi | formInteractionCheck |
| 124 | Kullanıcı arayüzü bileşenlerinin ad (name) ve rol (role) bilgileri programatik olarak belirlenebilir mi? | 4.1.2 | Tam Otomatik | aria-roles / button-name / label / select-name |
| 125 | Bileşenlerin durum (state), özellik (property) ve değer (value) bilgileri programatik olarak belirlenebilir mi? | 4.1.2 | Tam Otomatik | aria-valid-attr-value / aria-required-attr |
| 126 | Etkileşim sonucunda bileşenlerde oluşan durum/değer değişiklikleri, yardımcı teknolojiler tarafından algılanabilir şekilde güncelleniyor mu? | 4.1.2 | Kısmi | contentInventoryCheck |