diff --git a/src/test/Components/CreateImageWizardV2/CreateImageWizard.test.tsx b/src/test/Components/CreateImageWizardV2/CreateImageWizard.test.tsx new file mode 100644 index 00000000..14ce7311 --- /dev/null +++ b/src/test/Components/CreateImageWizardV2/CreateImageWizard.test.tsx @@ -0,0 +1,1601 @@ +// import React from 'react'; + +// import '@testing-library/jest-dom'; + +// import { +// screen, +// waitFor, +// waitForElementToBeRemoved, +// within, +// } from '@testing-library/react'; +// import userEvent from '@testing-library/user-event'; +// import { rest } from 'msw'; + +// import CreateImageWizard from '../../../Components/CreateImageWizard/CreateImageWizard'; +// import ShareImageModal from '../../../Components/ShareImageModal/ShareImageModal'; +// import { +// IMAGE_BUILDER_API, +// PROVISIONING_API, +// RHEL_8, +// RHSM_API, +// } from '../../../constants.js'; +// import { server } from '../../mocks/server.js'; +// import { +// clickBack, +// clickNext, +// getNextButton, +// renderCustomRoutesWithReduxRouter, +// verifyCancelButton, +// } from '../../testUtils'; + +// const routes = [ +// { +// path: 'insights/image-builder/*', +// element:
, +// }, +// { +// path: 'insights/image-builder/imagewizard/:composeId?', +// element: , +// }, +// { +// path: 'insights/image-builder/share /:composeId', +// element: , +// }, +// ]; + +// let router = undefined; + +// jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({ +// useChrome: () => ({ +// auth: { +// getUser: () => { +// return { +// identity: { +// internal: { +// org_id: 5, +// }, +// }, +// }; +// }, +// }, +// isBeta: () => false, +// isProd: () => true, +// getEnvironment: () => 'prod', +// }), +// })); + +// jest.mock('@unleash/proxy-client-react', () => ({ +// useUnleashContext: () => jest.fn(), +// useFlag: jest.fn((flag) => +// flag === 'image-builder.enable-content-sources' ? true : false +// ), +// })); + +// const searchForAvailablePackages = async (searchbox, searchTerm) => { +// const user = userEvent.setup(); +// await user.type(searchbox, searchTerm); +// await user.click( +// await screen.findByRole('button', { +// name: /search button for available packages/i, +// }) +// ); +// }; + +// const switchToAWSManual = async () => { +// const user = userEvent.setup(); +// const manualRadio = screen.getByRole('radio', { +// name: /manually enter an account id\./i, +// }); +// await user.click(manualRadio); +// return manualRadio; +// }; + +// const getSourceDropdown = async () => { +// const sourceDropdown = screen.getByRole('textbox', { +// name: /select source/i, +// }); +// await waitFor(() => expect(sourceDropdown).toBeEnabled()); + +// return sourceDropdown; +// }; + +// beforeAll(() => { +// // scrollTo is not defined in jsdom +// window.HTMLElement.prototype.scrollTo = function () {}; +// }); + +// afterEach(() => { +// jest.clearAllMocks(); +// router = undefined; +// server.resetHandlers(); +// }); + +// describe('Create Image Wizard', () => { +// test('renders component', () => { +// renderCustomRoutesWithReduxRouter('imagewizard', {}, routes); +// // check heading +// screen.getByRole('heading', { name: /Image Builder/ }); + +// screen.getByRole('button', { name: 'Image output' }); +// screen.getByRole('button', { name: 'Register' }); +// screen.getByRole('button', { name: 'File system configuration' }); +// screen.getByRole('button', { name: 'Content' }); +// screen.getByRole('button', { name: 'Additional Red Hat packages' }); +// screen.getByRole('button', { name: 'Custom repositories' }); +// screen.getByRole('button', { name: 'Details' }); +// screen.getByRole('button', { name: 'Review' }); +// }); +// }); + +// describe('Step Image output', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await user.click(await screen.findByTestId('upload-aws')); + +// await screen.findByRole('heading', { name: 'Image output' }); +// }; + +// test('clicking Next loads Upload to AWS', async () => { +// await setUp(); + +// await clickNext(); + +// await switchToAWSManual(); +// await screen.findByText('AWS account ID'); +// }); + +// test('clicking Cancel loads landing page', async () => { +// await setUp(); +// await clickNext(); + +// await verifyCancelButton(router); +// }); + +// test('target environment is required', async () => { +// await setUp(); + +// const destination = screen.getByTestId('target-select'); +// const required = within(destination).getByText('*'); +// expect(destination).toBeEnabled(); +// expect(destination).toContainElement(required); +// }); + +// test('selecting and deselecting a tile disables the next button', async () => { +// await setUp(); +// const nextButton = await getNextButton(); + +// const awsTile = screen.getByTestId('upload-aws'); +// // this has already been clicked once in the setup function +// await user.click(awsTile); // deselect + +// const googleTile = screen.getByTestId('upload-google'); +// await user.click(googleTile); // select +// await user.click(googleTile); // deselect + +// const azureTile = screen.getByTestId('upload-azure'); +// await user.click(azureTile); // select +// await user.click(azureTile); // deselect + +// await waitFor(() => expect(nextButton).toBeDisabled()); +// }); + +// test('expect only RHEL releases before expansion', async () => { +// await setUp(); + +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); + +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 8/, +// }); +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 9/, +// }); +// await screen.findByRole('button', { +// name: 'Show options for further development of RHEL', +// }); + +// await user.click(releaseMenu); +// }); + +// test('expect all releases after expansion', async () => { +// await setUp(); + +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); + +// const showOptionsButton = screen.getByRole('button', { +// name: 'Show options for further development of RHEL', +// }); +// await user.click(showOptionsButton); + +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 8/, +// }); +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 9/, +// }); +// await screen.findByRole('option', { +// name: 'CentOS Stream 8', +// }); +// await screen.findByRole('option', { +// name: 'CentOS Stream 9', +// }); + +// expect(showOptionsButton).not.toBeInTheDocument(); + +// await user.click(releaseMenu); +// }); + +// test('release lifecycle chart appears only when RHEL 8 is chosen', async () => { +// await setUp(); + +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); + +// await user.click( +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 9/, +// }) +// ); +// expect( +// screen.queryByTestId('release-lifecycle-chart') +// ).not.toBeInTheDocument(); + +// await user.click(releaseMenu); + +// await user.click( +// await screen.findByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 8/, +// }) +// ); +// expect( +// await screen.findByTestId('release-lifecycle-chart') +// ).toBeInTheDocument(); +// }); + +// test('CentOS acknowledgement appears', async () => { +// await setUp(); + +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); + +// const showOptionsButton = screen.getByRole('button', { +// name: 'Show options for further development of RHEL', +// }); +// await user.click(showOptionsButton); + +// const centOSButton = screen.getByRole('option', { +// name: 'CentOS Stream 9', +// }); +// await user.click(centOSButton); + +// await screen.findByText( +// 'CentOS Stream builds are intended for the development of future versions of RHEL and are not supported for production workloads or other use cases.' +// ); +// }); +// }); + +// describe('Step Upload to AWS', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); + +// await clickNext(); + +// await screen.findByRole('heading', { +// name: 'Target environment - Amazon Web Services', +// }); +// }; + +// test('clicking Next loads Registration', async () => { +// await setUp(); + +// await switchToAWSManual(); +// await user.type( +// await screen.findByTestId('aws-account-id'), +// '012345678901' +// ); +// await clickNext(); + +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// screen.getByText('Automatically register and enable advanced capabilities'); +// }); + +// test('clicking Back loads Release', async () => { +// await setUp(); + +// await clickBack(); + +// screen.getByTestId('upload-aws'); +// }); + +// test('clicking Cancel loads landing page', async () => { +// await setUp(); + +// await verifyCancelButton(router); +// }); + +// test('component renders error state correctly', async () => { +// server.use( +// rest.get(`${PROVISIONING_API}/sources`, (req, res, ctx) => +// res(ctx.status(500)) +// ) +// ); +// await setUp(); +// await screen.findByText( +// /sources cannot be reached, try again later or enter an aws account id manually\./i +// ); +// }); + +// test('validation works', async () => { +// await setUp(); +// const nextButton = await getNextButton(); + +// expect(nextButton).toHaveClass('pf-m-disabled'); + +// await user.click( +// screen.getByRole('radio', { name: /manually enter an account id\./i }) +// ); + +// expect(nextButton).toHaveClass('pf-m-disabled'); + +// const awsAccId = screen.getByTestId('aws-account-id'); +// expect(awsAccId).toHaveValue(''); +// expect(awsAccId).toBeEnabled(); +// await user.type(awsAccId, '012345678901'); + +// expect(nextButton).not.toHaveClass('pf-m-disabled'); + +// await user.click( +// screen.getByRole('radio', { +// name: /use an account configured from sources\./i, +// }) +// ); + +// await waitFor(() => expect(nextButton).toHaveClass('pf-m-disabled')); + +// const sourceDropdown = await getSourceDropdown(); +// await user.click(sourceDropdown); + +// const source = await screen.findByRole('option', { +// name: /my_source/i, +// }); +// await user.click(source); + +// await waitFor(() => expect(nextButton).not.toHaveClass('pf-m-disabled')); +// }); + +// test('compose request share_with_sources field is correct', async () => { +// await setUp(); + +// const sourceDropdown = await getSourceDropdown(); +// await user.click(sourceDropdown); + +// const source = await screen.findByRole('option', { +// name: /my_source/i, +// }); +// await user.click(source); + +// await clickNext(); + +// // registration +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// const registerLaterRadio = screen.getByLabelText('Register later'); +// await user.click(registerLaterRadio); + +// // click through to review step +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); + +// await user.click(screen.getByRole('button', { name: /Create/ })); + +// // returns back to the landing page +// await waitFor(() => +// expect(router.state.location.pathname).toBe('/insights/image-builder') +// ); +// // set test timeout of 10 seconds +// }, 10000); +// }); + +// describe('Step Upload to Google', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select gcp as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-google')) +// ); + +// await clickNext(); + +// await screen.findByRole('heading', { +// name: 'Target environment - Google Cloud Platform', +// }); +// }; + +// test('clicking Next loads Registration', async () => { +// await setUp(); + +// const shareRadioButton = await screen.findByRole('radio', { +// name: /share image with a google account/i, +// }); +// await user.click(shareRadioButton); + +// const googleEmailInput = await screen.findByTestId('input-google-email'); + +// await user.type(googleEmailInput, 'test@test.com'); +// await clickNext(); + +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// screen.getByText('Automatically register and enable advanced capabilities'); +// }); + +// test('clicking Back loads Release', async () => { +// await setUp(); + +// await clickBack(); + +// screen.getByTestId('upload-google'); +// }); + +// test('clicking Cancel loads landing page', async () => { +// await setUp(); + +// await verifyCancelButton(router); +// }); + +// test('the google account id field is shown and required', async () => { +// await setUp(); + +// await waitFor(() => { +// screen.getByTestId('account-sharing'); +// }); + +// await user.click(screen.getByTestId('account-sharing')); +// const accessKeyId = await screen.findByTestId('input-google-email'); +// expect(accessKeyId).toHaveValue(''); +// expect(accessKeyId).toBeEnabled(); +// }); + +// test('the google email field must be a valid email', async () => { +// await setUp(); + +// await user.click(screen.getByTestId('account-sharing')); +// await user.type(screen.getByTestId('input-google-email'), 'a'); +// expect(await getNextButton()).toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeDisabled(); +// await user.type(screen.getByTestId('input-google-email'), 'test@test.com'); +// expect(await getNextButton()).not.toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeEnabled(); +// }); +// }); + +// describe('Step Registration', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); + +// await clickNext(); +// await user.click( +// screen.getByRole('radio', { name: /manually enter an account id\./i }) +// ); +// await user.type(screen.getByTestId('aws-account-id'), '012345678901'); +// await clickNext(); + +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// }; + +// test('clicking Next loads file system configuration', async () => { +// await setUp(); + +// const registerLaterRadio = screen.getByTestId('registration-radio-later'); +// await user.click(registerLaterRadio); + +// await clickNext(); + +// await screen.findByRole('heading', { +// name: 'File system configuration', +// }); +// }); + +// test('clicking Back loads Upload to AWS', async () => { +// await setUp(); + +// await clickBack(); + +// await user.click( +// screen.getByRole('radio', { name: /manually enter an account id\./i }) +// ); +// screen.getByText('AWS account ID'); +// }); + +// test('clicking Cancel loads landing page', async () => { +// await setUp(); + +// await verifyCancelButton(router); +// }); + +// test('activation key dropdown empty state', async () => { +// server.use( +// rest.get(`${RHSM_API}/activation_keys`, (req, res, ctx) => +// res(ctx.status(200), ctx.json({ body: [] })) +// ) +// ); +// await setUp(); +// const activationKeyDropdown = await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// await user.click(activationKeyDropdown); +// await screen.findByText('No activation keys found'); +// }); + +// test('should allow registering with rhc', async () => { +// await setUp(); + +// const activationKeyDropdown = await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// await user.click(activationKeyDropdown); +// const activationKey = await screen.findByRole('option', { +// name: 'name0', +// }); +// await user.click(activationKey); +// screen.getByDisplayValue('name0'); + +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// const review = screen.getByTestId('review-registration'); +// expect(review).toHaveTextContent( +// 'Register with Red Hat Subscription Manager (RHSM)' +// ); +// expect(review).toHaveTextContent('Connect to Red Hat Insights'); +// expect(review).toHaveTextContent( +// 'Use remote host configuration (rhc) utility' +// ); +// screen.getAllByText('012345678901'); +// }); + +// test('should allow registering without rhc', async () => { +// await setUp(); + +// await user.click(screen.getByTestId('registration-additional-options')); +// await user.click(screen.getByTestId('registration-checkbox-rhc')); + +// // going back and forward when rhc isn't selected should keep additional options shown +// await clickBack(); +// await screen.findByTestId('aws-account-id'); +// await clickNext(); +// screen.getByTestId('registration-checkbox-insights'); +// screen.getByTestId('registration-checkbox-rhc'); + +// const activationKeyDropdown = await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// await user.click(activationKeyDropdown); +// const activationKey = await screen.findByRole('option', { +// name: 'name0', +// }); +// await user.click(activationKey); +// screen.getByDisplayValue('name0'); + +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// const review = screen.getByTestId('review-registration'); +// expect(review).toHaveTextContent( +// 'Register with Red Hat Subscription Manager (RHSM)' +// ); +// expect(review).toHaveTextContent('Connect to Red Hat Insights'); +// screen.getAllByText('012345678901'); +// expect(review).not.toHaveTextContent( +// 'Use remote host configuration (rhc) utility' +// ); +// }); + +// test('should allow registering without insights or rhc', async () => { +// await setUp(); + +// await user.click(screen.getByTestId('registration-additional-options')); +// await user.click(screen.getByTestId('registration-checkbox-insights')); + +// // going back and forward when neither rhc or insights is selected should keep additional options shown +// await clickBack(); +// await screen.findByTestId('aws-account-id'); +// await clickNext(); +// screen.getByTestId('registration-checkbox-insights'); +// screen.getByTestId('registration-checkbox-rhc'); + +// const activationKeyDropdown = await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// await user.click(activationKeyDropdown); +// const activationKey = await screen.findByRole('option', { +// name: 'name0', +// }); +// await user.click(activationKey); +// screen.getByDisplayValue('name0'); + +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// const review = screen.getByTestId('review-registration'); +// expect(review).toHaveTextContent( +// 'Register with Red Hat Subscription Manager (RHSM)' +// ); +// screen.getAllByText('012345678901'); +// expect(review).not.toHaveTextContent('Connect to Red Hat Insights'); +// expect(review).not.toHaveTextContent( +// 'Use remote host configuration (rhc) utility' +// ); +// }); + +// test('should hide input fields when clicking Register the system later', async () => { +// await setUp(); +// const removeKeyInformation = waitForElementToBeRemoved(() => [ +// screen.getByTestId('subscription-activation-key'), +// ]); + +// // click the later radio button which should remove any input fields +// await user.click(screen.getByTestId('registration-radio-later')); + +// await removeKeyInformation; + +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// await clickNext(); +// screen.getByText('Register the system later'); +// }); + +// test('registering with rhc implies registering with insights', async () => { +// await setUp(); +// await user.click(screen.getByTestId('registration-additional-options')); + +// await user.click(screen.getByTestId('registration-checkbox-insights')); +// expect(screen.getByTestId('registration-checkbox-rhc')).not.toBeChecked(); + +// await user.click(screen.getByTestId('registration-checkbox-rhc')); +// expect(screen.getByTestId('registration-checkbox-insights')).toBeChecked(); +// }); +// }); + +// describe('Step File system configuration', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await clickNext(); + +// // aws step +// await switchToAWSManual(); +// await user.type( +// await screen.findByTestId('aws-account-id'), +// '012345678901' +// ); +// await clickNext(); +// // skip registration +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// const registerLaterRadio = screen.getByTestId('registration-radio-later'); +// await user.click(registerLaterRadio); +// await clickNext(); +// }; + +// test('Error validation occurs upon clicking next button', async () => { +// await setUp(); + +// const manuallyConfigurePartitions = screen.getByText( +// /manually configure partitions/i +// ); +// await user.click(manuallyConfigurePartitions); + +// const addPartition = await screen.findByTestId('file-system-add-partition'); + +// // Create duplicate partitions +// await user.click(addPartition); +// await user.click(addPartition); + +// expect(await getNextButton()).toBeEnabled(); + +// // Clicking next causes errors to appear +// await clickNext(); + +// const mountPointWarning = screen.getByRole('heading', { +// name: /danger alert: duplicate mount points: all mount points must be unique\. remove the duplicate or choose a new mount point\./i, +// hidden: true, +// }); + +// const mountPointAlerts = screen.getAllByRole('heading', { +// name: /danger alert: duplicate mount point\./i, +// }); + +// const tbody = screen.getByTestId('file-system-configuration-tbody'); +// const rows = within(tbody).getAllByRole('row'); +// expect(rows).toHaveLength(3); + +// // Change mountpoint of final row to /var, resolving errors +// const mountPointOptions = within(rows[2]).getAllByRole('button', { +// name: 'Options menu', +// })[0]; +// await user.click(mountPointOptions); +// const varButton = await within(rows[2]).findByRole('option', { +// name: '/var', +// }); +// await user.click(varButton); + +// await waitFor(() => expect(mountPointWarning).not.toBeInTheDocument()); +// await waitFor(() => expect(mountPointAlerts[0]).not.toBeInTheDocument()); +// await waitFor(() => expect(mountPointAlerts[1]).not.toBeInTheDocument()); +// expect(await getNextButton()).toBeEnabled(); +// }); +// }); + +// describe('Step Details', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await clickNext(); + +// // aws step +// await switchToAWSManual(); +// await user.type( +// await screen.findByTestId('aws-account-id'), +// '012345678901' +// ); +// await clickNext(); +// // skip registration +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// const registerLaterRadio = screen.getByTestId('registration-radio-later'); +// await user.click(registerLaterRadio); +// await clickNext(); + +// // skip fsc +// await clickNext(); +// // skip packages +// await clickNext(); +// // skip repositories +// await clickNext(); +// }; + +// test('image name invalid for more than 63 chars', async () => { +// await setUp(); + +// // Enter image name +// const nameInput = screen.getByRole('textbox', { +// name: 'Image Name', +// }); +// // 64 character name +// const invalidName = 'a'.repeat(64); +// await user.type(nameInput, invalidName); +// expect(await getNextButton()).toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeDisabled(); +// await user.clear(nameInput); + +// await user.type(nameInput, 'valid-name'); +// expect(await getNextButton()).not.toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeEnabled(); + +// // Enter description image +// const descriptionInput = screen.getByRole('textbox', { +// name: /description/i, +// }); + +// const invalidDescription = 'a'.repeat(251); +// await user.type(descriptionInput, invalidDescription); + +// expect(await getNextButton()).toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeDisabled(); +// await user.clear(descriptionInput); +// await user.type(descriptionInput, 'valid-description'); + +// expect(await getNextButton()).not.toHaveClass('pf-m-disabled'); +// expect(await getNextButton()).toBeEnabled(); +// }); +// }); + +// describe('Step Review', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await clickNext(); + +// // aws step +// await switchToAWSManual(); +// await user.type( +// await screen.findByTestId('aws-account-id'), +// '012345678901' +// ); +// await clickNext(); + +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); + +// // skip registration +// const registerLaterRadio = screen.getByTestId('registration-radio-later'); +// await user.click(registerLaterRadio); + +// await clickNext(); +// // skip fsc +// await clickNext(); +// // skip packages +// await clickNext(); +// // skip repositories +// await clickNext(); +// // skip name +// await clickNext(); +// }; + +// const setUpCentOS = async () => { +// ({ router } = renderCustomRoutesWithReduxRouter('imagewizard', {}, routes)); + +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); + +// const showOptionsButton = screen.getByRole('button', { +// name: 'Show options for further development of RHEL', +// }); +// await user.click(showOptionsButton); + +// const centos = screen.getByRole('option', { +// name: 'CentOS Stream 8', +// }); +// await user.click(centos); + +// // select aws as upload destination +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await clickNext(); + +// // aws step +// await switchToAWSManual(); +// await user.type( +// await screen.findByTestId('aws-account-id'), +// '012345678901' +// ); +// await clickNext(); +// // skip fsc +// await clickNext(); +// // skip packages +// await clickNext(); +// // skip repositories +// await clickNext(); +// // skip name +// await clickNext(); +// }; + +// test('has 3 buttons', async () => { +// await setUp(); + +// screen.getByRole('button', { name: /Create/ }); +// screen.getByRole('button', { name: /Back/ }); +// screen.getByRole('button', { name: /Cancel/ }); +// }); + +// test('clicking Back loads Image name', async () => { +// await setUp(); + +// await clickBack(); + +// screen.getByRole('heading', { +// name: 'Details', +// }); +// }); + +// test('clicking Cancel loads landing page', async () => { +// await setUp(); + +// await verifyCancelButton(router); +// }); + +// test('has Registration expandable section for rhel', async () => { +// await setUp(); + +// const targetExpandable = screen.getByTestId( +// 'target-environments-expandable' +// ); +// const registrationExpandable = screen.getByTestId( +// 'registration-expandable' +// ); +// const contentExpandable = screen.getByTestId('content-expandable'); +// const fscExpandable = screen.getByTestId( +// 'file-system-configuration-expandable' +// ); + +// await user.click(targetExpandable); +// screen.getByText('AWS'); +// await user.click(registrationExpandable); +// screen.getByText('Register the system later'); +// await user.click(contentExpandable); +// screen.getByText('Additional Red Hatand 3rd party packages'); +// await user.click(fscExpandable); +// screen.getByText('Configuration type'); +// }); + +// test('has no Registration expandable for centos', async () => { +// await setUpCentOS(); + +// const targetExpandable = await screen.findByTestId( +// 'target-environments-expandable' +// ); +// const contentExpandable = await screen.findByTestId('content-expandable'); +// const fscExpandable = await screen.findByTestId( +// 'file-system-configuration-expandable' +// ); +// expect( +// screen.queryByTestId('registration-expandable') +// ).not.toBeInTheDocument(); + +// await user.click(targetExpandable); +// screen.getByText('AWS'); +// await user.click(contentExpandable); +// screen.getByText('Additional Red Hatand 3rd party packages'); +// await user.click(fscExpandable); +// screen.getByText('Configuration type'); +// }); +// }); + +// describe('Click through all steps', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); +// }; + +// test('with valid values', async () => { +// await setUp(); + +// // select image output +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// const releaseMenu = screen.getAllByRole('button', { +// name: /options menu/i, +// })[0]; +// await user.click(releaseMenu); +// const releaseOption = screen.getByRole('option', { +// name: /Red Hat Enterprise Linux \(RHEL\) 8/, +// }); +// await user.click(releaseOption); + +// await waitFor(() => screen.findByTestId('upload-aws')); +// await user.click(screen.getByTestId('upload-azure')); +// await user.click(screen.getByTestId('upload-google')); +// await user.click(screen.getByTestId('checkbox-vmware')); +// await user.click(screen.getByTestId('checkbox-guest-image')); +// await user.click(screen.getByTestId('checkbox-image-installer')); + +// await clickNext(); +// await user.click( +// screen.getByRole('radio', { name: /manually enter an account id\./i }) +// ); +// await user.type(screen.getByTestId('aws-account-id'), '012345678901'); +// await clickNext(); + +// await user.click(screen.getByTestId('account-sharing')); + +// await user.type(screen.getByTestId('input-google-email'), 'test@test.com'); + +// await user.click(await screen.findByTestId('account-sharing')); +// await clickNext(); + +// await user.click(screen.getByTestId('azure-radio-manual')); +// // Randomly generated GUID +// await user.type( +// screen.getByTestId('azure-tenant-id-manual'), +// 'b8f86d22-4371-46ce-95e7-65c415f3b1e2' +// ); +// await user.type( +// screen.getByTestId('azure-subscription-id-manual'), +// '60631143-a7dc-4d15-988b-ba83f3c99711' +// ); +// await user.type( +// screen.getByTestId('azure-resource-group-manual'), +// 'testResourceGroup' +// ); +// await clickNext(); + +// // registration +// const activationKeyDropdown = await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// await user.click(activationKeyDropdown); +// const activationKey = await screen.findByRole('option', { +// name: 'name0', +// }); +// await user.click(activationKey); +// screen.getByDisplayValue('name0'); + +// await clickNext(); + +// // fsc +// const fscToggle = await screen.findByTestId( +// 'file-system-config-radio-manual' +// ); +// await user.click(fscToggle); +// const addPartition = await screen.findByTestId('file-system-add-partition'); +// await user.click(addPartition); +// await user.click(addPartition); + +// const tbody = screen.getByTestId('file-system-configuration-tbody'); +// const rows = within(tbody).getAllByRole('row'); +// await waitFor(() => expect(rows).toHaveLength(3)); +// await clickNext(); + +// // set mountpoint of final row to /var/tmp +// const mountPointMenu = within(rows[2]).getAllByRole('button', { +// name: 'Options menu', +// })[0]; +// await user.click(mountPointMenu); + +// const varButton = await within(rows[2]).findByRole('option', { +// name: '/var', +// }); +// await user.click(varButton); +// expect( +// screen.queryByRole('heading', { +// name: 'Danger alert: Duplicate mount point.', +// }) +// ).not.toBeInTheDocument(); +// await user.type( +// within(rows[2]).getByRole('textbox', { +// name: 'Mount point suffix text input', +// }), +// '/tmp' +// ); + +// // set size of the final row to 100 MiB +// await user.type( +// within(rows[2]).getByRole('textbox', { name: 'Size text input' }), +// '{backspace}100' +// ); +// const unitMenu = within(rows[2]).getAllByRole('button', { +// name: 'Options menu', +// })[1]; +// await user.click(unitMenu); + +// const mibButton = await within(rows[2]).findByRole('option', { +// name: 'MiB', +// }); +// await user.click(mibButton); +// await clickNext(); + +// screen.getByText( +// /Images built with Image Builder include all required packages/i +// ); + +// const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref + +// await waitFor(() => expect(searchbox).toBeEnabled()); + +// await searchForAvailablePackages(searchbox, 'test'); +// await user.click( +// await screen.findByRole('option', { +// name: /test summary for test package/, +// }) +// ); +// await user.click(screen.getByRole('button', { name: /Add selected/ })); +// await clickNext(); + +// // Custom repositories +// await user.click( +// await screen.findByRole('checkbox', { name: /select row 0/i }) +// ); +// await user.click( +// await screen.findByRole('checkbox', { name: /select row 1/i }) +// ); + +// await clickNext(); +// // Custom packages +// await clickNext(); + +// // Enter image name +// const nameInput = screen.getByRole('textbox', { +// name: 'Image Name', +// }); + +// await user.type(nameInput, 'my-image-name'); + +// // Enter description for image +// const descriptionInput = screen.getByRole('textbox', { +// name: /Description/, +// }); +// await user.type( +// descriptionInput, +// 'this is a perfect description for image' +// ); +// await clickNext(); + +// // review +// const targetEnvironmentsExpandable = await screen.findByTestId( +// 'target-environments-expandable' +// ); +// await user.click(targetEnvironmentsExpandable); +// await screen.findAllByText('AWS'); +// await screen.findAllByText('GCP'); +// await screen.findByText('VMware vSphere (.ova)'); +// await screen.findByText('Virtualization - Guest image (.qcow2)'); +// await screen.findByText('Bare metal - Installer (.iso)'); + +// const registrationExpandable = await screen.findByTestId( +// 'registration-expandable' +// ); +// await user.click(registrationExpandable); +// const review = screen.getByTestId('review-registration'); +// expect(review).toHaveTextContent( +// 'Use remote host configuration (rhc) utility' +// ); + +// const imageDetailsExpandable = await screen.findByTestId( +// 'image-details-expandable' +// ); +// await user.click(imageDetailsExpandable); +// await screen.findByText('my-image-name'); +// await screen.findByText('this is a perfect description for image'); + +// await screen.findByText('name0'); +// await screen.findByText('Self-Support'); +// await screen.findByText('Production'); + +// await user.click(screen.getByTestId('repositories-popover-button')); +// const repotbody = await screen.findByTestId( +// 'additional-repositories-table' +// ); +// expect(within(repotbody).getAllByRole('row')).toHaveLength(3); + +// await user.click(screen.getByTestId('file-system-configuration-popover')); +// const revtbody = await screen.findByTestId( +// 'file-system-configuration-tbody-review' +// ); +// expect(within(revtbody).getAllByRole('row')).toHaveLength(3); + +// // mock the backend API +// const payload_repos = [ +// { +// baseurl: 'http://yum.theforeman.org/releases/3.4/el8/x86_64/', +// check_gpg: true, +// check_repo_gpg: false, +// gpgkey: +// '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', +// rhsm: false, +// }, +// { +// baseurl: +// 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', +// check_gpg: false, +// rhsm: false, +// }, +// ]; + +// const custom_repos = [ +// { +// baseurl: ['http://yum.theforeman.org/releases/3.4/el8/x86_64/'], +// check_gpg: true, +// check_repo_gpg: false, +// gpgkey: [ +// '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGN9300BEAC1FLODu0cL6saMMHa7yJY1JZUc+jQUI/HdECQrrsTaPXlcc7nM\nykYMMv6amPqbnhH/R5BW2Ano+OMse+PXtUr0NXU4OcvxbnnXkrVBVUf8mXI9DzLZ\njw8KoD+4/s0BuzO78zAJF5uhuyHMAK0ll9v0r92kK45Fas9iZTfRFcqFAzvgjScf\n5jeBnbRs5U3UTz9mtDy802mk357o1A8BD0qlu3kANDpjLbORGWdAj21A6sMJDYXy\nHS9FBNV54daNcr+weky2L9gaF2yFjeu2rSEHCSfkbWfpSiVUx/bDTj7XS6XDOuJT\nJqvGS8jHqjHAIFBirhCA4cY/jLKxWyMr5N6IbXpPAYgt8/YYz2aOYVvdyB8tZ1u1\nkVsMYSGcvTBexZCn1cDkbO6I+waIlsc0uxGqUGBKF83AVYCQqOkBjF1uNnu9qefE\nkEc9obr4JZsAgnisboU25ss5ZJddKlmFMKSi66g4S5ChLEPFq7MB06PhLFioaD3L\nEXza7XitoW5VBwr0BSVKAHMC0T2xbm70zY06a6gQRlvr9a10lPmv4Tptc7xgQReg\nu1TlFPbrkGJ0d8O6vHQRAd3zdsNaVr4gX0Tg7UYiqT9ZUkP7hOc8PYXQ28hHrHTB\nA63MTq0aiPlJ/ivTuX8M6+Bi25dIV6N6IOUi/NQKIYxgovJCDSdCAAM0fQARAQAB\ntCFMdWNhcyBHYXJmaWVsZCA8bHVjYXNAcmVkaGF0LmNvbT6JAlcEEwEIAEEWIQTO\nQZeiHnXqdjmfUURc6PeuecS2PAUCY33fTQIbAwUJA8JnAAULCQgHAgIiAgYVCgkI\nCwIEFgIDAQIeBwIXgAAKCRBc6PeuecS2PCk3D/9jW7xrBB/2MQFKd5l+mNMFyKwc\nL9M/M5RFI9GaQRo55CwnPb0nnxOJR1V5GzZ/YGii53H2ose65CfBOE2L/F/RvKF0\nH9S9MInixlahzzKtV3TpDoZGk5oZIHEMuPmPS4XaHggolrzExY0ib0mQuBBE/uEV\n/HlyHEunBKPhTkAe+6Q+2dl22SUuVfWr4Uzlp65+DkdN3M37WI1a3Suhnef3rOSM\nV6puUzWRR7qcYs5C2In87AcYPn92P5ur1y/C32r8Ftg3fRWnEzI9QfRG52ojNOLK\nyGQ8ZC9PGe0q7VFcF7ridT/uzRU+NVKldbJg+rvBnszb1MjNuR7rUQHyvGmbsUVQ\nRCsgdovkee3lP4gfZHzk2SSLVSo0+NJRNaM90EmPk14Pgi/yfRSDGBVvLBbEanYI\nv1ZtdIPRyKi+/IaMOu/l7nayM/8RzghdU+0f1FAif5qf9nXuI13P8fqcqfu67gNd\nkh0UUF1XyR5UHHEZQQDqCuKEkZJ/+27jYlsG1ZiLb1odlIWoR44RP6k5OJl0raZb\nyLXbAfpITsXiJJBpCam9P9+XR5VSfgkqp5hIa7J8piN3DoMpoExg4PPQr6PbLAJy\nOUCOnuB7yYVbj0wYuMXTuyrcBHh/UymQnS8AMpQoEkCLWS/A/Hze/pD23LgiBoLY\nXIn5A2EOAf7t2IMSlA==\n=OanT\n-----END PGP PUBLIC KEY BLOCK-----', +// ], +// id: 'dbad4dfc-1547-45f8-b5af-1d7fec0476c6', +// name: '13lk3', +// }, +// { +// baseurl: [ +// 'http://mirror.stream.centos.org/SIGs/8/kmods/x86_64/packages-main/', +// ], +// check_gpg: false, +// id: '9cf1d45d-aa06-46fe-87ea-121845cc6bbb', +// name: '2lmdtj', +// }, +// ]; + +// const cust = { +// filesystem: [ +// { +// mountpoint: '/', +// min_size: 10737418240, +// }, +// { +// mountpoint: '/home', +// min_size: 1073741824, +// }, +// { +// mountpoint: '/var/tmp', +// min_size: 104857600, +// }, +// ], +// custom_repositories: custom_repos, +// payload_repositories: payload_repos, +// packages: ['test'], +// subscription: { +// 'activation-key': 'name0', +// insights: true, +// rhc: true, +// organization: 5, +// 'server-url': 'subscription.rhsm.redhat.com', +// 'base-url': 'https://cdn.redhat.com/', +// }, +// }; + +// const expectedComposeReqs = { +// aws: { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'aws', +// upload_request: { +// type: 'aws', +// options: { +// share_with_accounts: ['012345678901'], +// }, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// gcp: { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'gcp', +// upload_request: { +// type: 'gcp', +// options: { +// share_with_accounts: ['user:test@test.com'], +// }, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// azure: { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'azure', +// upload_request: { +// type: 'azure', +// options: { +// tenant_id: 'b8f86d22-4371-46ce-95e7-65c415f3b1e2', +// subscription_id: '60631143-a7dc-4d15-988b-ba83f3c99711', +// resource_group: 'testResourceGroup', +// }, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// 'vsphere-ova': { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'vsphere-ova', +// upload_request: { +// type: 'aws.s3', +// options: {}, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// 'guest-image': { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'guest-image', +// upload_request: { +// type: 'aws.s3', +// options: {}, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// 'image-installer': { +// distribution: RHEL_8, +// image_name: 'my-image-name', +// image_description: 'this is a perfect description for image', +// image_requests: [ +// { +// architecture: 'x86_64', +// image_type: 'image-installer', +// upload_request: { +// type: 'aws.s3', +// options: {}, +// }, +// }, +// ], +// client_id: 'ui', +// customizations: cust, +// }, +// }; + +// let timesCalled = 0; +// const receivedComposeReqs = {}; + +// server.use( +// rest.post(`${IMAGE_BUILDER_API}/compose`, (req, res, ctx) => { +// timesCalled += 1; +// receivedComposeReqs[req.body.image_requests[0].image_type] = req.body; +// return res( +// ctx.status(201), +// ctx.json({ +// id: 'edbae1c2-62bc-42c1-ae0c-3110ab718f5b', +// }) +// ); +// }) +// ); +// await user.click(screen.getByRole('button', { name: /Create/ })); + +// expect(receivedComposeReqs).toEqual(expectedComposeReqs); +// expect(timesCalled).toEqual(6); + +// // returns back to the landing page +// await waitFor(() => +// expect(router.state.location.pathname).toBe('/insights/image-builder') +// ); + +// // set test timeout of 20 seconds +// }, 20000); +// }); + +// describe('Keyboard accessibility', () => { +// const user = userEvent.setup(); +// const setUp = async () => { +// ({ router } = await renderCustomRoutesWithReduxRouter( +// 'imagewizard', +// {}, +// routes +// )); +// await clickNext(); +// }; + +// const selectAllEnvironments = async () => { +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await user.click(screen.getByTestId('upload-google')); +// await user.click(screen.getByTestId('upload-azure')); +// await user.click( +// screen.getByRole('checkbox', { +// name: /virtualization guest image checkbox/i, +// }) +// ); +// }; + +// test('autofocus on each step first input element', async () => { +// await setUp(); + +// // Image output +// await selectAllEnvironments(); +// await clickNext(); + +// // Target environment aws +// expect(screen.getByTestId('aws-radio-source')).toHaveFocus(); +// const awsSourceDropdown = await getSourceDropdown(); +// await user.click(awsSourceDropdown); +// const awsSource = await screen.findByRole('option', { +// name: /my_source/i, +// }); +// await user.click(awsSource); + +// await clickNext(); + +// // Target environment google +// await user.click(await screen.findByTestId('account-sharing')); +// expect(await screen.findByTestId('account-sharing')).toHaveFocus(); +// await user.type( +// await screen.findByTestId('input-google-email'), +// 'test@test.com' +// ); +// await clickNext(); + +// // Target environment azure +// expect(screen.getByTestId('azure-radio-source')).toHaveFocus(); +// const azureSourceDropdown = await getSourceDropdown(); +// await user.click(azureSourceDropdown); +// const azureSource = await screen.findByRole('option', { +// name: /azureSource1/i, +// }); +// await user.click(azureSource); + +// const resourceGroupDropdown = await screen.findByRole('textbox', { +// name: /select resource group/i, +// }); +// await user.click(resourceGroupDropdown); +// await user.click(screen.getByLabelText('Resource group myResourceGroup1')); +// await clickNext(); + +// // Registration +// await screen.findByText( +// 'Automatically register and enable advanced capabilities' +// ); +// const registerRadio = screen.getByTestId('registration-radio-now'); +// expect(registerRadio).toHaveFocus(); +// await screen.findByRole('textbox', { +// name: 'Select activation key', +// }); +// // skip registration +// const registerLaterRadio = screen.getByTestId('registration-radio-later'); +// await user.click(registerLaterRadio); + +// await clickNext(); + +// // File system configuration +// await clickNext(); + +// // Packages +// const view = screen.getByTestId('search-available-pkgs-input'); + +// const availablePackagesInput = within(view).getByRole('textbox', { +// name: /search input/i, +// }); +// await waitFor(() => expect(availablePackagesInput).toBeEnabled()); +// expect(availablePackagesInput).toHaveFocus(); +// await clickNext(); + +// // TODO: what should have focus on Custom Repos step? +// await clickNext(); + +// // Name +// const nameInput = screen.getByRole('textbox', { name: /image name/i }); +// expect(nameInput).toHaveFocus(); +// await clickNext(); +// }); + +// test('pressing Esc closes the wizard', async () => { +// await setUp(); +// // wizard needs to be interacted with for the esc key to work +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await user.keyboard('{escape}'); +// expect(router.state.location.pathname).toBe('/insights/image-builder'); +// }); + +// test('pressing Enter does not advance the wizard', async () => { +// await setUp(); +// await waitFor( +// async () => await user.click(await screen.findByTestId('upload-aws')) +// ); +// await user.keyboard('{enter}'); +// screen.getByRole('heading', { +// name: /image output/i, +// }); +// }); + +// test('target environment tiles are keyboard selectable', async () => { +// const testTile = async (tile) => { +// tile.focus(); +// await user.keyboard('{space}'); +// expect(tile).toHaveClass('pf-m-selected'); +// await user.keyboard('{space}'); +// expect(tile).not.toHaveClass('pf-m-selected'); +// }; + +// await setUp(); +// await clickNext(); + +// await waitFor(() => screen.findByTestId('upload-aws')); +// testTile(screen.getByTestId('upload-aws')); +// testTile(screen.getByTestId('upload-google')); +// testTile(screen.getByTestId('upload-azure')); +// }); +// });