Merge pull request 'fix(canvas): add role=alert + aria-live=assertive to error states (WCAG 4.1.3)' (#1463) from fix/canvas-errors-aria-alert into main
CI / Canvas Deploy Reminder (push) Blocked by required conditions
publish-workspace-server-image / Production auto-deploy (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 6s
CI / Detect changes (push) Successful in 12s
CI / Shellcheck (E2E scripts) (push) Successful in 16s
E2E API Smoke Test / detect-changes (push) Successful in 12s
E2E Chat / detect-changes (push) Successful in 8s
Handlers Postgres Integration / detect-changes (push) Successful in 6s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 7s
Harness Replays / detect-changes (push) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 2s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 5s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 18s
Harness Replays / Harness Replays (push) Successful in 9s
CI / Platform (Go) (push) Has been cancelled
CI / Canvas (Next.js) (push) Has been cancelled
CI / all-required (push) Has been cancelled
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
publish-canvas-image / Build & push canvas image (push) Has been cancelled
CI / Python Lint & Test (push) Has been cancelled
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Has been cancelled
Handlers Postgres Integration / Handlers Postgres Integration (push) Has been cancelled
E2E Chat / E2E Chat (push) Has been cancelled
publish-workspace-server-image / build-and-push (push) Has been cancelled

This commit was merged in pull request #1463.
This commit is contained in:
2026-05-18 18:34:35 +00:00
4 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -459,7 +459,7 @@ function ProviderPickerModal({
)}
{entry.error && (
<div className="mt-1.5 text-[10px] text-bad">{entry.error}</div>
<div role="alert" aria-live="assertive" className="mt-1.5 text-[10px] text-bad">{entry.error}</div>
)}
</div>
))}
@@ -718,7 +718,7 @@ function AllKeysModal({
))}
{globalError && (
<div className="px-3 py-2 bg-red-950/40 border border-red-800/50 rounded-lg text-[11px] text-bad">
<div role="alert" aria-live="assertive" className="px-3 py-2 bg-red-950/40 border border-red-800/50 rounded-lg text-[11px] text-bad">
{globalError}
</div>
)}
+1 -1
View File
@@ -71,7 +71,7 @@ export function WorkspaceUsage({ workspaceId }: WorkspaceUsageProps) {
<SkeletonRow />
</>
) : error ? (
<p className="text-xs text-bad" data-testid="usage-error">
<p role="alert" aria-live="assertive" className="text-xs text-bad" data-testid="usage-error">
{error}
</p>
) : metrics ? (
+1 -1
View File
@@ -1121,7 +1121,7 @@ export function ConfigTab({ workspaceId }: Props) {
)}
{error && (
<div className="mx-3 mb-2 px-3 py-1.5 bg-red-900/30 border border-red-800 rounded text-xs text-bad">{error}</div>
<div role="alert" aria-live="assertive" className="mx-3 mb-2 px-3 py-1.5 bg-red-900/30 border border-red-800 rounded text-xs text-bad">{error}</div>
)}
{!error && RUNTIMES_WITH_OWN_CONFIG.has(config.runtime || "") && (
<div className="mx-3 mb-2 px-3 py-1.5 bg-surface-sunken/50 border border-line rounded text-xs text-ink-mid">
+1 -1
View File
@@ -275,7 +275,7 @@ export function ScheduleTab({ workspaceId }: Props) {
Enabled
</label>
</div>
{error && <div className="text-[10px] text-bad">{error}</div>}
{error && <div role="alert" aria-live="assertive" className="text-[10px] text-bad">{error}</div>}
<div className="flex gap-2">
<button
type="button"