Accessibility Conformance Report (short form)
Örnek Yazılım — Randevu Paneli 1.0 (before remediation) · WCAG 2.2 Level A and AA only
Product and report information
| Name of product / version | Örnek Yazılım — Randevu Paneli, version 1.0 (before remediation) (FICTIONAL example product) |
|---|---|
| Vendor | Örnek Yazılım A.Ş. (FICTIONAL) — contact: destek@ornek-yazilim.example |
| Report date | 2026-10-06 |
| Product description | Browser-based appointment dashboard (SaaS). Scope of this report: the complete page set of this example: login page, dashboard (appointment table, icon toolbar, cancellation dialog, appointment form with validation, status notification, weekly chart) and the help and documentation page, plus the support information published there. |
| Prepared by | Ali Karabüyük (accessibility evaluation and report) |
| Notes | This is a worked example built on a deliberately defective, purpose-made demo application. It does not describe any real product. Short form: only the WCAG tables are given, to show the difference to the remediated version. |
Evaluation methods used
- Automated testing: axe-core 4.13.0 with the WCAG 2.0/2.1/2.2 Level A and AA rule tags, run in Chromium 141.0.7390.37 (Playwright 1.56) in six UI states: login; dashboard; dashboard after submitting the empty form; dashboard with the dialog open; dashboard with a notification visible; help page. HTML/CSS checked with the Nu Html Checker (vnu-jar 26.10.2).
- Scripted keyboard and layout checks (Playwright): Tab-order recording and keyboard-trap detection; focus-indicator style change per focus stop; pointer-only control detection; skip-link activation; dialog focus move, containment, Esc and focus return; live-region presence for notifications and notification lifetime; error association (aria-describedby, aria-invalid, focus after submit); accessible names from the Chromium accessibility tree; paste into the password field; autocomplete tokens; target size; focus obscured by sticky content; reflow at 320 CSS px; 640 CSS px as a 200 % zoom equivalent; WCAG text-spacing injection; chart colour contrast measured from image pixels; link inventory of navigation, footer and page list across the page set (multiple ways, consistent navigation).
- Manual review by code inspection of the HTML, CSS and JavaScript against each success criterion (including grep-assisted searches for timers, media, gestures, shortcuts and orientation locks).
- Not performed: testing with screen readers (NVDA, JAWS, VoiceOver, TalkBack), speech input or switch access; testing by people with disabilities; other browsers and mobile platforms; real browser zoom; Windows forced-colours mode. Results that depend on these are stated in the remarks.
Terms used for conformance levels
- Supports
- The functionality of the product has at least one method that meets the criterion without known defects, or meets it with an equivalent facilitation.
- Partially Supports
- Some functionality of the product does not meet the criterion.
- Does Not Support
- The majority of product functionality does not meet the criterion, or a defect blocks the function it covers.
- Not Applicable
- The criterion is not relevant to the product (the evidence for this is stated in the remark).
- Not Evaluated
- The product has not been evaluated against the criterion. As the VPAT 2.5 format allows, this term is used only for WCAG Level AAA; every Level A and AA criterion and every Section 508 and EN 301 549 clause has a determination.
Summary
| Set | Supports | Partially Supports | Does Not Support | Not Applicable | Not Evaluated | Total |
|---|---|---|---|---|---|---|
| WCAG 2.2 A + AA | 13 | 1 | 26 | 15 | 0 | 55 |
WCAG 2.x report
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.1.1 Non-text Content (Level A) | Does Not Support | Chart image has no alt (axe image-alt: 1 node); 4 icon-only buttons have no accessible name (axe button-name). |
| 1.2.1 Audio-only and Video-only (Prerecorded) (Level A) | Not Applicable | No media. |
| 1.2.2 Captions (Prerecorded) (Level A) | Not Applicable | No media. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A) | Not Applicable | No media. |
| 1.3.1 Info and Relationships (Level A) | Does Not Support | Inputs have no programmatic labels (axe label: 4 nodes); the appointment table has no header cells (not flagged by axe, which treated it as a layout table; found by code inspection); visual headings are styled div elements (0 headings in the accessibility tree); no landmarks. |
| 1.3.2 Meaningful Sequence (Level A) | Supports | DOM order matches visual order (code inspection). |
| 1.3.3 Sensory Characteristics (Level A) | Does Not Support | Instructions rely on colour: 'Kırmızı ile işaretli alanlar zorunludur' (fields marked in red are required) and 'Yeşil: onaylandı, kırmızı: beklemede' (scripted text search). |
| 1.4.1 Use of Color (Level A) | Does Not Support | Appointment status shown only by a red/green dot; required fields only by red label colour; invalid fields only by a red border. |
| 1.4.2 Audio Control (Level A) | Not Applicable | No audio. |
| 2.1.1 Keyboard (Level A) | Does Not Support | Pointer-only controls (onclick on non-focusable elements): div "Giriş"; div#dd "Seçiniz ▾"; div "Danışmanlık"; div "Kurulum"; div "Bakım"; span "✕". The login form cannot be submitted from the keyboard (no submit button). |
| 2.1.2 No Keyboard Trap (Level A) | Does Not Support | Keyboard trap: the 'Not' textarea captures the Tab key; in a 70-press traversal focus stayed on it for 57 presses. |
| 2.1.4 Character Key Shortcuts (Level A, WCAG 2.1) | Not Applicable | No shortcuts. |
| 2.2.1 Timing Adjustable (Level A) | Does Not Support | Same 15-minute silent session end; in addition notifications disappear after 2.0 s. |
| 2.2.2 Pause, Stop, Hide (Level A) | Not Applicable | None present. |
| 2.3.1 Three Flashes or Below Threshold (Level A) | Supports | No flashing content. |
| 2.4.1 Bypass Blocks (Level A) | Does Not Support | No skip link, landmarks or headings (first Tab stop is a toolbar button; axe bypass: needs review). |
| 2.4.2 Page Titled (Level A) | Partially Supports | Login title 'Giriş' is adequate; dashboard title 'Sayfa' (page) is not descriptive. axe passes both because a title exists; adequacy was judged manually. |
| 2.4.3 Focus Order (Level A) | Does Not Support | Positive tabindex values put 'print' before 'add' and before the main menu; opening the dialog leaves focus behind it; after closing, focus is lost to the document body (scripted). |
| 2.4.4 Link Purpose (In Context) (Level A) | Does Not Support | Row links say 'Detay' (details) but actually open a cancellation dialog. |
| 2.5.1 Pointer Gestures (Level A, WCAG 2.1) | Not Applicable | None. |
| 2.5.2 Pointer Cancellation (Level A, WCAG 2.1) | Supports | click handlers only. |
| 2.5.3 Label in Name (Level A, WCAG 2.1) | Does Not Support | Visible field captions ('Ad Soyad', 'Telefon') are not part of the (empty) accessible names. |
| 2.5.4 Motion Actuation (Level A, WCAG 2.1) | Not Applicable | None. |
| 3.1.1 Language of Page (Level A) | Does Not Support | No lang attribute (axe html-has-lang: 2 pages). |
| 3.2.1 On Focus (Level A) | Supports | No focus handlers. |
| 3.2.2 On Input (Level A) | Supports | No change-of-context on input. |
| 3.2.6 Consistent Help (Level A, WCAG 2.2) | Not Applicable | No help mechanism was provided, so the criterion did not apply. |
| 3.3.1 Error Identification (Level A) | Does Not Support | 2 generic messages ('Zorunlu alan', 'Geçersiz') appear below the form without naming or being linked to their fields; focus stays on the button. |
| 3.3.2 Labels or Instructions (Level A) | Does Not Support | Login uses placeholders as the only labels (they disappear on input); dashboard captions are not associated. |
| 3.3.7 Redundant Entry (Level A, WCAG 2.2) | Not Applicable | No multi-step process. |
| 4.1.2 Name, Role, Value (Level A) | Does Not Support | Accessibility tree: 8 unnamed buttons/fields on the dashboard; the custom dropdown has no role or state; the overlay has no dialog role; the login submit is a div. |
| 4.1.1 Parsing (obsolete in WCAG 2.2) (Level A) | Supports | Nu Html Checker: 1 error (missing img alt, already covered under 1.1.1). |
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.2.4 Captions (Live) (Level AA) | Not Applicable | No media. |
| 1.2.5 Audio Description (Prerecorded) (Level AA) | Not Applicable | No media. |
| 1.3.4 Orientation (Level AA, WCAG 2.1) | Supports | No orientation lock found. |
| 1.3.5 Identify Input Purpose (Level AA, WCAG 2.1) | Does Not Support | No autocomplete tokens on login or appointment fields. |
| 1.4.3 Contrast (Minimum) (Level AA) | Does Not Support | axe color-contrast: 12 distinct failing elements (e.g. hint text #aaa on white 2.32:1, primary button 3.29:1, footer 1.92:1). |
| 1.4.4 Resize Text (Level AA) | Supports | Content remains readable at the 200% equivalent but needs horizontal scrolling (scrollWidth 900 px); see 1.4.10. |
| 1.4.5 Images of Text (Level AA) | Supports | Only image is a chart. |
| 1.4.10 Reflow (Level AA, WCAG 2.1) | Does Not Support | At 320 CSS px: login 380 px and dashboard 900 px wide (fixed widths), forcing two-dimensional scrolling. |
| 1.4.11 Non-text Contrast (Level AA, WCAG 2.1) | Does Not Support | Input borders #ddd 1.36:1; no focus indicator; same chart colours. |
| 1.4.12 Text Spacing (Level AA, WCAG 2.1) | Supports | 0 clipped elements with the injected spacing (scripted). |
| 1.4.13 Content on Hover or Focus (Level AA, WCAG 2.1) | Not Applicable | No hover/focus content. |
| 2.4.5 Multiple Ways (Level AA) | Not Applicable | After login there is only one page (the dashboard), reached as the result of the login process. The menu items 'Randevular' and 'Ayarlar' point to '#' and lead to no other page (scripted link inventory), so there is no set of pages to locate. |
| 2.4.6 Headings and Labels (Level AA) | Does Not Support | No headings; fields have no labels (placeholders only on login). |
| 2.4.7 Focus Visible (Level AA) | Does Not Support | '*:focus { outline: none }' removes the indicator: 12 of 12 stops show no visible change (scripted). |
| 2.4.11 Focus Not Obscured (Minimum) (Level AA, WCAG 2.2) | Supports | No sticky content; 0 stops obscured. |
| 2.5.7 Dragging Movements (Level AA, WCAG 2.2) | Not Applicable | None. |
| 2.5.8 Target Size (Minimum) (Level AA, WCAG 2.2) | Does Not Support | 8 targets under 24 × 24 px, e.g. button#btn-add 20x20, button#btn-print 20x20, button#btn-del 20x20, button#btn-export 20x20; the spacing exception was not applied. |
| 3.1.2 Language of Parts (Level AA) | Does Not Support | English sentence in the banner without a language attribute. |
| 3.2.3 Consistent Navigation (Level AA) | Supports | Two pages only; no repeated navigation whose order could differ. |
| 3.2.4 Consistent Identification (Level AA) | Supports | No repeated functional components with differing names. |
| 3.3.3 Error Suggestion (Level AA) | Does Not Support | 'Geçersiz' (invalid) gives no suggestion. |
| 3.3.4 Error Prevention (Legal, Financial, Data) (Level AA) | Supports | A confirmation dialog exists (although it is not keyboard accessible, see 2.1.1). |
| 3.3.8 Accessible Authentication (Minimum) (Level AA, WCAG 2.2) | Does Not Support | Pasting into the password field is blocked (scripted: paste event cancelled), which prevents password managers and copy-paste. |
| 4.1.3 Status Messages (Level AA, WCAG 2.1) | Does Not Support | 0 live regions; the notification is not exposed to assistive technology. |
Legal disclaimer and notes
This report describes a fictional demo application created for illustration. Statements apply only to the three pages, the published support information and the states listed under "Evaluation methods used", tested on 2026-10-06. Automated and scripted checks find only part of the barriers; the remarks say which method supports each statement.
The structure of this report follows the VPAT® 2.5 Rev INT (international edition) format; the wording is the author's own. VPAT® is a registered trademark of the Information Technology Industry Council (ITI).
Evidence: vpat-acr-audit-before.json, vpat-acr-audit-summary.html, vpat-acr-app-before.zip.