Skip to content

A11y: Add aria-live announcements via @react-aria/live-announcer#33970

Merged
Sidnioulz merged 16 commits into
nextfrom
copilot/create-aria-live-region-component
Apr 2, 2026
Merged

A11y: Add aria-live announcements via @react-aria/live-announcer#33970
Sidnioulz merged 16 commits into
nextfrom
copilot/create-aria-live-region-component

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 2, 2026

Storybook UI lacks a centralized approach for managing aria-live announcements, making screen reader users unable to perceive status changes (test results, loading states, errors, etc.).

Changes

  • extend-to-be-announced integration — Added extend-to-be-announced (by @AriPerkkio) as a devDependency in core for robust ARIA live region assertion via aria-live-capture. Registered in code/.storybook/storybook.setup.ts via import 'extend-to-be-announced/vitest'.
  • TestProviderRender announcements — Integrated announce() from @react-aria/live-announcer directly into the vitest addon's TestProviderRender component to announce test run lifecycle events:
    • "Test run started." (polite) when tests begin
    • "Test run finished. X components errored, Y components with warnings, Z components passed." on completion (assertive if component test errors or accessibility errors are present, polite otherwise; includes a11y error/warning counts when the a11y addon is present)
    • "Test run crashed." (assertive) on fatal errors
  • Stories — 3 new stories with play functions on TestProviderRender using render with useState and mock-driven state transitions (via mocked store.send or setTimeout) to verify announcements via waitFor + toBeAnnounced (AnnouncesTestRunStart, AnnouncesTestRunFinished, AnnouncesTestRunCrashed). Tagged with vitest for vitest-only test execution.
  • Dependencies — Both @react-aria/live-announcer and extend-to-be-announced are added as devDependencies in code/core/package.json (required by the pre-bundling system).

Usage

// Imperative — import directly from @react-aria/live-announcer
import { announce } from '@react-aria/live-announcer';
announce('3 tests passed', 'polite');

// Test assertion (via extend-to-be-announced, registered in storybook.setup.ts)
expect('3 tests passed').toBeAnnounced('polite');
expect('Error occurred').toBeAnnounced('assertive');

Manual testing

  1. Start Storybook UI: run cd code && yarn storybook:ui (requires compilation first via yarn nx run-many -t compile -c production)
  2. Navigate to TestProviderRender stories — verify the AnnouncesTestRunStart, AnnouncesTestRunFinished, AnnouncesTestRunCrashed stories pass their play function assertions
  3. Screen reader testing: Enable VoiceOver (⌘+F5 on macOS) and trigger test run state transitions in the announcement stories to confirm announcements are spoken
Original prompt

This section details on the original issue you should resolve

<issue_title>[A11y]: Create aria live region component</issue_title>
<issue_description>### Describe the bug

We need a component created to handle aria-live announcements in things like

  • the interaction addon
  • the a11y addon
  • the testing module
  • toasts
  • search
  • loader
  • announcing the repositioning of the addon panel

A dedicated component will help, because live notifications often require developers to maintain a sb-sr-only aria-hidden aria-live UI section where they'll inject notification content. It's then necessary to clear this region so that the next notification can be sent in.

Places where we need the component can then start using it. In some cases (search, and any classic HTML form), the live region area is not aria-hidden (and not sb-sr-only) so that it doubles up as an error notification area. The component should support both use cases.

