Files
lucide/packages/shared/tests/hasA11yProp.spec.ts
b6ed43d48c feat(packages): Added aria-hidden fallback for decorative icons to all packages (#3604)
* Add aria hidden to lucide package

* Add aria-hidden to astro package

* Add tests for shared package

* Fix test for props

* add aria prop to lucide-solid

* Add aria-hidden to lucide-vue-next

* Add aria-hidden prop to angular package

* Fix builds

* Add notice about aria-label in docs

* Format code

* Update packages/svelte/tests/Icon.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/lucide-svelte/tests/Icon.spec.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/shared/src/utils/hasA11yProp.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Adjusted docs

* Fix import

* update tests

* test(shared): fix hasA11yProp unit test

* fix(packages/lucide-angular): fix hasA11yProp import path (non-relative import path will not get properly resolved by ng-packagr)

* Format code

* Adjust aria props to root element

* Format code

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-01-20 15:55:02 +01:00

31 lines
1.1 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { hasA11yProp } from '../src/utils/hasA11yProp';
describe('hasA11yProp', () => {
it('returns true if props contain an aria- attribute', () => {
expect(hasA11yProp({ 'aria-label': 'Close' })).toBe(true);
expect(hasA11yProp({ 'aria-hidden': true })).toBe(true);
});
it('returns true if props contain a role attribute', () => {
expect(hasA11yProp({ role: 'button' })).toBe(true);
});
it('returns true if props contain a title attribute', () => {
expect(hasA11yProp({ title: 'Icon' })).toBe(true);
});
it('returns false if props do not contain any a11y attributes', () => {
expect(hasA11yProp({ className: 'foo', id: 'bar' })).toBe(false);
expect(hasA11yProp({})).toBe(false);
});
it('returns true if multiple a11y props are present', () => {
expect(hasA11yProp({ 'aria-label': 'Close', role: 'button', title: 'Close icon' })).toBe(true);
});
it('returns true if a11y prop is present among other props', () => {
expect(hasA11yProp({ className: 'foo', 'aria-label': 'Close' })).toBe(true);
});
});