diff --git a/.changeset/three-jokes-bow.md b/.changeset/three-jokes-bow.md
new file mode 100644
index 00000000000..20a3dbe9e18
--- /dev/null
+++ b/.changeset/three-jokes-bow.md
@@ -0,0 +1,5 @@
+---
+"@primer/react": patch
+---
+
+Make sure all components accept `className` as a prop on outermost component element.
diff --git a/packages/react/src/Banner/Banner.test.tsx b/packages/react/src/Banner/Banner.test.tsx
index 7771c22cf3c..13fecdc6fb8 100644
--- a/packages/react/src/Banner/Banner.test.tsx
+++ b/packages/react/src/Banner/Banner.test.tsx
@@ -2,6 +2,7 @@ import {render, screen} from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import React from 'react'
import {Banner} from '../Banner'
+import {FeatureFlags} from '../FeatureFlags'
describe('Banner', () => {
let spy: jest.SpyInstance
@@ -30,8 +31,22 @@ describe('Banner', () => {
})
it('should support a custom `className` on the outermost element', () => {
- const {container} = render()
- expect(container.firstChild).toHaveClass('test')
+ const Element = () =>
+ const FeatureFlagElement = () => {
+ return (
+
+
+
+ )
+ }
+ expect(render().container.firstChild).toHaveClass('test-class-name')
+ expect(render().container.firstChild).toHaveClass('test-class-name')
})
it('should label the landmark element with the corresponding variant label text', () => {
diff --git a/packages/react/src/Breadcrumbs/__tests__/Breadcrumbs.test.tsx b/packages/react/src/Breadcrumbs/__tests__/Breadcrumbs.test.tsx
index 2c92fd0badf..e3fd9c693f7 100644
--- a/packages/react/src/Breadcrumbs/__tests__/Breadcrumbs.test.tsx
+++ b/packages/react/src/Breadcrumbs/__tests__/Breadcrumbs.test.tsx
@@ -3,6 +3,7 @@ import Breadcrumbs, {Breadcrumb} from '..'
import {render, behavesAsComponent, checkExports} from '../../utils/testing'
import {render as HTMLRender} from '@testing-library/react'
import axe from 'axe-core'
+import {FeatureFlags} from '../../FeatureFlags'
describe('Breadcrumbs', () => {
behavesAsComponent({Component: Breadcrumbs, options: {skipAs: true}})
@@ -12,6 +13,25 @@ describe('Breadcrumbs', () => {
Breadcrumb,
})
+ it('should support `className` on the outermost element', () => {
+ const Element = () =>
+ const FeatureFlagElement = () => {
+ return (
+
+
+
+ )
+ }
+ expect(HTMLRender().container.firstChild).toHaveClass('test-class-name')
+ expect(HTMLRender().container.firstChild).toHaveClass('test-class-name')
+ })
+
it('should have no axe violations', async () => {
const {container} = HTMLRender()
const results = await axe.run(container)
diff --git a/packages/react/src/Button/__tests__/Button.test.tsx b/packages/react/src/Button/__tests__/Button.test.tsx
index 4705433bde0..d1a0fe74ee0 100644
--- a/packages/react/src/Button/__tests__/Button.test.tsx
+++ b/packages/react/src/Button/__tests__/Button.test.tsx
@@ -31,6 +31,25 @@ describe('Button', () => {
options: {skipSx: true, skipAs: true},
})
+ it('should support `className` on the outermost element', () => {
+ const Element = () =>
+ const FeatureFlagElement = () => {
+ return (
+
+
+
+ )
+ }
+ expect(render().container.firstChild).toHaveClass('test-class-name')
+ expect(render().container.firstChild).toHaveClass('test-class-name')
+ })
+
it('renders a