The component should use react-spectrum/react-aria primitives. Do check @react-aria/live-announcer`.

The loader also needs to be checked for aria-busy.

Reproduction link

yarn storybook:ui

Reproduction steps

  1. Launch tests in the test module
  2. Turn off your screen
  3. Guess when tests are over

System

n/a, 9.2.0 alpha

Additional context

No response</issue_description>

<agent_instructions>Make sure to add stories illustrating the live regions

You may add a devDependency to detect live regions if there is a popular, maintained NPM package for it; otherwise, write a centralised test util to extend expect, so we can expect(canvas).toHaveLiveRegion({ text: '...' })

Create E2E tests too</agent_instructions>

Comments on the Issue (you are @copilot in this section)


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Summary by CodeRabbit

Release Notes

  • New Features

    • Added live region announcements for test run state changes (start, finish, crash) to improve accessibility for screen reader users.
    • Introduced a new test matcher for verifying live region announcements in tests.
  • Tests

    • Added test stories demonstrating live region announcements for different test run scenarios.

Copilot AI changed the title [WIP] Add aria live region component for better accessibility feat(a11y): Add LiveRegion component for aria-live announcements Mar 2, 2026
@Sidnioulz Sidnioulz changed the title feat(a11y): Add LiveRegion component for aria-live announcements A11y: Add LiveRegion component for aria-live announcements Mar 3, 2026
@Sidnioulz Sidnioulz self-requested a review March 3, 2026 09:38
@Sidnioulz
Copy link
Copy Markdown
Member

@copilot fix the PR description with a "#### Manual testing" section for reviewers

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Mar 3, 2026

View your CI Pipeline Execution ↗ for commit 21f483c

Command Status Duration Result
nx run-many -t compile,check,knip,test,lint,fmt... ✅ Succeeded 6m 5s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-02 15:26:55 UTC

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Mar 3, 2026

View your CI Pipeline Execution ↗ for commit 33b2422


☁️ Nx Cloud last updated this comment at 2026-03-03 09:49:11 UTC

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 3, 2026

@copilot fix the PR description with a "#### Manual testing" section for reviewers

Added a "#### Manual testing" section to the PR description with step-by-step instructions covering: starting Storybook UI, verifying each story (Default, Visible, DynamicUpdates, VisibleFormError, PolitenessToggle), screen reader testing, and running unit tests.

Copy link
Copy Markdown
Member

@Sidnioulz Sidnioulz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As it is, overriding announce from react-aria seems useless. Our hook provides no QoL advantage.

The component also seems useless. It does not even use the hook.

Remove both the hook and component from the codebase.

Then, modify the TestProvider / vitest addon to use react-aria's announce function. And use the toHaveLiveRegion checker to verify that live announcements are created. I want you to announce when a test run starts and finishes (announcing if there's an error, and then how many components errored/have warnings/passed)

Comment thread code/core/src/components/components/LiveRegion/LiveRegion.tsx Outdated
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 3, 2026

As it is, overriding announce from react-aria seems useless. Our hook provides no QoL advantage.

The component also seems useless. It does not even use the hook....

Done in dbb64bd. Removed both the LiveRegion component and useAnnouncer hook. The codebase now only re-exports announce, clearAnnouncer, destroyAnnouncer from @react-aria/live-announcer.

Integrated announce() into TestProviderRender with a useEffect that detects state transitions:

  • Start: announce('Test run started.', 'polite')
  • Finish: announce('Test run finished. X components errored, Y with warnings, Z passed.', ...) — uses 'assertive' if there are errors, 'polite' otherwise. Includes a11y error/warning counts when the a11y addon is present.
  • Crash: announce('Test run crashed.', 'assertive')

Added 3 stories with play functions (AnnouncesTestRunStart, AnnouncesTestRunFinished, AnnouncesTestRunCrashed) that verify announcements using toHaveLiveRegion on document.body.

Copilot AI changed the title A11y: Add LiveRegion component for aria-live announcements A11y: Add aria-live announcements via @react-aria/live-announcer Mar 3, 2026
@Sidnioulz Sidnioulz self-requested a review March 4, 2026 13:37
Comment thread code/core/src/components/components/LiveRegion/LiveRegion.tsx Outdated
Comment thread code/core/src/manager/utils/toHaveLiveRegion.ts
Comment thread code/core/src/manager/utils/toHaveLiveRegion.test.ts
Comment thread code/addons/vitest/src/components/TestProviderRender.stories.tsx
@Sidnioulz Sidnioulz marked this pull request as ready for review March 4, 2026 16:52
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 4, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR adds accessibility announcements to the vitest addon's test provider component for lifecycle events (start, completion, crash) using live regions, alongside a new custom Vitest matcher for testing live-region content and comprehensive test coverage.

Changes

Cohort / File(s) Summary
Live Region Announcements
code/addons/vitest/src/components/TestProviderRender.tsx, code/addons/vitest/src/components/TestProviderRender.stories.tsx
Added useEffect to announce test state transitions (running, crashed, succeeded) to live regions with appropriate politeness levels; added three stories validating announcements via new toHaveLiveRegion matcher for "Test run started," "Test run finished," and "Test run crashed" messages.
Custom Live Region Matcher
code/core/src/shared/utils/toHaveLiveRegion.ts, code/core/src/shared/utils/toHaveLiveRegion.test.ts
Implemented custom Jest/Vitest matcher to find and validate aria-live regions by text content (string or RegExp) and optional politeness level; supports implicit live-region roles (status, alert, log, output) and handles RegExp state reset across multiple invocations.
Type Definitions & Setup
code/core/vitest.d.ts, code/vitest-setup.ts, code/.storybook/storybook.setup.ts
Extended Vitest type definitions with toHaveLiveRegion matcher signature; registered matcher in vitest setup and imported test utilities in storybook setup.
Dependencies
code/core/package.json
Added @react-aria/live-announcer (^3.4.4) and extend-to-be-announced (^2.0.0) to devDependencies.

Sequence Diagram(s)

sequenceDiagram
    participant Test as Test/Story
    participant Component as TestProviderRender
    participant Announcer as Live Announcer
    participant Region as Live Region
    participant SR as Screen Reader

    Test->>Component: Update testProviderState
    Component->>Announcer: announce(message, level)
    Announcer->>Region: Inject text into aria-live region
    Region->>SR: Notify (polite/assertive)
    SR->>SR: Queue/Read Announcement
    Test->>Test: waitFor() + toHaveLiveRegion()
    Test->>Region: Query aria-live element for text match
    Region-->>Test: pass/fail assertion
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

Possibly related PRs


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
code/core/src/manager/utils/toHaveLiveRegion.ts (1)

18-19: Align text contract with implementation.

The docs say string matching is exact, but the implementation currently uses substring matching (includes). Please update either the docs or logic so behavior is explicit.

Also applies to: 59-59

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/core/src/manager/utils/toHaveLiveRegion.ts` around lines 18 - 19, The
comment for the toHaveLiveRegion matcher is inconsistent with its
implementation: if the intent is exact string matching, update the
implementation in the toHaveLiveRegion matcher (function toHaveLiveRegion) to
use strict equality (===) when text is a string instead of substring matching
(includes); otherwise change the doc comment on the text property to state that
string matching is a substring match. Locate the matching logic in
toHaveLiveRegion and replace the string branch to use === for exact match (or
adjust the comment on the text field to say "substring match") and ensure the
same change is applied to the other occurrence referenced at the second
location.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@code/addons/vitest/src/components/TestProviderRender.stories.tsx`:
- Around line 337-345: The announcement assertions run immediately after mount
but announce() from `@react-aria/live-announcer` updates the DOM asynchronously,
so wrap the live-region expectation in an async wait helper (e.g., await
waitFor(() => expect(document.body).toHaveLiveRegion({ text: 'Test run
started.', level: 'polite' })) or use a find-style helper) to retry until the
live region appears; update each play block that mounts TestProviderRender
(references: the play function, mount, TestProviderRender, and announce) to
await the waitFor-based assertion instead of asserting immediately after mount.

In `@code/addons/vitest/src/components/TestProviderRender.tsx`:
- Around line 180-201: The announce urgency only checks errorCount so runs that
fail solely due to accessibility issues are announced as polite; update the
logic in TestProviderRender (around hasA11yAddon / a11yErrorCount) to treat
accessibility errors as assertive too by using a combined error check (e.g.,
compute a totalErrorCount = errorCount + (hasA11yAddon ? a11yErrorCount : 0) or
otherwise include a11yErrorCount in the condition) and then call
announce(message, totalErrorCount > 0 ? 'assertive' : 'polite'); reference the
variables/function names a11yErrorCount, hasA11yAddon, errorCount, announce, and
message when making the change.

In `@code/core/package.json`:
- Line 266: Add the missing devDependency "@react-aria/live-announcer" to the
vitest addon package by updating code/addons/vitest/package.json: add
"@react-aria/live-announcer": "^3.4.4" (or match the version used in core) under
devDependencies so imports in TestProviderRender.tsx and
TestProviderRender.stories.tsx resolve correctly during strict workspace
installs; then run install to update lockfiles.

In `@code/core/src/manager/utils/toHaveLiveRegion.ts`:
- Around line 57-60: The RegExp used in the text matching may have global/sticky
flags and .test() mutates lastIndex, causing false negatives across multiple
elements; in the mesh that computes textMatches (where variable text is used and
textMatches is assigned), detect if text is a RegExp (instanceof RegExp) and
reset text.lastIndex = 0 before calling .test(content) so each element test
starts from the beginning.

---

Nitpick comments:
In `@code/core/src/manager/utils/toHaveLiveRegion.ts`:
- Around line 18-19: The comment for the toHaveLiveRegion matcher is
inconsistent with its implementation: if the intent is exact string matching,
update the implementation in the toHaveLiveRegion matcher (function
toHaveLiveRegion) to use strict equality (===) when text is a string instead of
substring matching (includes); otherwise change the doc comment on the text
property to state that string matching is a substring match. Locate the matching
logic in toHaveLiveRegion and replace the string branch to use === for exact
match (or adjust the comment on the text field to say "substring match") and
ensure the same change is applied to the other occurrence referenced at the
second location.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0654d110-bcd1-486a-a7a0-1ea05fe9a72c

📥 Commits

Reviewing files that changed from the base of the PR and between b7355d8 and 1902224.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (5)
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx
  • code/addons/vitest/src/components/TestProviderRender.tsx
  • code/core/package.json
  • code/core/src/manager/utils/toHaveLiveRegion.test.ts
  • code/core/src/manager/utils/toHaveLiveRegion.ts

Comment thread code/addons/vitest/src/components/TestProviderRender.stories.tsx Outdated
Comment thread code/addons/vitest/src/components/TestProviderRender.tsx
Comment thread code/core/package.json
Comment thread code/core/src/manager/utils/toHaveLiveRegion.ts
@storybook-app-bot
Copy link
Copy Markdown

storybook-app-bot Bot commented Mar 4, 2026

Package Benchmarks

Commit: 21f483c, ran on 2 April 2026 at 15:31:54 UTC

No significant changes detected, all good. 👏

@Sidnioulz Sidnioulz self-requested a review March 4, 2026 17:10
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
code/addons/vitest/src/components/TestProviderRender.stories.tsx (1)

377-379: Prefer event-driven transitions over fixed timers in stories.

Using setTimeout(..., 100) in Line 378 and Line 411 adds avoidable timing sensitivity. Consider triggering these transitions from explicit mocked actions (similar to AnnouncesTestRunStart) so the play assertions are fully deterministic.

Also applies to: 410-412

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/addons/vitest/src/components/TestProviderRender.stories.tsx` around
lines 377 - 379, The story currently uses setTimeout to flip state (e.g.,
setState('test-provider-state:succeeded')) which causes flaky timing; replace
the timer-based transition with an explicit, testable mock action: add a named
trigger function (e.g., triggerTestSucceeded) that calls
setState('test-provider-state:succeeded') and expose it to the story's play via
the same mocked-actions pattern used by AnnouncesTestRunStart, then remove the
setTimeout blocks (including the other occurrence around lines 410-412) and
ensure the play function invokes triggerTestSucceeded deterministically; also
return a cleanup that clears any listeners/subscriptions established by the mock
action.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@code/addons/vitest/src/components/TestProviderRender.stories.tsx`:
- Around line 377-379: The story currently uses setTimeout to flip state (e.g.,
setState('test-provider-state:succeeded')) which causes flaky timing; replace
the timer-based transition with an explicit, testable mock action: add a named
trigger function (e.g., triggerTestSucceeded) that calls
setState('test-provider-state:succeeded') and expose it to the story's play via
the same mocked-actions pattern used by AnnouncesTestRunStart, then remove the
setTimeout blocks (including the other occurrence around lines 410-412) and
ensure the play function invokes triggerTestSucceeded deterministically; also
return a cleanup that clears any listeners/subscriptions established by the mock
action.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a0ab73ff-f205-47ec-8a1e-9504f9d1fdb2

📥 Commits

Reviewing files that changed from the base of the PR and between 1902224 and 8c757a2.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (5)
  • code/.storybook/storybook.setup.ts
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx
  • code/addons/vitest/src/components/TestProviderRender.tsx
  • code/addons/vitest/src/test-matchers.d.ts
  • code/core/package.json
✅ Files skipped from review due to trivial changes (3)
  • code/.storybook/storybook.setup.ts
  • code/addons/vitest/src/test-matchers.d.ts
  • code/core/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • code/addons/vitest/src/components/TestProviderRender.tsx

@Sidnioulz Sidnioulz moved this from On Hold to In Progress in Core Team Projects Mar 24, 2026
@Sidnioulz Sidnioulz force-pushed the copilot/create-aria-live-region-component branch from eddf60f to 1ceed73 Compare April 2, 2026 13:23
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
code/core/src/shared/utils/toHaveLiveRegion.test.ts (1)

6-91: Add a regression case for <output> with level: 'polite'.

Given this suite validates inferred politeness, add one test for <output> so implicit level handling is covered and doesn’t regress.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/core/src/shared/utils/toHaveLiveRegion.test.ts` around lines 6 - 91, Add
a regression test to toHaveLiveRegion.test.ts that asserts an <output> element
is treated as polite: create a container with '<output>Output update</output>'
and add an it block that calls expect(container).toHaveLiveRegion({ text:
'Output update', level: 'polite' }) and also include the inverse expect(() =>
expect(container).toHaveLiveRegion({ text: 'Output update', level: 'assertive'
})).toThrow() to ensure implicit level inference for role-like elements is
covered for the toHaveLiveRegion matcher.
code/core/src/shared/utils/toHaveLiveRegion.ts (1)

