diff --git a/packages/react/jest.config.js b/packages/react/jest.config.js index cedf92c332a..e3fd99b2be4 100644 --- a/packages/react/jest.config.js +++ b/packages/react/jest.config.js @@ -19,6 +19,8 @@ module.exports = { '/src/ActionList/', '/src/AnchoredOverlay/', '/src/Autocomplete/', + '/src/Avatar/', + '/src/AvatarStack/', '/src/Banner/', '/src/Blankslate/', '/src/Box/', diff --git a/packages/react/src/Avatar/Avatar.test.tsx b/packages/react/src/Avatar/Avatar.test.tsx index 9e38ce2c7b4..37ce09f89f4 100644 --- a/packages/react/src/Avatar/Avatar.test.tsx +++ b/packages/react/src/Avatar/Avatar.test.tsx @@ -1,55 +1,48 @@ +import {describe, expect, it} from 'vitest' +import {render, screen} from '@testing-library/react' import {Avatar} from '..' +import {ThemeProvider} from '../ThemeProvider' import theme from '../theme' -import {px, render, behavesAsComponent, checkExports} from '../utils/testing' -import {render as HTMLRender, screen} from '@testing-library/react' -import axe from 'axe-core' describe('Avatar', () => { - behavesAsComponent({ - Component: Avatar, - options: { - skipAs: true, - }, - }) - - checkExports('Avatar', { - default: Avatar, - }) - it('should support `className` on the outermost element', () => { const Element = () => - expect(HTMLRender().container.firstChild).toHaveClass('test-class-name') - }) - - it('should have no axe violations', async () => { - const {container} = HTMLRender() - const results = await axe.run(container) - expect(results).toHaveNoViolations() + expect(render().container.firstChild).toHaveClass('test-class-name') }) it('renders small by default', () => { const size = 20 - const result = render() - expect(result.props.width).toEqual(size) - expect(result.props.height).toEqual(size) + render() + const avatar = screen.getByTestId('avatar') + expect(avatar).toHaveAttribute('width', size.toString()) + expect(avatar).toHaveAttribute('height', size.toString()) }) it('respects the size prop', () => { - const result = render() - expect(result.props.width).toEqual(40) - expect(result.props.height).toEqual(40) + render() + const avatar = screen.getByTestId('avatar') + expect(avatar).toHaveAttribute('width', '40') + expect(avatar).toHaveAttribute('height', '40') }) it('passes through the src prop', () => { - expect(render().props.src).toEqual('primer.png') + render() + const avatar = screen.getByTestId('avatar') + expect(avatar).toHaveAttribute('src', 'primer.png') }) it('respects margin props', () => { - expect(render()).toHaveStyleRule('margin', px(theme.space[2])) + render( + + + , + ) + const avatar = screen.getByTestId('avatar') + expect(avatar).toHaveStyle(`margin: 8px`) }) it('should support the `style` prop without overriding internal styles', () => { - HTMLRender( + render( { />, ) - expect(screen.getByTestId('avatar')).toHaveStyle({ - background: 'black', - ['--avatarSize-regular']: '20px', - }) + const avatar = screen.getByTestId('avatar') + + // Test that both the custom CSS property and the style prop are applied + expect(avatar).toHaveStyle('--avatarSize-regular: 20px') + + // Check that style attribute contains both the custom property and the background + const styleAttr = avatar.getAttribute('style') || '' + expect(styleAttr).toContain('--avatarSize-regular: 20px') + expect(styleAttr).toContain('background: black') }) }) diff --git a/packages/react/src/AvatarStack/AvatarStack.test.tsx b/packages/react/src/AvatarStack/AvatarStack.test.tsx index 5ee2f03a1ab..27522df0167 100644 --- a/packages/react/src/AvatarStack/AvatarStack.test.tsx +++ b/packages/react/src/AvatarStack/AvatarStack.test.tsx @@ -1,7 +1,6 @@ +import {describe, expect, it} from 'vitest' +import {render} from '@testing-library/react' import {AvatarStack} from '..' -import {render, behavesAsComponent, checkExports} from '../utils/testing' -import {render as HTMLRender} from '@testing-library/react' -import axe from 'axe-core' const avatarComp = ( @@ -21,17 +20,7 @@ const rightAvatarComp = ( ) -describe('Avatar', () => { - behavesAsComponent({ - Component: AvatarStack, - toRender: () => avatarComp, - options: {skipAs: true}, - }) - - checkExports('AvatarStack', { - default: AvatarStack, - }) - +describe('AvatarStack', () => { it('should support `className` on the outermost element', () => { const Element = () => ( @@ -41,26 +30,21 @@ describe('Avatar', () => { ) - expect(HTMLRender().container.firstChild).toHaveClass('test-class-name') - }) - - it('should have no axe violations', async () => { - const {container} = HTMLRender(avatarComp) - const results = await axe.run(container) - expect(results).toHaveNoViolations() + expect(render().container.firstChild).toHaveClass('test-class-name') }) it('respects alignRight props', () => { - expect(render(rightAvatarComp)).toMatchSnapshot() + const {container} = render(rightAvatarComp) + expect(container.firstChild).toMatchSnapshot() }) it('should have a tabindex of 0 if there are no interactive children', () => { - const {container} = HTMLRender(avatarComp) + const {container} = render(avatarComp) expect(container.querySelector('[tabindex="0"]')).toBeInTheDocument() }) it('should not have a tabindex if there are interactive children', () => { - const {container} = HTMLRender( + const {container} = render( , @@ -69,7 +53,7 @@ describe('Avatar', () => { }) it('should not have a tabindex if disableExpand is true', () => { - const {container} = HTMLRender( + const {container} = render( @@ -80,12 +64,12 @@ describe('Avatar', () => { it('should support `style` prop on the outermost element', () => { const style = {backgroundColor: 'red'} - const {container} = HTMLRender( + const {container} = render( , ) - expect(container.firstChild).toHaveStyle('background-color: red') + expect(container.firstChild).toHaveStyle('background-color: rgb(255, 0, 0)') }) }) diff --git a/packages/react/src/AvatarStack/__snapshots__/AvatarStack.test.tsx.snap b/packages/react/src/AvatarStack/__snapshots__/AvatarStack.test.tsx.snap index 4dff70875f7..f6e033e3abc 100644 --- a/packages/react/src/AvatarStack/__snapshots__/AvatarStack.test.tsx.snap +++ b/packages/react/src/AvatarStack/__snapshots__/AvatarStack.test.tsx.snap @@ -1,42 +1,36 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Avatar respects alignRight props 1`] = ` +exports[`AvatarStack > respects alignRight props 1`] = `
diff --git a/packages/react/vitest.config.browser.mts b/packages/react/vitest.config.browser.mts index c0d91f2dcd5..dea45ae5f61 100644 --- a/packages/react/vitest.config.browser.mts +++ b/packages/react/vitest.config.browser.mts @@ -32,6 +32,8 @@ export default defineConfig({ 'src/ActionList/**/*.test.?(c|m)[jt]s?(x)', 'src/AnchoredOverlay/**/*.test.?(c|m)[jt]s?(x)', 'src/Autocomplete/**/*.test.?(c|m)[jt]s?(x)', + 'src/Avatar/**/*.test.?(c|m)[jt]s?(x)', + 'src/AvatarStack/**/*.test.?(c|m)[jt]s?(x)', 'src/Banner/**/*.test.?(c|m)[jt]s?(x)', 'src/Blankslate/**/*.test.?(c|m)[jt]s?(x)', 'src/Box/**/*.test.?(c|m)[jt]s?(x)',