array( 'title' => __( 'Image has no alt attribute', 'adinav-accessibility-audit-eaa' ), 'severity' => self::CRITICAL, 'wcag' => '1.1.1', 'level' => 'A', 'en301549' => '9.1.1.1', 'why' => __( 'A screen reader has nothing to announce, so it falls back to reading the file name — or says nothing at all. If the image is a product photo, the product becomes invisible.', 'adinav-accessibility-audit-eaa' ), 'fix' => __( 'Add alt text describing what the image conveys: Blue running shoe, side view. If the image is purely decorative, use an explicitly empty alt="" so assistive technology skips it. An absent alt and an empty alt mean completely different things.', 'adinav-accessibility-audit-eaa' ), ), 'img-alt-is-filename' => array( 'title' => __( 'Alt text is a file name', 'adinav-accessibility-audit-eaa' ), 'severity' => self::SERIOUS, 'wcag' => '1.1.1', 'level' => 'A', 'en301549' => '9.1.1.1', 'why' => __( 'Alt text like "IMG_4021.jpg" is technically present and completely useless. Automated compliance checkers score it as a pass; a blind user gets nothing.', 'adinav-accessibility-audit-eaa' ), 'fix' => __( 'Replace the file name with a description of what the image communicates in this context.', 'adinav-accessibility-audit-eaa' ), ), 'input-missing-label' => array( 'title' => __( 'Form field has no label', 'adinav-accessibility-audit-eaa' ), 'severity' => self::CRITICAL, 'wcag' => '1.3.1, 3.3.2', 'level' => 'A', 'en301549' => '9.1.3.1, 9.3.3.2', 'why' => __( 'The user is told there is a text box, but not what to type into it. On a checkout form this ends the sale. Placeholder text does not count: it disappears the moment typing starts, and many screen readers ignore it.', 'adinav-accessibility-audit-eaa' ), 'fix' => __( 'Give the field an id and point a label at it: . A wrapping