11import { describe , expect , it } from 'vitest' ;
2+ import { page } from 'vitest/browser' ;
23import { render } from 'vitest-browser-react' ;
34
45import AmPm from './AmPm.js' ;
@@ -12,39 +13,39 @@ describe('AmPm', () => {
1213 } satisfies React . ComponentProps < typeof AmPm > ;
1314
1415 it ( 'renders a select' , async ( ) => {
15- const { container } = await render ( < AmPm { ...defaultProps } /> ) ;
16+ await render ( < AmPm { ...defaultProps } /> ) ;
1617
17- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
18+ const select = page . getByRole ( 'combobox' ) ;
1819 expect ( select ) . toBeInTheDocument ( ) ;
1920
20- const options = select . querySelectorAll ( 'option' ) ;
21+ const options = select . getByRole ( 'option' ) ;
2122 expect ( options ) . toHaveLength ( 3 ) ;
2223 } ) ;
2324
2425 it ( 'applies given aria-label properly' , async ( ) => {
2526 const amPmAriaLabel = 'Select AM/PM' ;
2627
27- const { container } = await render ( < AmPm { ...defaultProps } ariaLabel = { amPmAriaLabel } /> ) ;
28+ await render ( < AmPm { ...defaultProps } ariaLabel = { amPmAriaLabel } /> ) ;
2829
29- const select = container . querySelector ( 'select ') ;
30+ const select = page . getByRole ( 'combobox ') ;
3031
3132 expect ( select ) . toHaveAttribute ( 'aria-label' , amPmAriaLabel ) ;
3233 } ) ;
3334
3435 it ( 'has proper name defined' , async ( ) => {
35- const { container } = await render ( < AmPm { ...defaultProps } /> ) ;
36+ await render ( < AmPm { ...defaultProps } /> ) ;
3637
37- const select = container . querySelector ( 'select ') ;
38+ const select = page . getByRole ( 'combobox ') ;
3839
3940 expect ( select ) . toHaveAttribute ( 'name' , 'amPm' ) ;
4041 } ) ;
4142
4243 it ( 'has proper className defined' , async ( ) => {
4344 const className = 'react-time-picker' ;
4445
45- const { container } = await render ( < AmPm { ...defaultProps } className = { className } /> ) ;
46+ await render ( < AmPm { ...defaultProps } className = { className } /> ) ;
4647
47- const select = container . querySelector ( 'select ') ;
48+ const select = page . getByRole ( 'combobox ') ;
4849
4950 expect ( select ) . toHaveClass ( 'react-time-picker__input' ) ;
5051 expect ( select ) . toHaveClass ( 'react-time-picker__amPm' ) ;
@@ -53,72 +54,72 @@ describe('AmPm', () => {
5354 it ( 'displays given value properly' , async ( ) => {
5455 const value = 'pm' ;
5556
56- const { container } = await render ( < AmPm { ...defaultProps } value = { value } /> ) ;
57+ await render ( < AmPm { ...defaultProps } value = { value } /> ) ;
5758
58- const select = container . querySelector ( 'select ') ;
59+ const select = page . getByRole ( 'combobox ') ;
5960
6061 expect ( select ) . toHaveValue ( value ) ;
6162 } ) ;
6263
6364 it ( 'does not disable select by default' , async ( ) => {
64- const { container } = await render ( < AmPm { ...defaultProps } /> ) ;
65+ await render ( < AmPm { ...defaultProps } /> ) ;
6566
66- const select = container . querySelector ( 'select ') ;
67+ const select = page . getByRole ( 'combobox ') ;
6768
6869 expect ( select ) . not . toBeDisabled ( ) ;
6970 } ) ;
7071
7172 it ( 'disables input given disabled flag' , async ( ) => {
72- const { container } = await render ( < AmPm { ...defaultProps } disabled /> ) ;
73+ await render ( < AmPm { ...defaultProps } disabled /> ) ;
7374
74- const select = container . querySelector ( 'select ') ;
75+ const select = page . getByRole ( 'combobox ') ;
7576
7677 expect ( select ) . toBeDisabled ( ) ;
7778 } ) ;
7879
7980 it ( 'should not disable anything by default' , async ( ) => {
80- const { container } = await render ( < AmPm { ...defaultProps } /> ) ;
81+ await render ( < AmPm { ...defaultProps } /> ) ;
8182
82- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
83- const optionAm = select . querySelector ( 'option[value="am"]' ) ;
84- const optionPm = select . querySelector ( 'option[value="pm"]' ) ;
83+ const select = page . getByRole ( 'combobox' ) ;
84+ const optionAm = select . element ( ) . querySelector ( 'option[value="am"]' ) ;
85+ const optionPm = select . element ( ) . querySelector ( 'option[value="pm"]' ) ;
8586
8687 expect ( optionAm ) . not . toBeDisabled ( ) ;
8788 expect ( optionPm ) . not . toBeDisabled ( ) ;
8889 } ) ;
8990
9091 it ( 'should disable "pm" given maxTime before 12:00 pm' , async ( ) => {
91- const { container } = await render ( < AmPm { ...defaultProps } maxTime = "11:59" /> ) ;
92+ await render ( < AmPm { ...defaultProps } maxTime = "11:59" /> ) ;
9293
93- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
94- const optionPm = select . querySelector ( 'option[value="pm"]' ) ;
94+ const select = page . getByRole ( 'combobox' ) ;
95+ const optionPm = select . element ( ) . querySelector ( 'option[value="pm"]' ) ;
9596
9697 expect ( optionPm ) . toBeDisabled ( ) ;
9798 } ) ;
9899
99100 it ( 'should not disable "pm" given maxTime after or equal to 12:00 pm' , async ( ) => {
100- const { container } = await render ( < AmPm { ...defaultProps } maxTime = "12:00" /> ) ;
101+ await render ( < AmPm { ...defaultProps } maxTime = "12:00" /> ) ;
101102
102- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
103- const optionPm = select . querySelector ( 'option[value="pm"]' ) ;
103+ const select = page . getByRole ( 'combobox' ) ;
104+ const optionPm = select . element ( ) . querySelector ( 'option[value="pm"]' ) ;
104105
105106 expect ( optionPm ) . not . toBeDisabled ( ) ;
106107 } ) ;
107108
108109 it ( 'should disable "am" given minTime after or equal to 12:00 pm' , async ( ) => {
109- const { container } = await render ( < AmPm { ...defaultProps } minTime = "12:00" /> ) ;
110+ await render ( < AmPm { ...defaultProps } minTime = "12:00" /> ) ;
110111
111- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
112- const optionAm = select . querySelector ( 'option[value="am"]' ) ;
112+ const select = page . getByRole ( 'combobox' ) ;
113+ const optionAm = select . element ( ) . querySelector ( 'option[value="am"]' ) ;
113114
114115 expect ( optionAm ) . toBeDisabled ( ) ;
115116 } ) ;
116117
117118 it ( 'should not disable "am" given minTime before 12:00 pm' , async ( ) => {
118- const { container } = await render ( < AmPm { ...defaultProps } minTime = "11:59" /> ) ;
119+ await render ( < AmPm { ...defaultProps } minTime = "11:59" /> ) ;
119120
120- const select = container . querySelector ( 'select' ) as HTMLSelectElement ;
121- const optionAm = select . querySelector ( 'option[value="pm"]' ) ;
121+ const select = page . getByRole ( 'combobox' ) ;
122+ const optionAm = select . element ( ) . querySelector ( 'option[value="pm"]' ) ;
122123
123124 expect ( optionAm ) . not . toBeDisabled ( ) ;
124125 } ) ;
0 commit comments