diff --git a/packages/react/src/InlineMessage/InlineMessage.test.tsx b/packages/react/src/InlineMessage/InlineMessage.test.tsx
index 4678a2e5ded..bc39f43afc9 100644
--- a/packages/react/src/InlineMessage/InlineMessage.test.tsx
+++ b/packages/react/src/InlineMessage/InlineMessage.test.tsx
@@ -3,8 +3,12 @@ import {describe, expect, it, test} from 'vitest'
import {InfoIcon} from '@primer/octicons-react'
import {InlineMessage} from '../InlineMessage'
import React from 'react'
+import {implementsClassName} from '../utils/testing'
+import classes from './InlineMessage.module.css'
describe('InlineMessage', () => {
+ implementsClassName(InlineMessage, classes.InlineMessage)
+
it('should render content passed as `children`', () => {
render(
test contents)
expect(screen.getByText('test contents')).toBeInTheDocument()
diff --git a/packages/react/src/KeybindingHint/KeybindingHint.test.tsx b/packages/react/src/KeybindingHint/KeybindingHint.test.tsx
index 4d07de3532e..ba86fb831fb 100644
--- a/packages/react/src/KeybindingHint/KeybindingHint.test.tsx
+++ b/packages/react/src/KeybindingHint/KeybindingHint.test.tsx
@@ -2,8 +2,11 @@ import {describe, expect, it} from 'vitest'
import {render, screen} from '@testing-library/react'
import {KeybindingHint, getAccessibleKeybindingHintString} from '../KeybindingHint'
+import {implementsClassName} from '../utils/testing'
describe('KeybindingHint', () => {
+ implementsClassName(props =>
)
+
it('renders condensed keys by default', () => {
render(
)
for (const icon of ['⇧', '⌃', 'Fn', 'PgUp']) {
diff --git a/packages/react/src/Label/Label.test.tsx b/packages/react/src/Label/Label.test.tsx
index bd6a7f4817b..d364cf5aaf2 100644
--- a/packages/react/src/Label/Label.test.tsx
+++ b/packages/react/src/Label/Label.test.tsx
@@ -1,12 +1,12 @@
import {describe, expect, it} from 'vitest'
import {render} from '@testing-library/react'
import Label from '../Label'
+import {implementsClassName} from '../utils/testing'
+import classes from './Label.module.css'
describe('Label', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () =>
- expect(render(
).container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Label, classes.Label)
+
it('renders text node child', () => {
const rendered = render(
)
expect(rendered.container.textContent).toEqual('Default')
diff --git a/packages/react/src/Label/Label.tsx b/packages/react/src/Label/Label.tsx
index 640d16e2de0..08291111d69 100644
--- a/packages/react/src/Label/Label.tsx
+++ b/packages/react/src/Label/Label.tsx
@@ -1,5 +1,3 @@
-// TODO: merge https://github.com/primer/react/pull/6631 which removes `Box` usage
-
import {clsx} from 'clsx'
import classes from './Label.module.css'
import React from 'react'
diff --git a/packages/react/src/LabelGroup/LabelGroup.test.tsx b/packages/react/src/LabelGroup/LabelGroup.test.tsx
index 2013078c7eb..e9ef4ad7122 100644
--- a/packages/react/src/LabelGroup/LabelGroup.test.tsx
+++ b/packages/react/src/LabelGroup/LabelGroup.test.tsx
@@ -4,6 +4,8 @@ import {describe, it, expect, vi} from 'vitest'
import BaseStyles from '../BaseStyles'
import {LabelGroup, Label} from '..'
import userEvent from '@testing-library/user-event'
+import {implementsClassName} from '../utils/testing'
+import classes from './LabelGroup.module.css'
const ThemeAndStyleContainer: React.FC
= ({children}) => {children}
@@ -14,6 +16,8 @@ const AutoTruncateContainer: React.FC {
+ implementsClassName(LabelGroup, classes.Container)
+
window.IntersectionObserver = vi.fn(function () {
return {
observe,
diff --git a/packages/react/src/Link/__tests__/Link.test.tsx b/packages/react/src/Link/__tests__/Link.test.tsx
index 142ab485496..56907955641 100644
--- a/packages/react/src/Link/__tests__/Link.test.tsx
+++ b/packages/react/src/Link/__tests__/Link.test.tsx
@@ -1,12 +1,11 @@
import {describe, expect, it, vi} from 'vitest'
import {render} from '@testing-library/react'
import Link from '../Link'
+import classes from '../Link.module.css'
+import {implementsClassName} from '../../utils/testing'
describe('Link', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () =>
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Link, classes.Link)
it('passes href down to link element', () => {
const {container} = render()
diff --git a/packages/react/src/NavList/NavList.test.tsx b/packages/react/src/NavList/NavList.test.tsx
index a7da2521f13..1edc5bbef7e 100644
--- a/packages/react/src/NavList/NavList.test.tsx
+++ b/packages/react/src/NavList/NavList.test.tsx
@@ -4,6 +4,7 @@ import React from 'react'
import {NavList} from './NavList'
import {FeatureFlags} from '../FeatureFlags'
import {ReactRouterLikeLink} from '../Pagination/mocks/ReactRouterLink'
+import {implementsClassName} from '../utils/testing'
type NextJSLinkProps = {href: string; children: React.ReactNode}
@@ -21,6 +22,8 @@ const NextJSLikeLink = React.forwardRef(
)
describe('NavList', () => {
+ implementsClassName(NavList)
+
it('supports TrailingAction', async () => {
const {getByRole} = render(
@@ -37,6 +40,7 @@ describe('NavList', () => {
})
describe('NavList.Item', () => {
+ implementsClassName(NavList.Item)
it('passes aria-current prop to the underlying link', () => {
const {getByRole} = render(
diff --git a/packages/react/src/Octicon/Octicon.test.tsx b/packages/react/src/Octicon/Octicon.test.tsx
index 950f3adaed4..1ece76722bd 100644
--- a/packages/react/src/Octicon/Octicon.test.tsx
+++ b/packages/react/src/Octicon/Octicon.test.tsx
@@ -2,12 +2,10 @@ import {XIcon} from '@primer/octicons-react'
import {render} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import Octicon from '../Octicon'
+import {implementsClassName} from '../utils/testing'
describe('Octicon', () => {
- it('should support `className` on the outermost element', () => {
- const {container} = render()
- expect(container.firstChild).toHaveClass('test-class')
- })
+ implementsClassName(props => )
it('should pass along props to the outermost element', () => {
const {container} = render()
diff --git a/packages/react/src/Overlay/Overlay.test.tsx b/packages/react/src/Overlay/Overlay.test.tsx
index b3a9ebf805b..d6dde8d506e 100644
--- a/packages/react/src/Overlay/Overlay.test.tsx
+++ b/packages/react/src/Overlay/Overlay.test.tsx
@@ -8,6 +8,8 @@ import Text from '../Text'
import BaseStyles from '../BaseStyles'
import {NestedOverlays, MemexNestedOverlays, MemexIssueOverlay, PositionedOverlays} from './Overlay.features.stories'
import {FeatureFlags} from '../FeatureFlags'
+import {implementsClassName} from '../utils/testing'
+import classes from './Overlay.module.css'
type TestComponentSettings = {
initialFocus?: 'button'
@@ -81,6 +83,18 @@ const TestComponent = ({
}
describe('Overlay', () => {
+ implementsClassName(props => {
+ const returnFocusRef = useRef(null)
+ return (
+
+
+
+ test content
+
+
+ )
+ }, classes.Overlay)
+
it('should focus initialFocusRef element passed into function on open', async () => {
const user = userEvent.setup()
const {getByRole} = render()
diff --git a/packages/react/src/PageHeader/PageHeader.test.tsx b/packages/react/src/PageHeader/PageHeader.test.tsx
index 3395ee68223..a66f648d4bc 100644
--- a/packages/react/src/PageHeader/PageHeader.test.tsx
+++ b/packages/react/src/PageHeader/PageHeader.test.tsx
@@ -1,8 +1,25 @@
import {describe, expect, it, vi} from 'vitest'
import {render} from '@testing-library/react'
import {PageHeader} from '.'
+import {implementsClassName} from '../utils/testing'
+import classes from './PageHeader.module.css'
describe('PageHeader', () => {
+ implementsClassName(PageHeader, classes.PageHeader)
+ implementsClassName(PageHeader.ContextArea, classes.ContextArea)
+ implementsClassName(PageHeader.ParentLink, classes.ParentLink)
+ implementsClassName(PageHeader.ContextBar, classes.ContextBar)
+ implementsClassName(PageHeader.TitleArea, classes.TitleArea)
+ implementsClassName(PageHeader.ContextAreaActions, classes.ContextAreaActions)
+ implementsClassName(PageHeader.LeadingAction, classes.LeadingAction)
+ implementsClassName(PageHeader.Breadcrumbs, classes.Breadcrumbs)
+ implementsClassName(PageHeader.LeadingVisual, classes.LeadingVisual)
+ implementsClassName(PageHeader.Title, classes.Title)
+ implementsClassName(PageHeader.TrailingVisual, classes.TrailingVisual)
+ implementsClassName(PageHeader.TrailingAction, classes.TrailingAction)
+ implementsClassName(PageHeader.Actions, classes.Actions)
+ implementsClassName(PageHeader.Description, classes.Description)
+ implementsClassName(PageHeader.Navigation, classes.Navigation)
it('respects the title variant prop', () => {
const {getByText} = render(
diff --git a/packages/react/src/PageLayout/PageLayout.test.tsx b/packages/react/src/PageLayout/PageLayout.test.tsx
index 36a0d6098de..6ca0100ad79 100644
--- a/packages/react/src/PageLayout/PageLayout.test.tsx
+++ b/packages/react/src/PageLayout/PageLayout.test.tsx
@@ -5,8 +5,12 @@ import 'react-intersection-observer/test-utils'
import {viewportRanges} from '../hooks/useResponsiveValue'
import {PageLayout} from './PageLayout'
import {Placeholder} from '../Placeholder'
+import {implementsClassName} from '../utils/testing'
+import classes from './PageLayout.module.css'
describe('PageLayout', async () => {
+ implementsClassName(PageLayout, classes.PageLayoutRoot)
+
await page.viewport(1280, 800)
it('renders default layout', () => {
const {container} = render(
@@ -135,6 +139,7 @@ describe('PageLayout', async () => {
})
describe('PageLayout.Pane', () => {
+ implementsClassName(PageLayout.Pane, classes.PaneWrapper)
it('should support a ref on the element wrapping the contents of Pane', () => {
const ref = vi.fn()
render(
@@ -232,6 +237,7 @@ describe('PageLayout', async () => {
})
describe('PageLayout.Content', () => {
+ implementsClassName(PageLayout.Content, classes.ContentWrapper)
it('should support a custom element type with the `as` prop', () => {
const {container} = render(
diff --git a/packages/react/src/Pagehead/Pagehead.test.tsx b/packages/react/src/Pagehead/Pagehead.test.tsx
index d2c8b92b4a8..2a25c3ae858 100644
--- a/packages/react/src/Pagehead/Pagehead.test.tsx
+++ b/packages/react/src/Pagehead/Pagehead.test.tsx
@@ -1,12 +1,11 @@
import {render} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import Pagehead from '../Pagehead'
+import {implementsClassName} from '../utils/testing'
+import classes from './Pagehead.module.css'
describe('Pagehead', () => {
- it('should support `className` on the outermost element', () => {
- const {container} = render(Pagehead)
- expect(container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Pagehead, classes.Pagehead)
it('should support attributes on the outermost element', () => {
const {container} = render(
diff --git a/packages/react/src/Pagination/Pagination.test.tsx b/packages/react/src/Pagination/Pagination.test.tsx
index f2b1c62ad77..39a6c440f64 100644
--- a/packages/react/src/Pagination/Pagination.test.tsx
+++ b/packages/react/src/Pagination/Pagination.test.tsx
@@ -2,8 +2,12 @@ import {render as HTMLRender} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import Pagination from '../Pagination'
import {ReactRouterLikeLink} from './mocks/ReactRouterLink'
+import {implementsClassName} from '../utils/testing'
+import classes from './Pagination.module.css'
describe('Pagination', () => {
+ implementsClassName(props => , classes.PaginationContainer)
+
it('should render links instead of anchor tags with the renderPage prop', () => {
const {container} = HTMLRender(
{
- it('should support `className` on the outermost element', () => {
- const Element = () =>
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Popover, classes.Popover)
+ implementsClassName(Popover.Content, classes.PopoverContent)
const CARET_POSITIONS: PopoverProps['caret'][] = [
'top',
diff --git a/packages/react/src/ProgressBar/ProgressBar.test.tsx b/packages/react/src/ProgressBar/ProgressBar.test.tsx
index 11a6f1f4c5c..0321ee0daea 100644
--- a/packages/react/src/ProgressBar/ProgressBar.test.tsx
+++ b/packages/react/src/ProgressBar/ProgressBar.test.tsx
@@ -1,14 +1,12 @@
import {describe, expect, it} from 'vitest'
import {ProgressBar} from '..'
import {render} from '@testing-library/react'
+import {implementsClassName} from '../utils/testing'
+import classes from './ProgressBar.module.css'
describe('ProgressBar', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () => (
-
- )
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(ProgressBar, classes.ProgressBarContainer)
+ implementsClassName(ProgressBar.Item, classes.ProgressBarItem)
it('respects the "barSize" prop', () => {
const barSizeSmall = render()
diff --git a/packages/react/src/Radio/Radio.test.tsx b/packages/react/src/Radio/Radio.test.tsx
index 73d56d1a5cb..854eb350790 100644
--- a/packages/react/src/Radio/Radio.test.tsx
+++ b/packages/react/src/Radio/Radio.test.tsx
@@ -1,8 +1,11 @@
import {describe, it, expect, beforeEach, vi} from 'vitest'
import {Radio} from '..'
import {render, fireEvent} from '@testing-library/react'
+import {implementsClassName} from '../utils/testing'
+import classes from './Radio.module.css'
describe('Radio', () => {
+ implementsClassName(Radio, classes.Radio)
const defaultProps = {
name: 'mock',
value: 'mock value',
@@ -12,11 +15,6 @@ describe('Radio', () => {
vi.resetAllMocks()
})
- it('should support `className` on the outermost element', () => {
- const Element = () =>
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
-
it('renders a valid radio input', () => {
const {getByRole} = render()
diff --git a/packages/react/src/RadioGroup/RadioGroup.test.tsx b/packages/react/src/RadioGroup/RadioGroup.test.tsx
index 4dd5c8e5c0c..791e9e5188c 100644
--- a/packages/react/src/RadioGroup/RadioGroup.test.tsx
+++ b/packages/react/src/RadioGroup/RadioGroup.test.tsx
@@ -2,8 +2,13 @@ import {describe, it, expect, beforeAll, afterAll, vi} from 'vitest'
import {render} from '@testing-library/react'
import {RadioGroup, FormControl, Radio} from '..'
import userEvent from '@testing-library/user-event'
+import {implementsClassName} from '../utils/testing'
+import classes from '../internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.module.css'
describe('RadioGroup', () => {
+ implementsClassName(RadioGroup, classes.GroupFieldset)
+ implementsClassName(RadioGroup.Caption, classes.CheckboxOrRadioGroupCaption)
+ implementsClassName(RadioGroup.Label, classes.RadioGroupLabel)
const mockWarningFn = vi.fn()
beforeAll(() => {
diff --git a/packages/react/src/RelativeTime/RelativeTime.test.tsx b/packages/react/src/RelativeTime/RelativeTime.test.tsx
index d84ea0f877b..668d1a259c0 100644
--- a/packages/react/src/RelativeTime/RelativeTime.test.tsx
+++ b/packages/react/src/RelativeTime/RelativeTime.test.tsx
@@ -1,8 +1,10 @@
import {describe, expect, it} from 'vitest'
import {RelativeTime} from '..'
import {render} from '@testing-library/react'
+import {implementsClassName} from '../utils/testing'
describe('RelativeTime', () => {
+ implementsClassName(RelativeTime)
it('renders a ', () => {
const {container} = render()
expect(container.firstChild?.nodeName.toLowerCase()).toEqual('relative-time')
diff --git a/packages/react/src/ScrollableRegion/ScrollableRegion.test.tsx b/packages/react/src/ScrollableRegion/ScrollableRegion.test.tsx
index de1fa40ea35..0107b335721 100644
--- a/packages/react/src/ScrollableRegion/ScrollableRegion.test.tsx
+++ b/packages/react/src/ScrollableRegion/ScrollableRegion.test.tsx
@@ -2,10 +2,14 @@ import {describe, expect, test, beforeEach, afterEach} from 'vitest'
import {render, screen} from '@testing-library/react'
import {act} from 'react'
import {ScrollableRegion} from '../ScrollableRegion'
+import {implementsClassName} from '../utils/testing'
+import classes from './ScrollableRegion.module.css'
const originalResizeObserver = window.ResizeObserver
describe('ScrollableRegion', () => {
+ implementsClassName(ScrollableRegion, classes.ScrollableRegion)
+
let mockResizeCallback: (entries: Array) => void
beforeEach(() => {
diff --git a/packages/react/src/SegmentedControl/SegmentedControl.test.tsx b/packages/react/src/SegmentedControl/SegmentedControl.test.tsx
index fd7aa2e1966..6a637d1ba30 100644
--- a/packages/react/src/SegmentedControl/SegmentedControl.test.tsx
+++ b/packages/react/src/SegmentedControl/SegmentedControl.test.tsx
@@ -4,6 +4,8 @@ import userEvent from '@testing-library/user-event'
import {describe, expect, it, vi} from 'vitest'
import BaseStyles from '../BaseStyles'
import {SegmentedControl} from '../SegmentedControl'
+import {implementsClassName} from '../utils/testing'
+import classes from './SegmentedControl.module.css'
const segmentData = [
{
@@ -30,6 +32,8 @@ const segmentData = [
]
describe('SegmentedControl', () => {
+ implementsClassName(SegmentedControl, classes.SegmentedControl)
+
it('renders with a selected segment - controlled', () => {
const {getByText} = render(
diff --git a/packages/react/src/Select/Select.test.tsx b/packages/react/src/Select/Select.test.tsx
index 1b1bab2d34f..7146bdb0f2f 100644
--- a/packages/react/src/Select/Select.test.tsx
+++ b/packages/react/src/Select/Select.test.tsx
@@ -2,28 +2,13 @@ import {describe, expect, it} from 'vitest'
import {Select} from '..'
import {render} from '@testing-library/react'
import userEvent from '@testing-library/user-event'
+import {implementsClassName} from '../utils/testing'
+import classes from './Select.module.css'
describe('Select', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () => (
- <>
-
-
- >
- )
- const {container} = render()
- const select = container.querySelector('select')
- const wrapper = container.querySelector('span.test-class-name')
- expect(wrapper).toContainElement(select)
- expect(wrapper).toHaveClass('test-class-name')
- })
+ implementsClassName(Select, classes.TextInputWrapper)
+ implementsClassName(Select.Option)
+ implementsClassName(Select.OptGroup)
it('renders a select input', () => {
const {getByLabelText} = render(
diff --git a/packages/react/src/SelectPanel/SelectPanel.test.tsx b/packages/react/src/SelectPanel/SelectPanel.test.tsx
index 57c2b8cbb98..fae621080c7 100644
--- a/packages/react/src/SelectPanel/SelectPanel.test.tsx
+++ b/packages/react/src/SelectPanel/SelectPanel.test.tsx
@@ -9,6 +9,7 @@ import type {LiveRegionElement} from '@primer/live-region-element'
import {IconButton} from '../Button'
import {ArrowLeftIcon} from '@primer/octicons-react'
import classes from './SelectPanel.test.module.css'
+import {implementsClassName} from '../utils/testing'
// Instead of importing from live-region/__tests__/test-helpers.ts, we define our own getLiveRegion function
export function getLiveRegion(): LiveRegionElement {
@@ -73,6 +74,7 @@ globalThis.Element.prototype.scrollTo = vi.fn()
for (const usingRemoveActiveDescendant of [false, true]) {
describe('SelectPanel', () => {
+ implementsClassName(props => , classes.FilteredActionList)
it('should render an anchor to open the select panel using `placeholder`', () => {
renderWithProp()
diff --git a/packages/react/src/Skeleton/__tests__/SkeletonBox.test.tsx b/packages/react/src/Skeleton/__tests__/SkeletonBox.test.tsx
index 27e275836d9..541b26fb973 100644
--- a/packages/react/src/Skeleton/__tests__/SkeletonBox.test.tsx
+++ b/packages/react/src/Skeleton/__tests__/SkeletonBox.test.tsx
@@ -1,11 +1,11 @@
import {render} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import {SkeletonBox} from '../SkeletonBox'
+import classes from '../SkeletonBox.module.css'
+import {implementsClassName} from '../../utils/testing'
describe('SkeletonBox', () => {
- it('should support `className` on the outermost element', () => {
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(SkeletonBox, classes.SkeletonBox)
it('uses the default size when size is not provided', () => {
const {container} = render()
diff --git a/packages/react/src/SkeletonAvatar/SkeletonAvatar.test.tsx b/packages/react/src/SkeletonAvatar/SkeletonAvatar.test.tsx
index 3a2e0949e4b..b250976e2da 100644
--- a/packages/react/src/SkeletonAvatar/SkeletonAvatar.test.tsx
+++ b/packages/react/src/SkeletonAvatar/SkeletonAvatar.test.tsx
@@ -2,8 +2,12 @@ import {render} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import {SkeletonAvatar} from '../SkeletonAvatar'
import {DEFAULT_AVATAR_SIZE} from '../Avatar/Avatar'
+import {implementsClassName} from '../utils/testing'
+import classes from './SkeletonAvatar.module.css'
describe('SkeletonAvatar', () => {
+ implementsClassName(SkeletonAvatar, classes.SkeletonAvatar)
+
it('applies the given size', () => {
const {container} = render()
expect(container.firstChild).toHaveStyle('--avatarSize-regular: 48px;')
diff --git a/packages/react/src/SkeletonText/SkeletonText.test.tsx b/packages/react/src/SkeletonText/SkeletonText.test.tsx
index c05003d85b7..afa2a0823d1 100644
--- a/packages/react/src/SkeletonText/SkeletonText.test.tsx
+++ b/packages/react/src/SkeletonText/SkeletonText.test.tsx
@@ -1,12 +1,11 @@
import {render} from '@testing-library/react'
import {describe, expect, it} from 'vitest'
import {SkeletonText} from '../SkeletonText'
+import {implementsClassName} from '../utils/testing'
+import classes from './SkeletonText.module.css'
describe('SkeletonText', () => {
- it('should support `className` on the outermost element', () => {
- const {container} = render()
- expect(container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(SkeletonText, classes.SkeletonText)
it('should support spreading extra props on the outermost element', () => {
const {container} = render()
diff --git a/packages/react/src/Spinner/Spinner.test.tsx b/packages/react/src/Spinner/Spinner.test.tsx
index 2b639f5b521..735d7d61a81 100644
--- a/packages/react/src/Spinner/Spinner.test.tsx
+++ b/packages/react/src/Spinner/Spinner.test.tsx
@@ -3,12 +3,11 @@ import {Spinner} from '..'
import {render, screen} from '@testing-library/react'
import {describe, expect, it, vi, beforeEach, afterEach} from 'vitest'
import {act} from 'react'
+import {implementsClassName} from '../utils/testing'
+import classes from './Spinner.module.css'
describe('Spinner', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () =>
- expect(render().container.firstChild?.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Spinner, classes.SpinnerAnimation)
it('should label the spinner with default loading text', async () => {
const {getByLabelText} = render()
diff --git a/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx b/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
index 07a728a64ff..0cc036ad5f5 100644
--- a/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
+++ b/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
@@ -2,8 +2,11 @@ import {describe, it, expect} from 'vitest'
import {render} from '@testing-library/react'
import 'react-intersection-observer/test-utils'
import {SplitPageLayout} from '../SplitPageLayout/SplitPageLayout'
+import {implementsClassName} from '../utils/testing'
describe('SplitPageLayout', () => {
+ implementsClassName(SplitPageLayout)
+
it('renders Pane with a custom ID', () => {
const {getByText} = render(
diff --git a/packages/react/src/Stack/__tests__/Stack.test.tsx b/packages/react/src/Stack/__tests__/Stack.test.tsx
index 2c0dbb59473..92527d86101 100644
--- a/packages/react/src/Stack/__tests__/Stack.test.tsx
+++ b/packages/react/src/Stack/__tests__/Stack.test.tsx
@@ -2,11 +2,11 @@ import {describe, expect, it, vi} from 'vitest'
import {render, screen} from '@testing-library/react'
import type React from 'react'
import {Stack} from '../Stack'
+import {implementsClassName} from '../../utils/testing'
+import classes from '../Stack.module.css'
describe('Stack', () => {
- it('should support `className` on the outermost element', () => {
- expect(render().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(Stack, classes.Stack)
it('should support rendering content through `children`', () => {
render(
diff --git a/packages/react/src/Stack/__tests__/StackItem.test.tsx b/packages/react/src/Stack/__tests__/StackItem.test.tsx
index b706c6ad76b..91566b91e1c 100644
--- a/packages/react/src/Stack/__tests__/StackItem.test.tsx
+++ b/packages/react/src/Stack/__tests__/StackItem.test.tsx
@@ -2,18 +2,11 @@ import {describe, expect, it, vi} from 'vitest'
import {render, screen} from '@testing-library/react'
import type React from 'react'
import {Stack, StackItem} from '../Stack'
+import {implementsClassName} from '../../utils/testing'
+import classes from '../Stack.module.css'
describe('StackItem', () => {
- it('should support `className` on the outermost element', () => {
- const Element = () => (
-
-
- Content
-
-
- )
- expect(render().getAllByTestId('stack-item')[0]).toHaveClass('test-class-name')
- })
+ implementsClassName(StackItem, classes.StackItem)
it('should render its children', () => {
render(
diff --git a/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx b/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
index f3aa0a10963..d76e0803edd 100644
--- a/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
+++ b/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
@@ -1,8 +1,12 @@
import {describe, expect, it} from 'vitest'
import StateLabel from '../StateLabel'
import {render as HTMLRender} from '@testing-library/react'
+import {implementsClassName} from '../../utils/testing'
+import classes from '../StateLabel.module.css'
describe('StateLabel', () => {
+ implementsClassName(props => , classes.StateLabel)
+
it('respects the status prop', () => {
expect(HTMLRender().container).toMatchSnapshot()
expect(HTMLRender().container).toMatchSnapshot()
diff --git a/packages/react/src/SubNav/SubNav.test.tsx b/packages/react/src/SubNav/SubNav.test.tsx
index 45f0e26055e..c9f128e0171 100644
--- a/packages/react/src/SubNav/SubNav.test.tsx
+++ b/packages/react/src/SubNav/SubNav.test.tsx
@@ -1,11 +1,12 @@
import {describe, expect, it} from 'vitest'
import {SubNav} from '..'
import {render as HTMLRender} from '@testing-library/react'
+import {implementsClassName} from '../utils/testing'
+import classes from './SubNav.module.css'
describe('SubNav', () => {
- it('should support `className` on the outermost element', () => {
- expect(HTMLRender().container.firstChild).toHaveClass('test-class-name')
- })
+ implementsClassName(SubNav, classes.SubNav)
+ implementsClassName(SubNav.Links, classes.Links)
it('renders a