17-18: Align matcher docs with implemented string matching semantics.

Line 17 says string matching is exact, but Line 66 uses substring matching (includes). Please either update docs or switch implementation to exact equality.

Also applies to: 65-67

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/core/src/shared/utils/toHaveLiveRegion.ts` around lines 17 - 18, The
docs say the matcher option text is an exact string but the matcher
implementation uses substring matching (includes); update the implementation in
the toHaveLiveRegion matcher so string comparisons use exact equality and RegExp
comparisons require a full-string match: inside the toHaveLiveRegion matcher
(the function that reads the text option), replace any use of includes for
string matching with a strict === comparison against the element's full text,
and when text is a RegExp, test it against the entire string by anchoring the
pattern (e.g. construct a new RegExp like new RegExp(`^(?:${pattern.source})$`,
pattern.flags) and use .test(fullText)) so the runtime behavior matches the
documented semantics for the text property.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@code/core/src/shared/utils/toHaveLiveRegion.test.ts`:
- Line 4: The test file imports a local helper without the required TypeScript
extension; update the relative import in toHaveLiveRegion.test.ts from the
extensionless form to include ".ts" (i.e., change the import statement that
references './toHaveLiveRegion' to './toHaveLiveRegion.ts'), then run the
project's lint/tests to verify the import rules are satisfied; target the import
statement in toHaveLiveRegion.test.ts to make this change.

