- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
174 lines
4.9 KiB
Markdown
174 lines
4.9 KiB
Markdown
# 🔧 Accessibility & Compatibility Fixes - Version 2
|
|
|
|
## Additional Issues Fixed
|
|
|
|
### 1. **Accessibility: Remaining aria-expanded Issues**
|
|
|
|
#### Problem
|
|
`aria-expanded` was used on ResizablePanel, but it's not a collapsible element in the traditional sense (it's a resizable panel, not an accordion).
|
|
|
|
#### Solution
|
|
Removed `aria-expanded` from ResizablePanel components. This attribute should only be used on elements that actually expand/collapse content (like accordions, menus, etc.).
|
|
|
|
**Before:**
|
|
```html
|
|
<div aria-expanded="!isCollapsed">
|
|
```
|
|
|
|
**After:**
|
|
```html
|
|
<div aria-label="panel">
|
|
```
|
|
|
|
### 2. **Other: Form Fields Missing id/name Attributes**
|
|
|
|
#### Problem
|
|
Form inputs were missing `id` and `name` attributes, which are required for:
|
|
- Accessibility (label association)
|
|
- Form submission
|
|
- Browser autocomplete
|
|
- Testing
|
|
|
|
#### Solution
|
|
Added `id`, `name`, and associated `<label>` elements to all form inputs:
|
|
|
|
**Files Fixed:**
|
|
1. **AI Panel Input** (`AIPanel.vue`):
|
|
```html
|
|
<label for="ai-input-field" class="sr-only">Ask AI assistant</label>
|
|
<input
|
|
id="ai-input-field"
|
|
name="ai-message"
|
|
aria-label="Ask AI assistant"
|
|
/>
|
|
```
|
|
|
|
2. **Admin Panel Login** (`AdminPanel.vue` and `AdminPanel.tsx`):
|
|
```html
|
|
<label for="admin-username" class="sr-only">Username</label>
|
|
<input
|
|
id="admin-username"
|
|
name="username"
|
|
aria-label="Username"
|
|
/>
|
|
|
|
<label for="admin-password" class="sr-only">Password</label>
|
|
<input
|
|
id="admin-password"
|
|
name="password"
|
|
aria-label="Password"
|
|
/>
|
|
```
|
|
|
|
3. **AI Send Button**:
|
|
```html
|
|
<button
|
|
title="Send message"
|
|
aria-label="Send message to AI assistant"
|
|
type="button"
|
|
>
|
|
<span class="sr-only">Send message</span>
|
|
<i class="fas fa-paper-plane" aria-hidden="true"></i>
|
|
</button>
|
|
```
|
|
|
|
### 3. **Compatibility: text-size-adjust Browser Support**
|
|
|
|
#### Note
|
|
The warning about `text-size-adjust` not being supported by Firefox and Safari is expected. This is a progressive enhancement:
|
|
|
|
- **Chrome/Edge**: Full support with `text-size-adjust`
|
|
- **Firefox/Safari**: Falls back gracefully (no impact)
|
|
- **Best Practice**: Include both `-webkit-text-size-adjust` and `text-size-adjust` for maximum compatibility
|
|
|
|
**Current Implementation:**
|
|
```css
|
|
html {
|
|
-webkit-text-size-adjust: 100%; /* Safari, Chrome (legacy) */
|
|
text-size-adjust: 100%; /* Chrome 54+, Edge 79+ */
|
|
}
|
|
```
|
|
|
|
This is correct and follows best practices. The warning is informational, not an error.
|
|
|
|
## Server-Side Issues (Documented)
|
|
|
|
### Performance & Security Headers
|
|
|
|
These issues require server-side configuration. See `SERVER_HEADERS.md` for complete implementation guide:
|
|
|
|
1. **Cache-Control Headers**
|
|
- Static assets: `Cache-Control: public, max-age=31536000, immutable`
|
|
- HTML: `Cache-Control: no-cache, no-store, must-revalidate`
|
|
|
|
2. **Security Headers**
|
|
- `X-Content-Type-Options: nosniff`
|
|
- `Content-Security-Policy` (adjust for production)
|
|
- Remove `Expires` header (use `Cache-Control` instead)
|
|
|
|
3. **Content-Type with Charset**
|
|
- All text responses: `Content-Type: text/html; charset=utf-8`
|
|
|
|
## Remaining Non-Critical Warnings
|
|
|
|
### 1. `div[popover]` not supported by Firefox < 125
|
|
- **Status**: Not used in our code
|
|
- **Impact**: None
|
|
- **Action**: None needed
|
|
|
|
### 2. `meta[name=theme-color]` not supported by Firefox
|
|
- **Status**: Progressive enhancement
|
|
- **Impact**: Works in Chrome/Edge/Safari, ignored in Firefox
|
|
- **Action**: None needed (graceful degradation)
|
|
|
|
### 3. CSP eval warning
|
|
- **Status**: Development mode only (Vite HMR)
|
|
- **Impact**: None in production
|
|
- **Action**: Remove `'unsafe-eval'` from CSP in production
|
|
|
|
## Summary of All Fixes
|
|
|
|
### Client-Side (Fixed ✅)
|
|
- [x] Added `sr-only` text to all icon buttons
|
|
- [x] Removed invalid `aria-expanded` attributes
|
|
- [x] Added `id` and `name` to all form inputs
|
|
- [x] Added `<label>` elements for all inputs
|
|
- [x] Added `aria-label` to all inputs
|
|
- [x] Fixed viewport meta tag
|
|
- [x] Added `text-size-adjust` (progressive enhancement)
|
|
|
|
### Server-Side (Documented 📋)
|
|
- [ ] Cache-Control headers (see `SERVER_HEADERS.md`)
|
|
- [ ] Security headers (see `SERVER_HEADERS.md`)
|
|
- [ ] Content-Type with charset (see `SERVER_HEADERS.md`)
|
|
|
|
## Testing Checklist
|
|
|
|
### Accessibility
|
|
- [x] All buttons have accessible text
|
|
- [x] All form inputs have `id` and `name`
|
|
- [x] All inputs have associated labels
|
|
- [x] No invalid ARIA attributes
|
|
- [x] Screen reader friendly
|
|
|
|
### Forms
|
|
- [x] All inputs have `id` attributes
|
|
- [x] All inputs have `name` attributes
|
|
- [x] All inputs have labels (visible or sr-only)
|
|
- [x] All inputs have `aria-label` as fallback
|
|
|
|
### Compatibility
|
|
- [x] `text-size-adjust` implemented (progressive enhancement)
|
|
- [x] Viewport meta tag fixed
|
|
- [x] Cross-browser compatible
|
|
|
|
---
|
|
|
|
**Status**: ✅ **All Client-Side Issues Fixed**
|
|
|
|
**Server-Side**: 📋 **See SERVER_HEADERS.md for configuration**
|
|
|
|
**Last Updated**: 2024-11-19
|
|
**Version**: 2.1.0
|
|
|