import { act, screen, render as testingRender, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React, { useState, useRef } from 'react'; import { Option, Select, SelectRef } from '../selectv2/Selectv2.component'; import { GroupTypeBase, OptionTypeBase } from 'react-select'; const render = (args) => { return testingRender(args); }; const generateOptionsData = (n: number) => Array.from(new Array(n), (_, index) => ({ label: `Item ${index}`, value: index.toString(), 'data-testid': `option${index}`, })); const generateOptions = (n: number) => { return generateOptionsData(n).map((o, i) => ( )); }; const optionsWithScrollSearchBar = generateOptions(10); // more than 8 options should display searchbar + scrollbar const simpleOptions = generateOptions(4); // less than 5 options should not displays any scroll/search bar const SelectWrapper = (props) => { const [value, setValue] = useState(null); return ( ); }; const SelectReset = (props) => { const [value, setValue] = useState('default'); const handleChange = (value) => { setValue(value); }; return ( <> ); }; describe('SelectV2', () => { const selectors = { option: (name: string | RegExp) => screen.getByRole('option', { name }), options: () => screen.queryAllByRole('option'), select: (withSearch?: boolean, name?: string) => { if (withSearch) { return screen.getByRole('combobox', { name }); } return screen.getByRole('listbox', { name }); }, input: () => screen.getByRole('textbox'), noOptions: () => screen.getByText(/No options/i), highlightedText: () => screen.getByRole('mark'), }; it('should throw error if