In `@code/core/src/shared/utils/toHaveLiveRegion.ts`:
- Around line 47-55: The level-inference block for computing effectiveLevel
doesn't treat <output> as implicitly polite, so toHaveLiveRegion can falsely
fail for output elements; update the logic that sets effectiveLevel (the branch
using role === 'status' || role === 'log' and role === 'alert') to include role
=== 'output' in the polite case (i.e., treat 'status', 'log', and 'output' as
polite) while keeping 'alert' -> 'assertive' behavior, referencing the
effectiveLevel, ariaLive and role identifiers to locate the change.

---

Nitpick comments:
In `@code/core/src/shared/utils/toHaveLiveRegion.test.ts`:
- Around line 6-91: Add a regression test to toHaveLiveRegion.test.ts that
asserts an <output> element is treated as polite: create a container with
'<output>Output update</output>' and add an it block that calls
expect(container).toHaveLiveRegion({ text: 'Output update', level: 'polite' })
and also include the inverse expect(() => expect(container).toHaveLiveRegion({
text: 'Output update', level: 'assertive' })).toThrow() to ensure implicit level
inference for role-like elements is covered for the toHaveLiveRegion matcher.

In `@code/core/src/shared/utils/toHaveLiveRegion.ts`:
- Around line 17-18: The docs say the matcher option text is an exact string but
the matcher implementation uses substring matching (includes); update the
implementation in the toHaveLiveRegion matcher so string comparisons use exact
equality and RegExp comparisons require a full-string match: inside the
toHaveLiveRegion matcher (the function that reads the text option), replace any
use of includes for string matching with a strict === comparison against the
element's full text, and when text is a RegExp, test it against the entire
string by anchoring the pattern (e.g. construct a new RegExp like new
RegExp(`^(?:${pattern.source})$`, pattern.flags) and use .test(fullText)) so the
runtime behavior matches the documented semantics for the text property.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 90d7e8fd-3e5f-4c26-96e8-1fe68fd552e1

