diff --git a/packages/styled-react/src/__tests__/primer-react-deprecated.browser.test.tsx b/packages/styled-react/src/__tests__/primer-react-deprecated.browser.test.tsx
index dd0a9696a04..1913123d5f0 100644
--- a/packages/styled-react/src/__tests__/primer-react-deprecated.browser.test.tsx
+++ b/packages/styled-react/src/__tests__/primer-react-deprecated.browser.test.tsx
@@ -21,6 +21,7 @@ describe('@primer/react/deprecated', () => {
test('TabNav.Link supports `sx` prop', () => {
render()
+ expect(screen.getByTestId('component')).toHaveAttribute('role', 'tab')
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
expect(window.getComputedStyle(screen.getByRole('tab')).backgroundColor).toBe('rgb(255, 0, 0)')
expect(screen.getByRole('tab').tagName).toBe('BUTTON')
diff --git a/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx b/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx
index 4e2a8fa64fe..86ea2df3afd 100644
--- a/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx
+++ b/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx
@@ -9,7 +9,8 @@ describe('@primer/react/experimental', () => {
})
test('PageHeader supports `sx` prop', () => {
- const {container} = render()
+ const {container} = render()
+ expect(container.firstElementChild!).toHaveAttribute('role', 'article')
expect(window.getComputedStyle(container.firstElementChild!).backgroundColor).toBe('rgb(255, 0, 0)')
})
diff --git a/packages/styled-react/src/__tests__/primer-react.browser.test.tsx b/packages/styled-react/src/__tests__/primer-react.browser.test.tsx
index 02a3e986dd1..33ed2c72e22 100644
--- a/packages/styled-react/src/__tests__/primer-react.browser.test.tsx
+++ b/packages/styled-react/src/__tests__/primer-react.browser.test.tsx
@@ -47,8 +47,9 @@ import {
describe('@primer/react', () => {
test('ActionList supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('data-variant', 'inset')
})
test('ActionMenu.Button supports `sx` prop', () => {
@@ -109,7 +110,7 @@ describe('@primer/react', () => {
})
test('Box supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
})
@@ -119,13 +120,15 @@ describe('@primer/react', () => {
})
test('Breadcrumbs.Item supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component').className.includes('selected')).toBe(true)
})
test('Button supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('data-size', 'medium')
})
test('Checkbox supports `sx` prop', () => {
@@ -183,8 +186,9 @@ describe('@primer/react', () => {
})
test('Flash supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('variant', 'success')
})
test('FormControl supports `sx` prop', () => {
@@ -197,7 +201,7 @@ describe('@primer/react', () => {
})
test('Header supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
})
@@ -207,23 +211,40 @@ describe('@primer/react', () => {
})
test('IconButton supports `sx` prop', () => {
- render( } />)
+ render(
+ }
+ />,
+ )
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+
+ // Test that IconButton renders the icon component (SVG) in its children
+ const iconButton = screen.getByTestId('component')
+ const svgElement = iconButton.querySelector('svg')
+ expect(svgElement).toBeInTheDocument()
+ expect(iconButton.children.length).toBeGreaterThan(0)
})
test('Label supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('data-size', 'large')
})
test('Link supports `sx` prop', () => {
- render()
+ render()
+ expect(screen.getByTestId('component')).toHaveAttribute('data-inline', 'true')
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
})
test('LinkButton supports `sx` prop', () => {
- render()
+ render(} />)
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('icon')
})
test('NavList supports `sx` prop', () => {
@@ -285,19 +306,23 @@ describe('@primer/react', () => {
render(
{}}
onEscape={() => {}}
returnFocusRef={ref}
+ role="dialog"
/>
,
)
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('role', 'dialog')
})
test('PageHeader supports `sx` prop', () => {
- const {container} = render()
+ const {container} = render()
+ expect(container.firstElementChild!).toHaveAttribute('role', 'article')
expect(window.getComputedStyle(container.firstElementChild!).backgroundColor).toBe('rgb(255, 0, 0)')
})
@@ -322,8 +347,13 @@ describe('@primer/react', () => {
})
test('PageLayout.Content supports `sx` prop', () => {
- const {container} = render()
- expect(window.getComputedStyle(container.firstElementChild!).backgroundColor).toBe('rgb(255, 0, 0)')
+ const {container} = render(
+ ,
+ )
+
+ const outerElement = container.firstElementChild! as HTMLElement
+ expect(window.getComputedStyle(outerElement).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(outerElement).toHaveAttribute('aria-labelledby', 'normal')
})
test('PageLayout.Pane supports `sx` prop', () => {
@@ -385,8 +415,9 @@ describe('@primer/react', () => {
})
test.skip('Select supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('required')
})
test('Spinner supports `sx` prop', () => {
@@ -410,13 +441,15 @@ describe('@primer/react', () => {
})
test('Text supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('data-size', 'small')
})
test('TextInput supports `sx` prop', () => {
- const {container} = render()
+ const {container} = render()
expect(window.getComputedStyle(container.firstElementChild!).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(container.firstElementChild).toHaveAttribute('data-trailing-visual', 'true')
})
test('TextInput.Action supports `sx` prop', () => {
@@ -455,8 +488,9 @@ describe('@primer/react', () => {
})
test('Token supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveTextContent('test')
})
test.todo('Tooltip supports `sx` prop', () => {
@@ -469,25 +503,29 @@ describe('@primer/react', () => {
})
test('Truncate supports `sx` prop', () => {
- render()
+ render()
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByTestId('component')).toHaveAttribute('title', 'test')
})
test('UnderlineNav supports `sx` prop', () => {
render(
-
- test
+
+ test
,
)
expect(window.getComputedStyle(screen.getByLabelText('navigation')).backgroundColor).toBe('rgb(255, 0, 0)')
+ expect(screen.getByLabelText('navigation')).toHaveAttribute('data-variant', 'inset')
})
test('UnderlineNav.Item supports `sx` prop', () => {
render(
-
+ }>
test
,
)
expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)')
+ const svgElement = screen.getByTestId('component').querySelector('svg')
+ expect(svgElement).toBeInTheDocument()
})
})