88import React , { cloneElement } from 'react' ;
99import { render , screen , act , waitFor } from '@testing-library/react' ;
1010import userEvent from '@testing-library/user-event' ;
11+ import { composeStory } from '@storybook/react-vite' ;
12+ import meta , { Compact , Default } from './PageHeader.stories' ;
1113import { preview__PageHeader as PageHeader , pkg } from '../../..' ;
1214import {
1315 PageHeader as PageHeaderDirect ,
@@ -75,13 +77,12 @@ describe('PageHeader', () => {
7577
7678 it ( 'should update css variable for sticky positioning' , ( ) => {
7779 const testId = 'page-header-next-test-id' ;
78- render (
79- < PageHeader . Root data-testid = { testId } >
80- < PageHeader . BreadcrumbBar />
81- < PageHeader . Content title = "title" />
82- < PageHeader . TabBar />
83- </ PageHeader . Root >
84- ) ;
80+ const DefaultStory = composeStory ( Default , meta , {
81+ args : {
82+ 'data-testid' : testId ,
83+ } ,
84+ } ) ;
85+ render ( < DefaultStory /> ) ;
8586 triggerResize ( ) ;
8687 const computedStyle = window . getComputedStyle ( screen . getByTestId ( testId ) ) ;
8788 expect (
@@ -97,13 +98,8 @@ describe('PageHeader', () => {
9798 } ) ;
9899
99100 it ( 'supports dot notation component namespacing from the main entrypoint' , ( ) => {
100- const { container } = render (
101- < PageHeader . Root >
102- < PageHeader . BreadcrumbBar />
103- < PageHeader . Content title = "title" />
104- < PageHeader . TabBar />
105- </ PageHeader . Root >
106- ) ;
101+ const DefaultStory = composeStory ( Default , meta ) ;
102+ const { container } = render ( < DefaultStory /> ) ;
107103 expect ( container . firstChild ) . toBeInTheDocument ( ) ;
108104 } ) ;
109105
@@ -126,10 +122,15 @@ describe('PageHeader', () => {
126122 } ) ;
127123
128124 it ( 'should place className on the outermost element' , ( ) => {
129- const { container } = render (
130- < PageHeader . Root className = "custom-class" />
131- ) ;
132- expect ( container . firstChild ) . toHaveClass ( 'custom-class' ) ;
125+ const DefaultStory = composeStory ( Default , meta , {
126+ args : {
127+ className : 'custom-class' ,
128+ role : 'banner' ,
129+ } ,
130+ } ) ;
131+ render ( < DefaultStory /> ) ;
132+ const pageHeaderOuter = screen . getByRole ( 'banner' ) ;
133+ expect ( pageHeaderOuter ) . toHaveClass ( 'custom-class' ) ;
133134 } ) ;
134135 } ) ;
135136
@@ -170,18 +171,15 @@ describe('PageHeader', () => {
170171 } ) ;
171172
172173 it ( 'should render breadcrumb items' , ( ) => {
173- const { container } = render (
174- < PageHeader . Root >
175- < PageHeader . BreadcrumbBar >
176- < Breadcrumb >
177- < BreadcrumbItem href = "/#" > Breadcrumb 1</ BreadcrumbItem >
178- < BreadcrumbItem href = "#" > Breadcrumb 2</ BreadcrumbItem >
179- </ Breadcrumb >
180- </ PageHeader . BreadcrumbBar >
181- </ PageHeader . Root >
182- ) ;
174+ const DefaultStory = composeStory ( Default , meta , {
175+ args : {
176+ role : 'banner' ,
177+ } ,
178+ } ) ;
179+ render ( < DefaultStory /> ) ;
183180
184- const breadcrumbs = container . getElementsByClassName (
181+ const pageHeaderOuter = screen . getByRole ( 'banner' ) ;
182+ const breadcrumbs = pageHeaderOuter . getElementsByClassName (
185183 `${ carbonPrefix } --breadcrumb-item`
186184 ) ;
187185
@@ -440,15 +438,9 @@ describe('PageHeader', () => {
440438 } ) ;
441439
442440 it ( 'should use a custom menuButtonLabel if provided' , ( ) => {
443- render (
444- < PageHeader . Root >
445- < PageHeader . ContentPageActions
446- actions = { mockPageActions }
447- menuButtonLabel = "Options"
448- />
449- </ PageHeader . Root >
450- ) ;
451- expect ( screen . getByText ( 'Options' ) ) . toBeInTheDocument ( ) ;
441+ const CompactStory = composeStory ( Compact , meta ) ;
442+ render ( < CompactStory /> ) ;
443+ expect ( screen . getByText ( 'Actions' ) ) . toBeInTheDocument ( ) ;
452444 } ) ;
453445
454446 it ( 'should call onClick of hidden action when MenuItem is clicked' , async ( ) => {
@@ -508,13 +500,10 @@ describe('PageHeader', () => {
508500 } ) ;
509501
510502 it ( 'should render a subtitle' , ( ) => {
511- render (
512- < PageHeader . Root >
513- < PageHeader . ContentText subtitle = "subtitle" />
514- </ PageHeader . Root >
515- ) ;
503+ const DefaultStory = composeStory ( Default , meta ) ;
504+ render ( < DefaultStory /> ) ;
516505
517- expect ( screen . getByText ( 'subtitle ' ) ) . toBeInTheDocument ( ) ;
506+ expect ( screen . getByText ( 'Subtitle ' ) ) . toBeInTheDocument ( ) ;
518507 } ) ;
519508 } ) ;
520509
@@ -1003,9 +992,8 @@ describe('PageHeader', () => {
1003992 ) ;
1004993 const scrollerButton = screen . getByLabelText ( 'Collapse' ) ;
1005994 expect ( scrollerButton ) . toBeInTheDocument ( ) ;
1006-
1007- await act ( ( ) => {
1008- userEvent . click ( scrollerButton ) ;
995+ await waitFor ( async ( ) => {
996+ await userEvent . click ( scrollerButton ) ;
1009997 } ) ;
1010998 expect ( scrollerOnClick ) . toHaveBeenCalledTimes ( 1 ) ;
1011999 } ) ;
0 commit comments