📥 Commits

Reviewing files that changed from the base of the PR and between eddf60f and 1ceed73.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (7)
  • code/.storybook/storybook.setup.ts
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx
  • code/core/package.json
  • code/core/src/shared/utils/toHaveLiveRegion.test.ts
  • code/core/src/shared/utils/toHaveLiveRegion.ts
  • code/core/vitest.d.ts
  • code/vitest-setup.ts
✅ Files skipped from review due to trivial changes (2)
  • code/.storybook/storybook.setup.ts
  • code/core/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • code/addons/vitest/src/components/TestProviderRender.stories.tsx

Comment thread code/core/src/shared/utils/toHaveLiveRegion.test.ts Outdated
Comment thread code/core/src/shared/utils/toHaveLiveRegion.ts
Copilot AI and others added 12 commits April 2, 2026 16:31
Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
… into TestProviderRender

Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
…tils, clean up stories

Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
…d a11y assertive, refactor stories

Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
Co-authored-by: Sidnioulz <5108577+Sidnioulz@users.noreply.github.com>
@Sidnioulz Sidnioulz force-pushed the copilot/create-aria-live-region-component branch from 914085b to 9dd51cd Compare April 2, 2026 14:34
@Sidnioulz Sidnioulz merged commit ce8c743 into next Apr 2, 2026
91 of 116 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Core Team Projects Apr 2, 2026
@Sidnioulz Sidnioulz deleted the copilot/create-aria-live-region-component branch April 2, 2026 15:33
@github-actions github-actions Bot mentioned this pull request Apr 2, 2026
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[A11y]: Create aria live region component

4 participants