huangkevin-apr opened a new issue, #1984:
URL: https://github.com/apache/apisix-website/issues/1984

   ### Current State
   
   ## Description of the current state/issue
   
   The comparison table on the Apache APISIX website contains checkmark (✓) and 
cross (✗) icons that lack accessible names, making it impossible for screen 
reader users to understand whether features are supported or not.
   
   ### Current Problems:
   1. **12 accessibility violations** detected by IBM Equal Access 
Accessibility Checker
   2. Screen readers cannot announce the meaning of the icons (supported vs. 
not supported)
   3. Violates **WCAG 2.1 Level A** - Success Criterion 1.1.1 (Non-text Content)
   4. Creates a barrier for users relying on assistive technologies
   
   <img width="2560" height="921" alt="Image" 
src="https://github.com/user-attachments/assets/c1c49bab-d924-4988-9887-a0526c03ab66";
 />
   
   **Why is this important?**
   An SVG component with a graphics role can contain essential information as 
well as multiple shapes. When viewed together, these elements give the 
impression of a single image. Providing a text alternative (accessible name and 
description) makes the equivalent information available through assistive 
technologies. With the explicit use of roles and attributes, the author 
provides a clear indication that the content should convey meaning via the 
accessibility name and description to assistive technology users.
   
   ### Affected Features in Comparison Table:
   - Dubbo, MQTT, Tengine and REST API to gRPC transcoding
   - Configuration rollback
   - Custom Load Balancing and routing
   - Plugin hot loading
   - Dashboard
   - Support any NGINX variable as routing condition
   
   ### User Impact:
   Users with visual impairments using screen readers cannot:
   - Determine which features are supported in APISIX vs other API gateways
   - Make informed decisions about API gateway selection
   - Understand the comparison table content independently
   
   ### Technical Details:
   The `<Tick>` and `<Cross>` components in the comparison table are rendered 
without accessible names:
   ```tsx
   // Current implementation (inaccessible)
   <td><Tick /></td>
   <td><Cross /></td>
   ```
   
   Screen readers announce these as "image" or nothing at all, providing no 
semantic meaning.
   
   ## Link to the page
   
   **Production URL:** `https://apisix.apache.org/`
   
   **File Location:** `website/src/components/sections/Comparison.tsx`
   
   **Lines affected:** 53, 54, 58, 59, 63, 64, 68, 69, 73, 74, 78, 79
   
   ## Screenshots (if relevant)
   <img width="2560" height="921" alt="Image" 
src="https://github.com/user-attachments/assets/c1c49bab-d924-4988-9887-a0526c03ab66";
 />
   
   ### IBM A11Y Checker Results:
   ![IBM A11Y Checker showing 12 violations for SVG elements without accessible 
names](screenshot showing violations count: 44 violations, 16 needs review, 17 
recommendations, with 12 items selected showing "The SVG element has no 
accessible name")
   
   ### Comparison Table:
   ![Comparison table showing checkmark and cross icons in a table format 
comparing APISIX features with other API gateways](screenshot of the comparison 
table with Feature column, APISIX column with checkmarks, and Other API 
Gateways column with crosses)
   
   ### Code View:
   ![Browser DevTools showing the HTML structure of table cells with Tick and 
Cross components without title attributes](screenshot of browser inspector 
showing <td><svg>...</svg></td> elements without title elements)
   
   ## Expected Behavior
   
   Icons in the comparison table should have accessible names that clearly 
communicate their meaning:
   - Checkmark icons should be announced as "Supported"
   - Cross icons should be announced as "Not supported"
   
   ## Proposed Solution
   
   Add descriptive `title` props to the `<Tick>` and `<Cross>` components:
   
   ```tsx
   // Proposed fix (accessible)
   <td><Tick title="Supported" /></td>
   <td><Cross title="Not supported" /></td>
   ```
   
   This will ensure screen readers can properly announce the status of each 
feature.
   
   ## Accessibility Standards Violated
   
   - **WCAG 2.1 Level A** - Success Criterion 1.1.1 (Non-text Content)
   - **WCAG 2.1 Level A** - Success Criterion 1.3.1 (Info and Relationships)
   
   ## Environment
   
   - **Browser:** Chrome/Firefox/Safari (issue affects all browsers)
   - **Detection Tool:** IBM Equal Access Accessibility Checker
   
   
   ## Labels
   
   - `accessibility`
   - `a11y`
   - `bug`
   - `WCAG`
   - `screen-reader`
   - `good first issue`
   
   ---
   
   **Note:** I'm preparing a PR to fix this issue. Would appreciate review from 
the team on whether the proposed solution aligns with the project's 
accessibility standards.
   
   
   ### Desired State
   
   **Description of the change you are proposing**:
   
   Added descriptive `title` props to all `<Tick>` and `<Cross>` components in 
the comparison table:
   - `<Tick title="Supported" />` - Clearly indicates the feature is supported 
in APISIX
   - `<Cross title="Not supported" />` - Clearly indicates the feature is not 
supported in other API gateways
   
   
   ### Would you like to fix this issue?
   
   Yes! Count me in


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to