diff --git a/kafka-ui-react-app/package.json b/kafka-ui-react-app/package.json
index 7420b8bddf..fa1842dedb 100644
--- a/kafka-ui-react-app/package.json
+++ b/kafka-ui-react-app/package.json
@@ -82,7 +82,7 @@
"@openapitools/openapi-generator-cli": "^2.5.1",
"@testing-library/dom": "^8.11.1",
"@testing-library/jest-dom": "^5.16.4",
- "@testing-library/user-event": "^13.5.0",
+ "@testing-library/user-event": "^14.4.3",
"@types/eventsource": "^1.1.8",
"@types/jest": "^29.0.1",
"@types/lodash": "^4.14.172",
diff --git a/kafka-ui-react-app/pnpm-lock.yaml b/kafka-ui-react-app/pnpm-lock.yaml
index aabb45ce34..88fcfac42e 100644
--- a/kafka-ui-react-app/pnpm-lock.yaml
+++ b/kafka-ui-react-app/pnpm-lock.yaml
@@ -19,7 +19,7 @@ specifiers:
'@testing-library/dom': ^8.11.1
'@testing-library/jest-dom': ^5.16.4
'@testing-library/react': ^13.2.0
- '@testing-library/user-event': ^13.5.0
+ '@testing-library/user-event': ^14.4.3
'@types/eventsource': ^1.1.8
'@types/jest': ^29.0.1
'@types/lodash': ^4.14.172
@@ -144,7 +144,7 @@ devDependencies:
'@openapitools/openapi-generator-cli': 2.5.1
'@testing-library/dom': 8.13.0
'@testing-library/jest-dom': 5.16.4
- '@testing-library/user-event': 13.5.0_tlwynutqiyp5mns3woioasuxnq
+ '@testing-library/user-event': 14.4.3_tlwynutqiyp5mns3woioasuxnq
'@types/eventsource': 1.1.8
'@types/jest': 29.0.1
'@types/lodash': 4.14.177
@@ -3337,13 +3337,12 @@ packages:
react-dom: 18.1.0_react@18.1.0
dev: false
- /@testing-library/user-event/13.5.0_tlwynutqiyp5mns3woioasuxnq:
- resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==}
- engines: {node: '>=10', npm: '>=6'}
+ /@testing-library/user-event/14.4.3_tlwynutqiyp5mns3woioasuxnq:
+ resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==}
+ engines: {node: '>=12', npm: '>=6'}
peerDependencies:
'@testing-library/dom': '>=7.21.4'
dependencies:
- '@babel/runtime': 7.17.9
'@testing-library/dom': 8.13.0
dev: true
diff --git a/kafka-ui-react-app/src/components/Brokers/Broker/BrokerLogdir/__test__/BrokerLogdir.spec.tsx b/kafka-ui-react-app/src/components/Brokers/Broker/BrokerLogdir/__test__/BrokerLogdir.spec.tsx
index bb48fde32a..b8ae5bcd58 100644
--- a/kafka-ui-react-app/src/components/Brokers/Broker/BrokerLogdir/__test__/BrokerLogdir.spec.tsx
+++ b/kafka-ui-react-app/src/components/Brokers/Broker/BrokerLogdir/__test__/BrokerLogdir.spec.tsx
@@ -2,7 +2,6 @@ import React from 'react';
import { render, WithRoute } from 'lib/testHelpers';
import { screen } from '@testing-library/dom';
import { clusterBrokerPath } from 'lib/paths';
-import { act } from '@testing-library/react';
import { brokerLogDirsPayload } from 'lib/fixtures/brokers';
import { useBrokerLogDirs } from 'lib/hooks/api/brokers';
import { BrokerLogdirs } from 'generated-sources';
@@ -20,16 +19,14 @@ describe('BrokerLogdir Component', () => {
(useBrokerLogDirs as jest.Mock).mockImplementation(() => ({
data: payload,
}));
- await act(() => {
- render(
-
-
- ,
- {
- initialEntries: [clusterBrokerPath(clusterName, brokerId)],
- }
- );
- });
+ await render(
+
+
+ ,
+ {
+ initialEntries: [clusterBrokerPath(clusterName, brokerId)],
+ }
+ );
};
it('shows warning when server returns undefined logDirs response', async () => {
diff --git a/kafka-ui-react-app/src/components/Brokers/Broker/Configs/__test__/Configs.spec.tsx b/kafka-ui-react-app/src/components/Brokers/Broker/Configs/__test__/Configs.spec.tsx
index 500e65cfdc..d82065eb32 100644
--- a/kafka-ui-react-app/src/components/Brokers/Broker/Configs/__test__/Configs.spec.tsx
+++ b/kafka-ui-react-app/src/components/Brokers/Broker/Configs/__test__/Configs.spec.tsx
@@ -6,7 +6,6 @@ import { useBrokerConfig } from 'lib/hooks/api/brokers';
import { brokerConfigPayload } from 'lib/fixtures/brokers';
import Configs from 'components/Brokers/Broker/Configs/Configs';
import userEvent from '@testing-library/user-event';
-import { act } from '@testing-library/react';
const clusterName = 'Cluster_Name';
const brokerId = 'Broker_Id';
@@ -42,9 +41,7 @@ describe('Configs', () => {
});
it('updates textbox value', async () => {
- await act(() => {
- userEvent.click(screen.getAllByLabelText('editAction')[0]);
- });
+ await userEvent.click(screen.getAllByLabelText('editAction')[0]);
const textbox = screen.getByLabelText('inputValue');
expect(textbox).toBeInTheDocument();
@@ -59,9 +56,9 @@ describe('Configs', () => {
screen.getByRole('button', { name: 'cancelAction' })
).toBeInTheDocument();
- await act(() => {
- userEvent.click(screen.getByRole('button', { name: 'confirmAction' }));
- });
+ await userEvent.click(
+ screen.getByRole('button', { name: 'confirmAction' })
+ );
expect(
screen.getByText('Are you sure you want to change the value?')
diff --git a/kafka-ui-react-app/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx b/kafka-ui-react-app/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx
index b90cef0a43..b11d477b60 100644
--- a/kafka-ui-react-app/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx
+++ b/kafka-ui-react-app/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx
@@ -2,7 +2,6 @@ import React from 'react';
import { render, WithRoute } from 'lib/testHelpers';
import { screen, waitFor } from '@testing-library/dom';
import { clusterBrokerPath, clusterBrokersPath } from 'lib/paths';
-import { act } from '@testing-library/react';
import BrokersList from 'components/Brokers/BrokersList/BrokersList';
import userEvent from '@testing-library/user-event';
import { useBrokers } from 'lib/hooks/api/brokers';
@@ -57,9 +56,8 @@ describe('BrokersList Component', () => {
});
it('opens broker when row clicked', async () => {
renderComponent();
- await act(() => {
- userEvent.click(screen.getByRole('cell', { name: '0' }));
- });
+ await userEvent.click(screen.getByRole('cell', { name: '0' }));
+
await waitFor(() =>
expect(mockedUsedNavigate).toBeCalledWith(
clusterBrokerPath(clusterName, '0')
diff --git a/kafka-ui-react-app/src/components/Cluster/__tests__/Cluster.spec.tsx b/kafka-ui-react-app/src/components/Cluster/__tests__/Cluster.spec.tsx
index b718db8b29..9fcb77a79a 100644
--- a/kafka-ui-react-app/src/components/Cluster/__tests__/Cluster.spec.tsx
+++ b/kafka-ui-react-app/src/components/Cluster/__tests__/Cluster.spec.tsx
@@ -13,7 +13,6 @@ import {
clusterSchemasPath,
clusterTopicsPath,
} from 'lib/paths';
-import { act } from 'react-dom/test-utils';
import { useClusters } from 'lib/hooks/api/clusters';
import { onlineClusterPayload } from 'lib/fixtures/clusters';
@@ -54,14 +53,12 @@ describe('Cluster', () => {
(useClusters as jest.Mock).mockImplementation(() => ({
data: payload,
}));
- await act(() => {
- render(
-
-
- ,
- { initialEntries: [pathname] }
- );
- });
+ await render(
+
+
+ ,
+ { initialEntries: [pathname] }
+ );
};
it('renders Brokers', async () => {
diff --git a/kafka-ui-react-app/src/components/Connect/Details/Actions/__tests__/Actions.spec.tsx b/kafka-ui-react-app/src/components/Connect/Details/Actions/__tests__/Actions.spec.tsx
index 878e8bcee6..c3c4cff8f1 100644
--- a/kafka-ui-react-app/src/components/Connect/Details/Actions/__tests__/Actions.spec.tsx
+++ b/kafka-ui-react-app/src/components/Connect/Details/Actions/__tests__/Actions.spec.tsx
@@ -33,10 +33,10 @@ const expectActionButtonsExists = () => {
expect(screen.getByText('Restart Failed Tasks')).toBeInTheDocument();
expect(screen.getByText('Delete')).toBeInTheDocument();
};
-const afterClickDropDownButton = () => {
+const afterClickDropDownButton = async () => {
const dropDownButton = screen.getAllByRole('button');
expect(dropDownButton.length).toEqual(1);
- userEvent.click(dropDownButton[0]);
+ await userEvent.click(dropDownButton[0]);
};
describe('Actions', () => {
afterEach(() => {
@@ -61,48 +61,48 @@ describe('Actions', () => {
{ initialEntries: [path] }
);
- it('renders buttons when paused', () => {
+ it('renders buttons when paused', async () => {
(useConnector as jest.Mock).mockImplementation(() => ({
data: set({ ...connector }, 'status.state', ConnectorState.PAUSED),
}));
renderComponent();
- afterClickDropDownButton();
+ await afterClickDropDownButton();
expect(screen.getAllByRole('menuitem').length).toEqual(5);
expect(screen.getByText('Resume')).toBeInTheDocument();
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
expectActionButtonsExists();
});
- it('renders buttons when failed', () => {
+ it('renders buttons when failed', async () => {
(useConnector as jest.Mock).mockImplementation(() => ({
data: set({ ...connector }, 'status.state', ConnectorState.FAILED),
}));
renderComponent();
- afterClickDropDownButton();
+ await afterClickDropDownButton();
expect(screen.getAllByRole('menuitem').length).toEqual(4);
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
expectActionButtonsExists();
});
- it('renders buttons when unassigned', () => {
+ it('renders buttons when unassigned', async () => {
(useConnector as jest.Mock).mockImplementation(() => ({
data: set({ ...connector }, 'status.state', ConnectorState.UNASSIGNED),
}));
renderComponent();
- afterClickDropDownButton();
+ await afterClickDropDownButton();
expect(screen.getAllByRole('menuitem').length).toEqual(4);
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
expectActionButtonsExists();
});
- it('renders buttons when running connector action', () => {
+ it('renders buttons when running connector action', async () => {
(useConnector as jest.Mock).mockImplementation(() => ({
data: set({ ...connector }, 'status.state', ConnectorState.RUNNING),
}));
renderComponent();
- afterClickDropDownButton();
+ await afterClickDropDownButton();
expect(screen.getAllByRole('menuitem').length).toEqual(5);
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
expect(screen.getByText('Pause')).toBeInTheDocument();
@@ -118,34 +118,34 @@ describe('Actions', () => {
it('opens confirmation modal when delete button clicked', async () => {
renderComponent();
- afterClickDropDownButton();
- await waitFor(() =>
+ await afterClickDropDownButton();
+ await waitFor(async () =>
userEvent.click(screen.getByRole('menuitem', { name: 'Delete' }))
);
expect(screen.getByRole('dialog')).toBeInTheDocument();
});
- it('calls restartConnector when restart button clicked', () => {
+ it('calls restartConnector when restart button clicked', async () => {
const restartConnector = jest.fn();
(useUpdateConnectorState as jest.Mock).mockImplementation(() => ({
mutateAsync: restartConnector,
}));
renderComponent();
- afterClickDropDownButton();
- userEvent.click(
+ await afterClickDropDownButton();
+ await userEvent.click(
screen.getByRole('menuitem', { name: 'Restart Connector' })
);
expect(restartConnector).toHaveBeenCalledWith(ConnectorAction.RESTART);
});
- it('calls restartAllTasks', () => {
+ it('calls restartAllTasks', async () => {
const restartAllTasks = jest.fn();
(useUpdateConnectorState as jest.Mock).mockImplementation(() => ({
mutateAsync: restartAllTasks,
}));
renderComponent();
- afterClickDropDownButton();
- userEvent.click(
+ await afterClickDropDownButton();
+ await userEvent.click(
screen.getByRole('menuitem', { name: 'Restart All Tasks' })
);
expect(restartAllTasks).toHaveBeenCalledWith(
@@ -153,14 +153,14 @@ describe('Actions', () => {
);
});
- it('calls restartFailedTasks', () => {
+ it('calls restartFailedTasks', async () => {
const restartFailedTasks = jest.fn();
(useUpdateConnectorState as jest.Mock).mockImplementation(() => ({
mutateAsync: restartFailedTasks,
}));
renderComponent();
- afterClickDropDownButton();
- userEvent.click(
+ await afterClickDropDownButton();
+ await userEvent.click(
screen.getByRole('menuitem', { name: 'Restart Failed Tasks' })
);
expect(restartFailedTasks).toHaveBeenCalledWith(
@@ -168,18 +168,18 @@ describe('Actions', () => {
);
});
- it('calls pauseConnector when pause button clicked', () => {
+ it('calls pauseConnector when pause button clicked', async () => {
const pauseConnector = jest.fn();
(useUpdateConnectorState as jest.Mock).mockImplementation(() => ({
mutateAsync: pauseConnector,
}));
renderComponent();
- afterClickDropDownButton();
- userEvent.click(screen.getByRole('menuitem', { name: 'Pause' }));
+ await afterClickDropDownButton();
+ await userEvent.click(screen.getByRole('menuitem', { name: 'Pause' }));
expect(pauseConnector).toHaveBeenCalledWith(ConnectorAction.PAUSE);
});
- it('calls resumeConnector when resume button clicked', () => {
+ it('calls resumeConnector when resume button clicked', async () => {
const resumeConnector = jest.fn();
(useConnector as jest.Mock).mockImplementation(() => ({
data: set({ ...connector }, 'status.state', ConnectorState.PAUSED),
@@ -188,8 +188,8 @@ describe('Actions', () => {
mutateAsync: resumeConnector,
}));
renderComponent();
- afterClickDropDownButton();
- userEvent.click(screen.getByRole('menuitem', { name: 'Resume' }));
+ await afterClickDropDownButton();
+ await userEvent.click(screen.getByRole('menuitem', { name: 'Resume' }));
expect(resumeConnector).toHaveBeenCalledWith(ConnectorAction.RESUME);
});
});
diff --git a/kafka-ui-react-app/src/components/Connect/Details/Tasks/__tests__/Tasks.spec.tsx b/kafka-ui-react-app/src/components/Connect/Details/Tasks/__tests__/Tasks.spec.tsx
index da38068a20..dba12d4b0e 100644
--- a/kafka-ui-react-app/src/components/Connect/Details/Tasks/__tests__/Tasks.spec.tsx
+++ b/kafka-ui-react-app/src/components/Connect/Details/Tasks/__tests__/Tasks.spec.tsx
@@ -57,7 +57,7 @@ describe('Tasks', () => {
).toBeInTheDocument();
});
- it('renders truncates long trace and expands', () => {
+ it('renders truncates long trace and expands', async () => {
renderComponent(tasks);
const trace = tasks[2]?.status?.trace || '';
@@ -72,7 +72,7 @@ describe('Tasks', () => {
// Full trace is not visible
expect(expandedDetails).not.toBeInTheDocument();
- userEvent.click(thirdRow);
+ await userEvent.click(thirdRow);
expect(
screen.getByRole('row', {
@@ -82,7 +82,7 @@ describe('Tasks', () => {
});
describe('Action button', () => {
- const expectDropdownExists = () => {
+ const expectDropdownExists = async () => {
const firstTaskRow = screen.getByRole('row', {
name: '1 kafka-connect0:8083 RUNNING',
});
@@ -91,13 +91,13 @@ describe('Tasks', () => {
name: 'Dropdown Toggle',
});
expect(extBtn).toBeEnabled();
- userEvent.click(extBtn);
+ await userEvent.click(extBtn);
expect(screen.getByRole('menu')).toBeInTheDocument();
};
- it('renders action button', () => {
+ it('renders action button', async () => {
renderComponent(tasks);
- expectDropdownExists();
+ await expectDropdownExists();
expect(
screen.getAllByRole('button', { name: 'Dropdown Toggle' }).length
).toEqual(tasks.length);
@@ -108,11 +108,11 @@ describe('Tasks', () => {
it('works as expected', async () => {
renderComponent(tasks);
- expectDropdownExists();
+ await expectDropdownExists();
const actionBtn = screen.getAllByRole('menuitem');
expect(actionBtn[0]).toHaveTextContent('Restart task');
- userEvent.click(actionBtn[0]);
+ await userEvent.click(actionBtn[0]);
expect(
screen.getByText('Are you sure you want to restart the task?')
).toBeInTheDocument();
diff --git a/kafka-ui-react-app/src/components/Connect/List/__tests__/List.spec.tsx b/kafka-ui-react-app/src/components/Connect/List/__tests__/List.spec.tsx
index 04a7ba8150..9de28f38ff 100644
--- a/kafka-ui-react-app/src/components/Connect/List/__tests__/List.spec.tsx
+++ b/kafka-ui-react-app/src/components/Connect/List/__tests__/List.spec.tsx
@@ -5,7 +5,7 @@ import ClusterContext, {
initialValue,
} from 'components/contexts/ClusterContext';
import List from 'components/Connect/List/List';
-import { act, screen, waitFor } from '@testing-library/react';
+import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { render, WithRoute } from 'lib/testHelpers';
import { clusterConnectConnectorPath, clusterConnectorsPath } from 'lib/paths';
@@ -52,13 +52,11 @@ describe('Connectors List', () => {
it('opens broker when row clicked', async () => {
renderComponent();
- await act(() => {
- userEvent.click(
- screen.getByRole('row', {
- name: 'hdfs-source-connector first SOURCE FileStreamSource a b c RUNNING 2 of 2',
- })
- );
- });
+ await userEvent.click(
+ screen.getByRole('row', {
+ name: 'hdfs-source-connector first SOURCE FileStreamSource a b c RUNNING 2 of 2',
+ })
+ );
await waitFor(() =>
expect(mockedUsedNavigate).toBeCalledWith(
clusterConnectConnectorPath(
@@ -105,7 +103,7 @@ describe('Connectors List', () => {
const submitButton = screen.getAllByRole('button', {
name: 'Confirm',
})[0];
- await act(() => userEvent.click(submitButton));
+ await userEvent.click(submitButton);
expect(mockDelete).toHaveBeenCalledWith();
});
diff --git a/kafka-ui-react-app/src/components/Connect/New/__tests__/New.spec.tsx b/kafka-ui-react-app/src/components/Connect/New/__tests__/New.spec.tsx
index bbb710a8af..3b93c2d86c 100644
--- a/kafka-ui-react-app/src/components/Connect/New/__tests__/New.spec.tsx
+++ b/kafka-ui-react-app/src/components/Connect/New/__tests__/New.spec.tsx
@@ -31,16 +31,14 @@ jest.mock('lib/hooks/api/kafkaConnect', () => ({
describe('New', () => {
const clusterName = 'my-cluster';
const simulateFormSubmit = async () => {
- await act(() => {
- userEvent.type(
- screen.getByPlaceholderText('Connector Name'),
- 'my-connector'
- );
- userEvent.type(
- screen.getByPlaceholderText('json'),
- '{"class":"MyClass"}'.replace(/[{[]/g, '$&$&')
- );
- });
+ await userEvent.type(
+ screen.getByPlaceholderText('Connector Name'),
+ 'my-connector'
+ );
+ await userEvent.type(
+ screen.getByPlaceholderText('json'),
+ '{"class":"MyClass"}'.replace(/[{[]/g, '$&$&')
+ );
expect(screen.getByPlaceholderText('json')).toHaveValue(
'{"class":"MyClass"}'
diff --git a/kafka-ui-react-app/src/components/ConsumerGroups/Details/ResetOffsets/__test__/ResetOffsets.spec.tsx b/kafka-ui-react-app/src/components/ConsumerGroups/Details/ResetOffsets/__test__/ResetOffsets.spec.tsx
index 963600b797..9b0682f04f 100644
--- a/kafka-ui-react-app/src/components/ConsumerGroups/Details/ResetOffsets/__test__/ResetOffsets.spec.tsx
+++ b/kafka-ui-react-app/src/components/ConsumerGroups/Details/ResetOffsets/__test__/ResetOffsets.spec.tsx
@@ -33,25 +33,24 @@ const resetConsumerGroupOffsetsMockCalled = () =>
).toBeTruthy();
const selectresetTypeAndPartitions = async (resetType: string) => {
- userEvent.click(screen.getByLabelText('Reset Type'));
- userEvent.click(screen.getByText(resetType));
- userEvent.click(screen.getByText('Select...'));
- await waitFor(() => {
- userEvent.click(screen.getByText('Partition #0'));
- });
+ await userEvent.click(screen.getByLabelText('Reset Type'));
+ await userEvent.click(screen.getByText(resetType));
+ await userEvent.click(screen.getByText('Select...'));
+
+ await userEvent.click(screen.getByText('Partition #0'));
};
const resetConsumerGroupOffsetsWith = async (
resetType: string,
offset: null | number = null
) => {
- userEvent.click(screen.getByLabelText('Reset Type'));
+ await userEvent.click(screen.getByLabelText('Reset Type'));
const options = screen.getAllByText(resetType);
- userEvent.click(options.length > 1 ? options[1] : options[0]);
- userEvent.click(screen.getByText('Select...'));
- await waitFor(() => {
- userEvent.click(screen.getByText('Partition #0'));
- });
+ await userEvent.click(options.length > 1 ? options[1] : options[0]);
+ await userEvent.click(screen.getByText('Select...'));
+
+ await userEvent.click(screen.getByText('Partition #0'));
+
fetchMock.postOnce(
`/api/clusters/${clusterName}/consumer-groups/${groupId}/offsets`,
200,
@@ -64,7 +63,7 @@ const resetConsumerGroupOffsetsWith = async (
},
}
);
- userEvent.click(screen.getByText('Submit'));
+ await userEvent.click(screen.getByText('Submit'));
await waitFor(() => resetConsumerGroupOffsetsMockCalled());
};
@@ -116,14 +115,14 @@ describe('ResetOffsets', () => {
},
}
);
- await waitFor(() => {
- userEvent.click(screen.getAllByLabelText('Partition #0')[1]);
- });
- await waitFor(() => {
- userEvent.keyboard('10');
- });
- userEvent.click(screen.getByText('Submit'));
- await waitFor(() => resetConsumerGroupOffsetsMockCalled());
+
+ await userEvent.click(screen.getAllByLabelText('Partition #0')[1]);
+
+ await userEvent.keyboard('10');
+
+ await userEvent.click(screen.getByText('Submit'));
+
+ await resetConsumerGroupOffsetsMockCalled();
});
it('calls resetConsumerGroupOffsets with TIMESTAMP', async () => {
await selectresetTypeAndPartitions('TIMESTAMP');
@@ -139,7 +138,7 @@ describe('ResetOffsets', () => {
},
}
);
- userEvent.click(screen.getByText('Submit'));
+ await userEvent.click(screen.getByText('Submit'));
await waitFor(() =>
expect(
screen.getByText("This field shouldn't be empty!")
diff --git a/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/Details.spec.tsx b/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/Details.spec.tsx
index e086de8b63..195e71411a 100644
--- a/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/Details.spec.tsx
+++ b/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/Details.spec.tsx
@@ -13,7 +13,6 @@ import {
waitForElementToBeRemoved,
} from '@testing-library/dom';
import userEvent from '@testing-library/user-event';
-import { act } from '@testing-library/react';
const clusterName = 'cluster1';
const { groupId } = consumerGroupPayload;
@@ -71,7 +70,7 @@ describe('Details component', () => {
});
it('handles [Reset offset] click', async () => {
- userEvent.click(screen.getByText('Reset offset'));
+ await userEvent.click(screen.getByText('Reset offset'));
expect(mockNavigate).toHaveBeenLastCalledWith(
clusterConsumerGroupResetRelativePath
);
@@ -86,19 +85,19 @@ describe('Details component', () => {
it('shows confirmation modal on consumer group delete', async () => {
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
- userEvent.click(screen.getByText('Delete consumer group'));
+ await userEvent.click(screen.getByText('Delete consumer group'));
await waitFor(() =>
expect(screen.queryByRole('dialog')).toBeInTheDocument()
);
- userEvent.click(screen.getByText('Cancel'));
+ await userEvent.click(screen.getByText('Cancel'));
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
});
it('handles [Delete consumer group] click', async () => {
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
- await act(() => {
- userEvent.click(screen.getByText('Delete consumer group'));
- });
+
+ await userEvent.click(screen.getByText('Delete consumer group'));
+
expect(screen.queryByRole('dialog')).toBeInTheDocument();
const deleteConsumerGroupMock = fetchMock.deleteOnce(
`/api/clusters/${clusterName}/consumer-groups/${groupId}`,
diff --git a/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/ListItem.spec.tsx b/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/ListItem.spec.tsx
index 5bbce7a927..c4906e9209 100644
--- a/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/ListItem.spec.tsx
+++ b/kafka-ui-react-app/src/components/ConsumerGroups/Details/__tests__/ListItem.spec.tsx
@@ -39,8 +39,8 @@ describe('ListItem', () => {
expect(screen.getByRole('row')).toBeInTheDocument();
});
- it('should renders list item with topic content open', () => {
- userEvent.click(screen.getAllByRole('cell')[0].children[0]);
+ it('should renders list item with topic content open', async () => {
+ await userEvent.click(screen.getAllByRole('cell')[0].children[0]);
expect(screen.getByText('Consumer ID')).toBeInTheDocument();
});
});
diff --git a/kafka-ui-react-app/src/components/ConsumerGroups/List/__test__/List.spec.tsx b/kafka-ui-react-app/src/components/ConsumerGroups/List/__test__/List.spec.tsx
index 500549c0aa..a1393c2ccd 100644
--- a/kafka-ui-react-app/src/components/ConsumerGroups/List/__test__/List.spec.tsx
+++ b/kafka-ui-react-app/src/components/ConsumerGroups/List/__test__/List.spec.tsx
@@ -48,10 +48,10 @@ describe('List', () => {
expect(screen.getByText('groupId2')).toBeInTheDocument();
});
- it('handles onRowClick', () => {
+ it('handles onRowClick', async () => {
const row = screen.getByRole('row', { name: 'groupId1 0 1 1' });
expect(row).toBeInTheDocument();
- userEvent.click(row);
+ await userEvent.click(row);
expect(mockedUsedNavigate).toHaveBeenCalledWith(
clusterConsumerGroupDetailsPath(':clusterName', 'groupId1')
);
diff --git a/kafka-ui-react-app/src/components/Dashboard/ClustersWidget/__test__/ClustersWidget.spec.tsx b/kafka-ui-react-app/src/components/Dashboard/ClustersWidget/__test__/ClustersWidget.spec.tsx
index dfdcb34179..2d6f967e2c 100644
--- a/kafka-ui-react-app/src/components/Dashboard/ClustersWidget/__test__/ClustersWidget.spec.tsx
+++ b/kafka-ui-react-app/src/components/Dashboard/ClustersWidget/__test__/ClustersWidget.spec.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { act, screen } from '@testing-library/react';
+import { screen } from '@testing-library/react';
import ClustersWidget from 'components/Dashboard/ClustersWidget/ClustersWidget';
import userEvent from '@testing-library/user-event';
import { render } from 'lib/testHelpers';
@@ -16,18 +16,16 @@ describe('ClustersWidget', () => {
data: clustersPayload,
isSuccess: true,
}));
- await act(() => {
- render();
- });
+ await render();
});
it('renders clusterWidget list', () => {
expect(screen.getAllByRole('row').length).toBe(3);
});
- it('hides online cluster widgets', () => {
+ it('hides online cluster widgets', async () => {
expect(screen.getAllByRole('row').length).toBe(3);
- userEvent.click(screen.getByRole('checkbox'));
+ await userEvent.click(screen.getByRole('checkbox'));
expect(screen.getAllByRole('row').length).toBe(2);
});
diff --git a/kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/__test__/KsqlDbItem.spec.tsx b/kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/__test__/KsqlDbItem.spec.tsx
index 366f01c020..ea6705b6a4 100644
--- a/kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/__test__/KsqlDbItem.spec.tsx
+++ b/kafka-ui-react-app/src/components/KsqlDb/List/KsqlDbItem/__test__/KsqlDbItem.spec.tsx
@@ -7,7 +7,6 @@ import KsqlDbItem, {
} from 'components/KsqlDb/List/KsqlDbItem/KsqlDbItem';
import { screen } from '@testing-library/dom';
import { fetchKsqlDbTablesPayload } from 'redux/reducers/ksqlDb/__test__/fixtures';
-import { act } from '@testing-library/react';
describe('KsqlDbItem', () => {
const tablesPathname = clusterKsqlDbTablesPath();
@@ -27,37 +26,34 @@ describe('KsqlDbItem', () => {
);
};
- it('renders progressbar when fetching tables and streams', async () => {
- await act(() => renderComponent({ fetching: true }));
+ it('renders progressbar when fetching tables and streams', () => {
+ renderComponent({ fetching: true });
expect(screen.getByRole('progressbar')).toBeInTheDocument();
});
- it('show no text if no data found', async () => {
- await act(() => renderComponent({}));
+ it('show no text if no data found', () => {
+ renderComponent({});
expect(screen.getByText('No tables or streams found')).toBeInTheDocument();
});
- it('renders with tables', async () => {
- await act(() =>
- renderComponent({
- rows: {
- tables: fetchKsqlDbTablesPayload.tables,
- streams: [],
- },
- })
- );
+ it('renders with tables', () => {
+ renderComponent({
+ rows: {
+ tables: fetchKsqlDbTablesPayload.tables,
+ streams: [],
+ },
+ });
+
expect(screen.getByRole('table').querySelectorAll('td')).toHaveLength(10);
});
- it('renders with streams', async () => {
- await act(() =>
- renderComponent({
- type: KsqlDbItemType.Streams,
- rows: {
- tables: [],
- streams: fetchKsqlDbTablesPayload.streams,
- },
- })
- );
+ it('renders with streams', () => {
+ renderComponent({
+ type: KsqlDbItemType.Streams,
+ rows: {
+ tables: [],
+ streams: fetchKsqlDbTablesPayload.streams,
+ },
+ });
expect(screen.getByRole('table').querySelectorAll('td')).toHaveLength(10);
});
});
diff --git a/kafka-ui-react-app/src/components/KsqlDb/Query/QueryForm/__test__/QueryForm.spec.tsx b/kafka-ui-react-app/src/components/KsqlDb/Query/QueryForm/__test__/QueryForm.spec.tsx
index 0b8aa60b78..76f8b21335 100644
--- a/kafka-ui-react-app/src/components/KsqlDb/Query/QueryForm/__test__/QueryForm.spec.tsx
+++ b/kafka-ui-react-app/src/components/KsqlDb/Query/QueryForm/__test__/QueryForm.spec.tsx
@@ -3,7 +3,6 @@ import React from 'react';
import QueryForm, { Props } from 'components/KsqlDb/Query/QueryForm/QueryForm';
import { screen, waitFor, within } from '@testing-library/dom';
import userEvent from '@testing-library/user-event';
-import { act } from '@testing-library/react';
const renderComponent = (props: Props) => render();
@@ -57,10 +56,9 @@ describe('QueryForm', () => {
submitHandler: submitFn,
});
- await act(() =>
- userEvent.click(screen.getByRole('button', { name: 'Execute' }))
- );
- waitFor(() => {
+ await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
+
+ await waitFor(() => {
expect(screen.getByText('ksql is a required field')).toBeInTheDocument();
expect(submitFn).not.toBeCalled();
});
@@ -76,12 +74,16 @@ describe('QueryForm', () => {
submitHandler: submitFn,
});
- await act(() => {
- userEvent.paste(screen.getAllByRole('textbox')[0], 'show tables;');
- userEvent.paste(screen.getByRole('textbox', { name: 'key' }), 'test');
- userEvent.paste(screen.getByRole('textbox', { name: 'value' }), 'test');
- userEvent.click(screen.getByRole('button', { name: 'Execute' }));
- });
+ const textbox = screen.getAllByRole('textbox');
+ textbox[0].focus();
+ await userEvent.paste('show tables;');
+ const key = screen.getByRole('textbox', { name: 'key' });
+ key.focus();
+ await userEvent.paste('test');
+ const value = screen.getByRole('textbox', { name: 'value' });
+ value.focus();
+ await userEvent.paste('test');
+ await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
expect(
screen.queryByText('ksql is a required field')
@@ -106,8 +108,8 @@ describe('QueryForm', () => {
expect(screen.getByRole('button', { name: 'Clear results' })).toBeEnabled();
- await act(() =>
- userEvent.click(screen.getByRole('button', { name: 'Clear results' }))
+ await userEvent.click(
+ screen.getByRole('button', { name: 'Clear results' })
);
expect(clearFn).toBeCalled();
@@ -125,39 +127,12 @@ describe('QueryForm', () => {
expect(screen.getByRole('button', { name: 'Stop query' })).toBeEnabled();
- await act(() =>
- userEvent.click(screen.getByRole('button', { name: 'Stop query' }))
- );
+ await userEvent.click(screen.getByRole('button', { name: 'Stop query' }));
expect(cancelFn).toBeCalled();
});
- it('submits form with ctrl+enter on KSQL editor', async () => {
- const submitFn = jest.fn();
- renderComponent({
- fetching: false,
- hasResults: false,
- handleClearResults: jest.fn(),
- handleSSECancel: jest.fn(),
- submitHandler: submitFn,
- });
-
- await act(() => {
- userEvent.paste(
- within(screen.getByLabelText('KSQL')).getByRole('textbox'),
- 'show tables;'
- );
-
- userEvent.type(
- within(screen.getByLabelText('KSQL')).getByRole('textbox'),
- '{ctrl}{enter}'
- );
- });
-
- expect(submitFn.mock.calls.length).toBe(1);
- });
-
- it('adds new property', async () => {
+ it('add new property', async () => {
renderComponent({
fetching: false,
hasResults: false,
@@ -168,11 +143,9 @@ describe('QueryForm', () => {
const textbox = screen.getByLabelText('key');
await userEvent.type(textbox, 'prop_name');
- await act(() => {
- userEvent.click(
- screen.getByRole('button', { name: 'Add Stream Property' })
- );
- });
+ await userEvent.click(
+ screen.getByRole('button', { name: 'Add Stream Property' })
+ );
expect(screen.getAllByRole('textbox', { name: 'key' }).length).toEqual(2);
});
@@ -185,11 +158,9 @@ describe('QueryForm', () => {
submitHandler: jest.fn(),
});
- await act(() => {
- userEvent.click(
- screen.getByRole('button', { name: 'Add Stream Property' })
- );
- });
+ await userEvent.click(
+ screen.getByRole('button', { name: 'Add Stream Property' })
+ );
expect(screen.getAllByRole('textbox', { name: 'key' }).length).toEqual(1);
});
@@ -201,16 +172,18 @@ describe('QueryForm', () => {
handleSSECancel: jest.fn(),
submitHandler: jest.fn(),
});
+ const textBoxes = screen.getAllByRole('textbox', { name: 'key' });
+ textBoxes[0].focus();
+ await userEvent.paste('test');
+ await userEvent.click(
+ screen.getByRole('button', { name: 'Add Stream Property' })
+ );
+ await userEvent.click(screen.getAllByLabelText('deleteProperty')[0]);
- await act(() => {
- userEvent.paste(screen.getByRole('textbox', { name: 'key' }), 'test');
- userEvent.click(
- screen.getByRole('button', { name: 'Add Stream Property' })
- );
- });
- await act(() => {
- userEvent.click(screen.getAllByLabelText('deleteProperty')[0]);
- });
- expect(screen.getAllByRole('textbox', { name: 'key' }).length).toEqual(1);
+ await screen.getByRole('button', { name: 'Add Stream Property' });
+
+ await userEvent.click(screen.getAllByLabelText('deleteProperty')[0]);
+
+ expect(textBoxes.length).toEqual(1);
});
});
diff --git a/kafka-ui-react-app/src/components/KsqlDb/Query/__test__/Query.spec.tsx b/kafka-ui-react-app/src/components/KsqlDb/Query/__test__/Query.spec.tsx
index 985ebde5e5..705d86be5f 100644
--- a/kafka-ui-react-app/src/components/KsqlDb/Query/__test__/Query.spec.tsx
+++ b/kafka-ui-react-app/src/components/KsqlDb/Query/__test__/Query.spec.tsx
@@ -6,7 +6,6 @@ import Query, {
import { screen } from '@testing-library/dom';
import fetchMock from 'fetch-mock';
import { clusterKsqlDbQueryPath } from 'lib/paths';
-import { act } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
const clusterName = 'testLocal';
@@ -41,10 +40,10 @@ describe('Query', () => {
});
const inputs = screen.getAllByRole('textbox');
const textAreaElement = inputs[0] as HTMLTextAreaElement;
- await act(() => {
- userEvent.paste(textAreaElement, 'show tables;');
- userEvent.click(screen.getByRole('button', { name: 'Execute' }));
- });
+
+ textAreaElement.focus();
+ await userEvent.paste('show tables;');
+ await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
expect(mock.calls().length).toBe(1);
});
@@ -59,18 +58,20 @@ describe('Query', () => {
Object.defineProperty(window, 'EventSource', {
value: EventSourceMock,
});
- await act(() => {
- const inputs = screen.getAllByRole('textbox');
- const textAreaElement = inputs[0] as HTMLTextAreaElement;
- userEvent.paste(textAreaElement, 'show tables;');
- });
- await act(() => {
- userEvent.paste(screen.getByLabelText('key'), 'key');
- userEvent.paste(screen.getByLabelText('value'), 'value');
- });
- await act(() => {
- userEvent.click(screen.getByRole('button', { name: 'Execute' }));
- });
+
+ const inputs = screen.getAllByRole('textbox');
+ const textAreaElement = inputs[0] as HTMLTextAreaElement;
+ textAreaElement.focus();
+ await userEvent.paste('show tables;');
+
+ const key = screen.getByLabelText('key');
+ key.focus();
+ await userEvent.paste('key');
+ const value = screen.getByLabelText('value');
+ value.focus();
+ await userEvent.paste('value');
+
+ await userEvent.click(screen.getByRole('button', { name: 'Execute' }));
expect(mock.calls().length).toBe(1);
});
diff --git a/kafka-ui-react-app/src/components/Nav/__tests__/ClusterMenu.spec.tsx b/kafka-ui-react-app/src/components/Nav/__tests__/ClusterMenu.spec.tsx
index 11d273c6ec..22bc1eabf5 100644
--- a/kafka-ui-react-app/src/components/Nav/__tests__/ClusterMenu.spec.tsx
+++ b/kafka-ui-react-app/src/components/Nav/__tests__/ClusterMenu.spec.tsx
@@ -19,19 +19,19 @@ describe('ClusterMenu', () => {
const getKafkaConnect = () => screen.getByTitle('Kafka Connect');
const getCluster = () => screen.getByText(onlineClusterPayload.name);
- it('renders cluster menu with default set of features', () => {
+ it('renders cluster menu with default set of features', async () => {
render(setupComponent(onlineClusterPayload));
expect(getCluster()).toBeInTheDocument();
expect(getMenuItems().length).toEqual(1);
- userEvent.click(getMenuItem());
+ await userEvent.click(getMenuItem());
expect(getMenuItems().length).toEqual(4);
expect(getBrokers()).toBeInTheDocument();
expect(getTopics()).toBeInTheDocument();
expect(getConsumers()).toBeInTheDocument();
});
- it('renders cluster menu with correct set of features', () => {
+ it('renders cluster menu with correct set of features', async () => {
render(
setupComponent({
...onlineClusterPayload,
@@ -43,7 +43,7 @@ describe('ClusterMenu', () => {
})
);
expect(getMenuItems().length).toEqual(1);
- userEvent.click(getMenuItem());
+ await userEvent.click(getMenuItem());
expect(getMenuItems().length).toEqual(7);
expect(getBrokers()).toBeInTheDocument();
@@ -64,7 +64,7 @@ describe('ClusterMenu', () => {
expect(getTopics()).toBeInTheDocument();
expect(getConsumers()).toBeInTheDocument();
});
- it('makes Kafka Connect link active', () => {
+ it('makes Kafka Connect link active', async () => {
render(
setupComponent({
...onlineClusterPayload,
@@ -73,7 +73,7 @@ describe('ClusterMenu', () => {
{ initialEntries: [clusterConnectorsPath(onlineClusterPayload.name)] }
);
expect(getMenuItems().length).toEqual(1);
- userEvent.click(getMenuItem());
+ await userEvent.click(getMenuItem());
expect(getMenuItems().length).toEqual(5);
const kafkaConnect = getKafkaConnect();
diff --git a/kafka-ui-react-app/src/components/Nav/__tests__/Nav.spec.tsx b/kafka-ui-react-app/src/components/Nav/__tests__/Nav.spec.tsx
index 023fdfdba7..582c341411 100644
--- a/kafka-ui-react-app/src/components/Nav/__tests__/Nav.spec.tsx
+++ b/kafka-ui-react-app/src/components/Nav/__tests__/Nav.spec.tsx
@@ -2,7 +2,6 @@ import React from 'react';
import Nav from 'components/Nav/Nav';
import { screen } from '@testing-library/react';
import { render } from 'lib/testHelpers';
-import { act } from 'react-dom/test-utils';
import { Cluster } from 'generated-sources';
import { useClusters } from 'lib/hooks/api/clusters';
import {
@@ -15,28 +14,26 @@ jest.mock('lib/hooks/api/clusters', () => ({
}));
describe('Nav', () => {
- const renderComponent = async (payload: Cluster[] = []) => {
+ const renderComponent = (payload: Cluster[] = []) => {
(useClusters as jest.Mock).mockImplementation(() => ({
data: payload,
isSuccess: true,
}));
- await act(() => {
- render();
- });
+ render();
};
const getDashboard = () => screen.getByText('Dashboard');
const getMenuItemsCount = () => screen.getAllByRole('menuitem').length;
- it('renders loader', async () => {
- await renderComponent();
+ it('renders loader', () => {
+ renderComponent();
expect(getMenuItemsCount()).toEqual(1);
expect(getDashboard()).toBeInTheDocument();
});
- it('renders ClusterMenu', async () => {
- await renderComponent([onlineClusterPayload, offlineClusterPayload]);
+ it('renders ClusterMenu', () => {
+ renderComponent([onlineClusterPayload, offlineClusterPayload]);
expect(screen.getAllByRole('menu').length).toEqual(3);
expect(getMenuItemsCount()).toEqual(3);
expect(getDashboard()).toBeInTheDocument();
diff --git a/kafka-ui-react-app/src/components/Schemas/Details/__test__/Details.spec.tsx b/kafka-ui-react-app/src/components/Schemas/Details/__test__/Details.spec.tsx
index 20f3870c7e..b4c852f145 100644
--- a/kafka-ui-react-app/src/components/Schemas/Details/__test__/Details.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/Details/__test__/Details.spec.tsx
@@ -56,9 +56,7 @@ describe('Details', () => {
schemasAPIVersionsUrl,
404
);
- await act(() => {
- renderComponent();
- });
+ await renderComponent();
await waitFor(() => {
expect(schemasAPILatestMock.called()).toBeTruthy();
diff --git a/kafka-ui-react-app/src/components/Schemas/Details/__test__/SchemaVersion.spec.tsx b/kafka-ui-react-app/src/components/Schemas/Details/__test__/SchemaVersion.spec.tsx
index 2ec3b001a9..cc2aa81e89 100644
--- a/kafka-ui-react-app/src/components/Schemas/Details/__test__/SchemaVersion.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/Details/__test__/SchemaVersion.spec.tsx
@@ -19,7 +19,7 @@ const renderComponent = () => {
};
describe('SchemaVersion', () => {
- it('renders versions', () => {
+ it('renders versions', async () => {
renderComponent();
});
});
diff --git a/kafka-ui-react-app/src/components/Schemas/Edit/__tests__/Edit.spec.tsx b/kafka-ui-react-app/src/components/Schemas/Edit/__tests__/Edit.spec.tsx
index b5dcb28387..0a302757a8 100644
--- a/kafka-ui-react-app/src/components/Schemas/Edit/__tests__/Edit.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/Edit/__tests__/Edit.spec.tsx
@@ -45,9 +45,7 @@ describe('Edit', () => {
describe('fetch failed', () => {
it('renders page loader', async () => {
const schemasAPILatestMock = fetchMock.getOnce(schemasAPILatestUrl, 404);
- await act(() => {
- renderComponent();
- });
+ await renderComponent();
await waitFor(() => expect(schemasAPILatestMock.called()).toBeTruthy());
expect(screen.getByRole('progressbar')).toBeInTheDocument();
expect(screen.queryByText(schemaVersion.subject)).not.toBeInTheDocument();
diff --git a/kafka-ui-react-app/src/components/Schemas/List/GlobalSchemaSelector/__test__/GlobalSchemaSelector.spec.tsx b/kafka-ui-react-app/src/components/Schemas/List/GlobalSchemaSelector/__test__/GlobalSchemaSelector.spec.tsx
index e8e8bcc453..f117c5824a 100644
--- a/kafka-ui-react-app/src/components/Schemas/List/GlobalSchemaSelector/__test__/GlobalSchemaSelector.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/List/GlobalSchemaSelector/__test__/GlobalSchemaSelector.spec.tsx
@@ -9,11 +9,11 @@ import fetchMock from 'fetch-mock';
const clusterName = 'testClusterName';
-const selectForwardOption = () => {
+const selectForwardOption = async () => {
const dropdownElement = screen.getByRole('listbox');
// clicks to open dropdown
- userEvent.click(within(dropdownElement).getByRole('option'));
- userEvent.click(
+ await userEvent.click(within(dropdownElement).getByRole('option'));
+ await userEvent.click(
screen.getByText(CompatibilityLevelCompatibilityEnum.FORWARD)
);
};
@@ -59,19 +59,19 @@ describe('GlobalSchemaSelector', () => {
it('shows popup when select value is changed', async () => {
expectOptionIsSelected(CompatibilityLevelCompatibilityEnum.FULL);
- selectForwardOption();
+ await selectForwardOption();
expect(screen.getByText('Confirm the action')).toBeInTheDocument();
});
- it('resets select value when cancel is clicked', () => {
- selectForwardOption();
- userEvent.click(screen.getByText('Cancel'));
+ it('resets select value when cancel is clicked', async () => {
+ await selectForwardOption();
+ await userEvent.click(screen.getByText('Cancel'));
expect(screen.queryByText('Confirm the action')).not.toBeInTheDocument();
expectOptionIsSelected(CompatibilityLevelCompatibilityEnum.FULL);
});
it('sets new schema when confirm is clicked', async () => {
- selectForwardOption();
+ await selectForwardOption();
const putNewCompatibilityMock = fetchMock.putOnce(
`api/clusters/${clusterName}/schemas/compatibility`,
200,
diff --git a/kafka-ui-react-app/src/components/Schemas/List/__test__/List.spec.tsx b/kafka-ui-react-app/src/components/Schemas/List/__test__/List.spec.tsx
index a6636e5d87..f27f659b2c 100644
--- a/kafka-ui-react-app/src/components/Schemas/List/__test__/List.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/List/__test__/List.spec.tsx
@@ -109,14 +109,14 @@ describe('List', () => {
expect(screen.getByText(schemaVersion1.subject)).toBeInTheDocument();
expect(screen.getByText(schemaVersion2.subject)).toBeInTheDocument();
});
- it('handles onRowClick', () => {
+ it('handles onRowClick', async () => {
const { id, schemaType, subject, version, compatibilityLevel } =
schemaVersion2;
const row = screen.getByRole('row', {
name: `${subject} ${id} ${schemaType} ${version} ${compatibilityLevel}`,
});
expect(row).toBeInTheDocument();
- userEvent.click(row);
+ await userEvent.click(row);
expect(mockedUsedNavigate).toHaveBeenCalledWith(
clusterSchemaPath(clusterName, subject)
);
diff --git a/kafka-ui-react-app/src/components/Schemas/New/__test__/New.spec.tsx b/kafka-ui-react-app/src/components/Schemas/New/__test__/New.spec.tsx
index 6c4972f78f..961833ca0d 100644
--- a/kafka-ui-react-app/src/components/Schemas/New/__test__/New.spec.tsx
+++ b/kafka-ui-react-app/src/components/Schemas/New/__test__/New.spec.tsx
@@ -10,8 +10,8 @@ const subjectValue = 'subject';
const schemaValue = 'schema';
describe('New Component', () => {
- beforeEach(() => {
- render(
+ beforeEach(async () => {
+ await render(
,
@@ -33,14 +33,14 @@ describe('New Component', () => {
const schema = screen.getAllByRole('textbox')[1];
const schemaTypeSelect = screen.getByRole('listbox');
- await act(() => {
- userEvent.type(subject, subjectValue);
+ await act(async () => {
+ await userEvent.type(subject, subjectValue);
});
- await act(() => {
- userEvent.type(schema, schemaValue);
+ await act(async () => {
+ await userEvent.type(schema, schemaValue);
});
- await act(() => {
- userEvent.selectOptions(schemaTypeSelect, ['AVRO']);
+ await act(async () => {
+ await userEvent.selectOptions(schemaTypeSelect, ['AVRO']);
});
const submitBtn = screen.getByRole('button', { name: /Submit/i });
diff --git a/kafka-ui-react-app/src/components/Topics/List/__tests__/ListPage.spec.tsx b/kafka-ui-react-app/src/components/Topics/List/__tests__/ListPage.spec.tsx
index 5c5c3da778..455565824a 100644
--- a/kafka-ui-react-app/src/components/Topics/List/__tests__/ListPage.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/List/__tests__/ListPage.spec.tsx
@@ -33,14 +33,14 @@ describe('ListPage Component', () => {
renderComponent();
});
- it('handles switch of Internal Topics visibility', () => {
+ it('handles switch of Internal Topics visibility', async () => {
const switchInput = screen.getByLabelText('Show Internal Topics');
expect(switchInput).toBeInTheDocument();
expect(global.localStorage.getItem('hideInternalTopics')).toBeNull();
- userEvent.click(switchInput);
+ await userEvent.click(switchInput);
expect(global.localStorage.getItem('hideInternalTopics')).toBeTruthy();
- userEvent.click(switchInput);
+ await userEvent.click(switchInput);
expect(global.localStorage.getItem('hideInternalTopics')).toBeNull();
});
diff --git a/kafka-ui-react-app/src/components/Topics/List/__tests__/TopicTable.spec.tsx b/kafka-ui-react-app/src/components/Topics/List/__tests__/TopicTable.spec.tsx
index 6031428895..4b5f046cd9 100644
--- a/kafka-ui-react-app/src/components/Topics/List/__tests__/TopicTable.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/List/__tests__/TopicTable.spec.tsx
@@ -131,8 +131,8 @@ describe('TopicTable Components', () => {
expect(screen.getAllByRole('checkbox')[2]).toBeEnabled();
});
describe('when only one topic is selected', () => {
- beforeEach(() => {
- userEvent.click(screen.getAllByRole('checkbox')[1]);
+ beforeEach(async () => {
+ await userEvent.click(screen.getAllByRole('checkbox')[1]);
});
it('renders batch actions bar', () => {
expect(getButtonByName('Delete selected topics')).toBeEnabled();
@@ -143,9 +143,9 @@ describe('TopicTable Components', () => {
});
});
describe('when more then one topics are selected', () => {
- beforeEach(() => {
- userEvent.click(screen.getAllByRole('checkbox')[1]);
- userEvent.click(screen.getAllByRole('checkbox')[2]);
+ beforeEach(async () => {
+ await userEvent.click(screen.getAllByRole('checkbox')[1]);
+ await userEvent.click(screen.getAllByRole('checkbox')[2]);
});
it('renders batch actions bar', () => {
expect(getButtonByName('Delete selected topics')).toBeEnabled();
@@ -190,12 +190,12 @@ describe('TopicTable Components', () => {
});
});
describe('Action buttons', () => {
- const expectDropdownExists = () => {
+ const expectDropdownExists = async () => {
const btn = screen.getByRole('button', {
name: 'Dropdown Toggle',
});
expect(btn).toBeEnabled();
- userEvent.click(btn);
+ await userEvent.click(btn);
expect(screen.getByRole('menu')).toBeInTheDocument();
};
it('renders disable action buttons for read-only cluster', () => {
@@ -204,7 +204,7 @@ describe('TopicTable Components', () => {
expect(btns[0]).toBeDisabled();
expect(btns[1]).toBeDisabled();
});
- it('renders action buttons', () => {
+ it('renders action buttons', async () => {
renderComponent({ topics: topicsPayload, pageCount: 1 });
expect(
screen.getAllByRole('button', { name: 'Dropdown Toggle' }).length
@@ -228,7 +228,7 @@ describe('TopicTable Components', () => {
name: 'Dropdown Toggle',
});
expect(extBtn).toBeEnabled();
- userEvent.click(extBtn);
+ await userEvent.click(extBtn);
expect(screen.getByRole('menu')).toBeInTheDocument();
});
describe('and clear messages action', () => {
@@ -241,7 +241,7 @@ describe('TopicTable Components', () => {
},
],
});
- expectDropdownExists();
+ await expectDropdownExists();
const actionBtn = screen.getAllByRole('menuitem');
expect(actionBtn[0]).toHaveTextContent('Clear Messages');
expect(actionBtn[0]).not.toHaveAttribute('aria-disabled');
@@ -255,7 +255,7 @@ describe('TopicTable Components', () => {
},
],
});
- expectDropdownExists();
+ await expectDropdownExists();
const actionBtn = screen.getAllByRole('menuitem');
expect(actionBtn[0]).toHaveTextContent('Clear Messages');
expect(actionBtn[0]).toHaveAttribute('aria-disabled');
@@ -269,8 +269,8 @@ describe('TopicTable Components', () => {
},
],
});
- expectDropdownExists();
- userEvent.click(screen.getByText('Clear Messages'));
+ await expectDropdownExists();
+ await userEvent.click(screen.getByText('Clear Messages'));
expect(
screen.getByText('Are you sure want to clear topic messages?')
).toBeInTheDocument();
@@ -284,22 +284,22 @@ describe('TopicTable Components', () => {
describe('and remove topic action', () => {
it('is visible only when topic deletion allowed for cluster', async () => {
renderComponent({ topics: [topicsPayload[1]] });
- expectDropdownExists();
+ await expectDropdownExists();
const actionBtn = screen.getAllByRole('menuitem');
expect(actionBtn[2]).toHaveTextContent('Remove Topic');
expect(actionBtn[2]).not.toHaveAttribute('aria-disabled');
});
it('is disabled when topic deletion is not allowed for cluster', async () => {
renderComponent({ topics: [topicsPayload[1]] }, false, false);
- expectDropdownExists();
+ await expectDropdownExists();
const actionBtn = screen.getAllByRole('menuitem');
expect(actionBtn[2]).toHaveTextContent('Remove Topic');
expect(actionBtn[2]).toHaveAttribute('aria-disabled');
});
it('works as expected', async () => {
renderComponent({ topics: [topicsPayload[1]] });
- expectDropdownExists();
- userEvent.click(screen.getByText('Remove Topic'));
+ await expectDropdownExists();
+ await userEvent.click(screen.getByText('Remove Topic'));
expect(screen.getByText('Confirm the action')).toBeInTheDocument();
await waitFor(() =>
userEvent.click(screen.getByRole('button', { name: 'Confirm' }))
@@ -310,8 +310,8 @@ describe('TopicTable Components', () => {
describe('and recreate topic action', () => {
it('works as expected', async () => {
renderComponent({ topics: [topicsPayload[1]] });
- expectDropdownExists();
- userEvent.click(screen.getByText('Recreate Topic'));
+ await expectDropdownExists();
+ await userEvent.click(screen.getByText('Recreate Topic'));
expect(screen.getByText('Confirm the action')).toBeInTheDocument();
await waitFor(() =>
userEvent.click(screen.getByRole('button', { name: 'Confirm' }))
diff --git a/kafka-ui-react-app/src/components/Topics/New/__test__/New.spec.tsx b/kafka-ui-react-app/src/components/Topics/New/__test__/New.spec.tsx
index 5cbbbbd2b9..70b6685307 100644
--- a/kafka-ui-react-app/src/components/Topics/New/__test__/New.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/New/__test__/New.spec.tsx
@@ -60,11 +60,14 @@ describe('New', () => {
it('validates form', async () => {
await act(() => renderComponent(clusterTopicNewPath(clusterName)));
- await waitFor(() => {
- userEvent.type(screen.getByPlaceholderText('Topic Name'), topicName);
+ await waitFor(async () => {
+ await userEvent.type(
+ screen.getByPlaceholderText('Topic Name'),
+ topicName
+ );
});
- await waitFor(() => {
- userEvent.clear(screen.getByPlaceholderText('Topic Name'));
+ await waitFor(async () => {
+ await userEvent.clear(screen.getByPlaceholderText('Topic Name'));
});
await waitFor(() => {
expect(screen.getByText('name is a required field')).toBeInTheDocument();
@@ -87,11 +90,14 @@ describe('New', () => {
it('submits valid form', async () => {
await act(() => renderComponent(clusterTopicNewPath(clusterName)));
- await act(() => {
- userEvent.type(screen.getByPlaceholderText('Topic Name'), topicName);
+ await act(async () => {
+ await userEvent.type(
+ screen.getByPlaceholderText('Topic Name'),
+ topicName
+ );
});
- await act(() => {
- userEvent.click(screen.getByText('Create topic'));
+ await act(async () => {
+ await userEvent.click(screen.getByText('Create topic'));
});
await waitFor(() => expect(createTopicMock).toHaveBeenCalledTimes(1));
await waitFor(() =>
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Edit/DangerZone/__test__/DangerZone.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Edit/DangerZone/__test__/DangerZone.spec.tsx
index aa5da64ed6..12961c4e34 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Edit/DangerZone/__test__/DangerZone.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Edit/DangerZone/__test__/DangerZone.spec.tsx
@@ -34,8 +34,8 @@ const renderComponent = (props?: Partial) =>
{ initialEntries: [clusterTopicPath(clusterName, topicName)] }
);
-const clickOnDialogSubmitButton = () => {
- userEvent.click(
+const clickOnDialogSubmitButton = async () => {
+ await userEvent.click(
within(screen.getByRole('dialog')).getByRole('button', {
name: 'Confirm',
})
@@ -45,7 +45,7 @@ const clickOnDialogSubmitButton = () => {
const checkDialogThenPressCancel = async () => {
const dialog = screen.getByRole('dialog');
expect(screen.getByRole('dialog')).toBeInTheDocument();
- userEvent.click(within(dialog).getByRole('button', { name: 'Cancel' }));
+ await userEvent.click(within(dialog).getByRole('button', { name: 'Cancel' }));
await waitFor(() =>
expect(screen.queryByRole('dialog')).not.toBeInTheDocument()
);
@@ -91,11 +91,13 @@ describe('DangerZone', () => {
const numberOfPartitionsEditForm = screen.getByRole('form', {
name: 'Edit number of partitions',
});
- userEvent.type(
+ await userEvent.type(
within(numberOfPartitionsEditForm).getByRole('spinbutton'),
'4'
);
- userEvent.click(within(numberOfPartitionsEditForm).getByRole('button'));
+ await userEvent.click(
+ within(numberOfPartitionsEditForm).getByRole('button')
+ );
await waitFor(() => expect(screen.getByRole('dialog')).toBeInTheDocument());
await waitFor(() => clickOnDialogSubmitButton());
expect(mockIncreaseTopicPartitionsCount).toHaveBeenCalledTimes(1);
@@ -119,11 +121,13 @@ describe('DangerZone', () => {
within(replicationFactorEditForm).getByRole('button', { name: 'Submit' })
).toBeInTheDocument();
- userEvent.type(
+ await userEvent.type(
within(replicationFactorEditForm).getByRole('spinbutton'),
'4'
);
- userEvent.click(within(replicationFactorEditForm).getByRole('button'));
+ await userEvent.click(
+ within(replicationFactorEditForm).getByRole('button')
+ );
await waitFor(() => expect(screen.getByRole('dialog')).toBeInTheDocument());
await waitFor(() => clickOnDialogSubmitButton());
@@ -139,19 +143,19 @@ describe('DangerZone', () => {
const partitionInputSubmitBtn = screen.getAllByText(/submit/i)[0];
const value = (defaultPartitions - 4).toString();
expect(partitionInputSubmitBtn).toBeDisabled();
- await act(() => {
- userEvent.clear(partitionInput);
- userEvent.type(partitionInput, value);
+ await act(async () => {
+ await userEvent.clear(partitionInput);
+ await userEvent.type(partitionInput, value);
});
expect(partitionInput).toHaveValue(+value);
expect(partitionInputSubmitBtn).toBeEnabled();
- await act(() => {
- userEvent.click(partitionInputSubmitBtn);
+ await act(async () => {
+ await userEvent.click(partitionInputSubmitBtn);
});
expect(
screen.getByText(/You can only increase the number of partitions!/i)
).toBeInTheDocument();
- userEvent.clear(partitionInput);
+ await userEvent.clear(partitionInput);
await waitFor(() =>
expect(screen.getByText(/are required/i)).toBeInTheDocument()
);
@@ -166,11 +170,11 @@ describe('DangerZone', () => {
await waitFor(() => userEvent.clear(replicatorFactorInput));
expect(replicatorFactorInputSubmitBtn).toBeEnabled();
- userEvent.click(replicatorFactorInputSubmitBtn);
+ await userEvent.click(replicatorFactorInputSubmitBtn);
await waitFor(() =>
expect(screen.getByText(/are required/i)).toBeInTheDocument()
);
- userEvent.type(replicatorFactorInput, '1');
+ await userEvent.type(replicatorFactorInput, '1');
await waitFor(() =>
expect(screen.queryByText(/are required/i)).not.toBeInTheDocument()
);
@@ -182,9 +186,9 @@ describe('DangerZone', () => {
const partitionInput = screen.getByPlaceholderText('Number of partitions');
const partitionInputSubmitBtn = screen.getAllByText(/submit/i)[0];
- await act(() => {
- userEvent.type(partitionInput, '5');
- userEvent.click(partitionInputSubmitBtn);
+ await act(async () => {
+ await userEvent.type(partitionInput, '5');
+ await userEvent.click(partitionInputSubmitBtn);
});
await checkDialogThenPressCancel();
@@ -196,9 +200,9 @@ describe('DangerZone', () => {
screen.getByPlaceholderText('Replication Factor');
const replicatorFactorInputSubmitBtn = screen.getAllByText(/submit/i)[1];
- await act(() => {
- userEvent.type(replicatorFactorInput, '5');
- userEvent.click(replicatorFactorInputSubmitBtn);
+ await act(async () => {
+ await userEvent.type(replicatorFactorInput, '5');
+ await userEvent.click(replicatorFactorInputSubmitBtn);
});
await checkDialogThenPressCancel();
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddEditFilterContainer.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddEditFilterContainer.spec.tsx
index 38c3b01fab..fbd73695ca 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddEditFilterContainer.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddEditFilterContainer.spec.tsx
@@ -15,16 +15,18 @@ describe('AddEditFilterContainer component', () => {
code: 'mockCode',
};
- const renderComponent = (
+ const renderComponent = async (
props: Partial = {}
) => {
- render(
-
- );
+ await act(() => {
+ render(
+
+ );
+ });
};
describe('default Component Parameters', () => {
@@ -43,35 +45,32 @@ describe('AddEditFilterContainer component', () => {
const inputs = screen.getAllByRole('textbox');
const textAreaElement = inputs[0] as HTMLTextAreaElement;
- await act(() =>
- userEvent.paste(textAreaElement, 'Hello World With TextArea')
- );
+ textAreaElement.focus();
+ await userEvent.paste('Hello World With TextArea');
- const inputNameElement = inputs[1];
- await act(() => userEvent.type(inputNameElement, 'Hello World!'));
+ const inputNameElement = inputs[1] as HTMLTextAreaElement;
+ await userEvent.type(inputNameElement, 'Hello World!');
expect(submitButtonElem).toBeEnabled();
- await act(() => userEvent.clear(inputNameElement));
+ await userEvent.clear(inputNameElement);
+ await userEvent.tab();
expect(submitButtonElem).toBeDisabled();
});
it('should view the error message after typing and clearing the input', async () => {
const inputs = screen.getAllByRole('textbox');
-
+ const user = userEvent.setup();
const textAreaElement = inputs[0] as HTMLTextAreaElement;
- await act(() =>
- userEvent.paste(textAreaElement, 'Hello World With TextArea')
- );
-
const inputNameElement = inputs[1];
- await act(() => {
- userEvent.type(inputNameElement, 'Hello World!');
- userEvent.clear(inputNameElement);
- userEvent.clear(textAreaElement);
- });
+ await user.type(textAreaElement, 'Hello World With TextArea');
+ await user.type(inputNameElement, 'Hello World!');
+
+ await user.clear(inputNameElement);
+ await user.keyboard('{Control>}[KeyA]{/Control}{backspace}');
+ await user.tab();
expect(screen.getByText(/required field/i)).toBeInTheDocument();
});
@@ -79,11 +78,12 @@ describe('AddEditFilterContainer component', () => {
describe('Custom setup for the component', () => {
it('should render the input with default data if they are passed', async () => {
- renderComponent({
- inputDisplayNameDefaultValue: mockData.name,
- inputCodeDefaultValue: mockData.code,
+ await act(() => {
+ renderComponent({
+ inputDisplayNameDefaultValue: mockData.name,
+ inputCodeDefaultValue: mockData.code,
+ });
});
-
const inputs = screen.getAllByRole('textbox');
const textAreaElement = inputs[0] as HTMLTextAreaElement;
const inputNameElement = inputs[1];
@@ -93,44 +93,43 @@ describe('AddEditFilterContainer component', () => {
it('should test whether the cancel callback is being called', async () => {
const cancelCallback = jest.fn();
- renderComponent({
- cancelBtnHandler: cancelCallback,
- });
+ await act(() =>
+ renderComponent({
+ cancelBtnHandler: cancelCallback,
+ })
+ );
const cancelBtnElement = screen.getByText(/cancel/i);
- await act(() => userEvent.click(cancelBtnElement));
+ await userEvent.click(cancelBtnElement);
expect(cancelCallback).toBeCalled();
});
it('should test whether the submit Callback is being called', async () => {
const submitCallback = jest.fn();
- renderComponent({
- submitCallback,
- });
+ await act(() => renderComponent({ submitCallback }));
const inputs = screen.getAllByRole('textbox');
const textAreaElement = inputs[0] as HTMLTextAreaElement;
- userEvent.paste(textAreaElement, 'Hello World With TextArea');
+ textAreaElement.focus();
+ await userEvent.paste('Hello World With TextArea');
const inputNameElement = inputs[1];
- await act(() => userEvent.type(inputNameElement, 'Hello World!'));
+ await userEvent.type(inputNameElement, 'Hello World!');
const submitBtnElement = screen.getByText(defaultSubmitBtn);
-
expect(submitBtnElement).toBeEnabled();
- await act(() => userEvent.click(submitBtnElement));
-
+ await userEvent.click(submitBtnElement);
expect(submitCallback).toBeCalled();
});
it('should display the checkbox if the props is passed and initially check state', async () => {
- renderComponent({ isAdd: true });
+ await act(() => renderComponent({ isAdd: true }));
const checkbox = screen.getByRole('checkbox');
expect(checkbox).toBeInTheDocument();
expect(checkbox).not.toBeChecked();
- await act(() => userEvent.click(checkbox));
+ await userEvent.click(checkbox);
expect(checkbox).toBeChecked();
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddFilter.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddFilter.spec.tsx
index 0c12fd3343..342d064251 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddFilter.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/AddFilter.spec.tsx
@@ -4,7 +4,7 @@ import AddFilter, {
} from 'components/Topics/Topic/Messages/Filters/AddFilter';
import { render } from 'lib/testHelpers';
import { MessageFilters } from 'components/Topics/Topic/Messages/Filters/Filters';
-import { act, screen } from '@testing-library/react';
+import { act, fireEvent, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
const filters: MessageFilters[] = [
@@ -32,14 +32,12 @@ const renderComponent = (props: Partial = {}) =>
describe('AddFilter component', () => {
describe('', () => {
- beforeEach(async () => {
- await act(() => {
- renderComponent();
- });
+ beforeEach(() => {
+ renderComponent();
});
- it('should test click on Saved Filters redirects to Saved components', () => {
- userEvent.click(screen.getByRole('savedFilterText'));
+ it('should test click on Saved Filters redirects to Saved components', async () => {
+ await userEvent.click(screen.getByRole('savedFilterText'));
expect(screen.getByText('Saved Filters')).toBeInTheDocument();
expect(screen.getByRole('savedFilterText')).toBeInTheDocument();
});
@@ -48,8 +46,8 @@ describe('AddFilter component', () => {
expect(screen.getByRole('button', { name: 'info' })).toBeInTheDocument();
});
- it('renders InfoModal', () => {
- userEvent.click(screen.getByRole('button', { name: 'info' }));
+ it('renders InfoModal', async () => {
+ await userEvent.click(screen.getByRole('button', { name: 'info' }));
expect(screen.getByRole('button', { name: 'Ok' })).toBeInTheDocument();
expect(
screen.getByRole('list', { name: 'info-list' })
@@ -57,7 +55,7 @@ describe('AddFilter component', () => {
});
it('should test click on return to custom filter redirects to Saved Filters', async () => {
- userEvent.click(screen.getByRole('savedFilterText'));
+ await userEvent.click(screen.getByRole('savedFilterText'));
expect(screen.queryByText('Saved filters')).not.toBeInTheDocument();
expect(screen.getByRole('savedFilterText')).toBeInTheDocument();
@@ -66,9 +64,7 @@ describe('AddFilter component', () => {
describe('Add new filter', () => {
beforeEach(async () => {
- await act(() => {
- renderComponent();
- });
+ renderComponent();
});
it('adding new filter', async () => {
@@ -83,9 +79,10 @@ describe('AddFilter component', () => {
expect(addFilterBtn).toBeDisabled();
expect(screen.getByPlaceholderText('Enter Name')).toBeInTheDocument();
- await act(() => {
- userEvent.paste(codeTextBox, codeValue);
- userEvent.type(nameTextBox, nameValue);
+ await act(async () => {
+ codeTextBox.focus();
+ await userEvent.paste(codeValue);
+ await userEvent.type(nameTextBox, nameValue);
});
expect(addFilterBtn).toBeEnabled();
@@ -101,7 +98,10 @@ describe('AddFilter component', () => {
const addFilterBtn = screen.getByRole('button', { name: /Add filter/i });
expect(addFilterBtn).toBeDisabled();
expect(screen.getByPlaceholderText('Enter Name')).toBeInTheDocument();
- await act(() => userEvent.paste(codeTextBox, code));
+ await act(async () => {
+ codeTextBox.focus();
+ await userEvent.paste(code);
+ });
expect(addFilterBtn).toBeEnabled();
expect(codeTextBox).toHaveValue(`${code}\n\n`);
});
@@ -110,10 +110,10 @@ describe('AddFilter component', () => {
await act(() => {
renderComponent({ isSavedFiltersOpen: true });
});
- userEvent.click(screen.getByText('Saved Filters'));
+ await userEvent.click(screen.getByText('Saved Filters'));
const index = 0;
const editButton = screen.getAllByText('Edit')[index];
- userEvent.click(editButton);
+ await userEvent.click(editButton);
const { code, name } = filters[index];
expect(editFilterMock).toHaveBeenCalledTimes(1);
expect(editFilterMock).toHaveBeenCalledWith({
@@ -133,12 +133,10 @@ describe('AddFilter component', () => {
const nameValue = 'filter name';
beforeEach(async () => {
- await act(() => {
- renderComponent({
- addFilter: addFilterMock,
- activeFilterHandler: activeFilterHandlerMock,
- toggleIsOpen: toggleModelMock,
- });
+ await renderComponent({
+ addFilter: addFilterMock,
+ activeFilterHandler: activeFilterHandlerMock,
+ toggleIsOpen: toggleModelMock,
});
});
@@ -150,12 +148,14 @@ describe('AddFilter component', () => {
describe('OnSubmit conditions with codeValue and nameValue in fields', () => {
beforeEach(async () => {
- await act(() => {
- userEvent.paste(
- screen.getAllByRole('textbox')[0] as HTMLTextAreaElement,
- codeValue
- );
- userEvent.type(screen.getAllByRole('textbox')[1], nameValue);
+ const textAreaElement = screen.getAllByRole(
+ 'textbox'
+ )[0] as HTMLTextAreaElement;
+ const input = screen.getAllByRole('textbox')[1];
+ await act(async () => {
+ textAreaElement.focus();
+ await userEvent.paste(codeValue);
+ await userEvent.type(input, nameValue);
});
});
@@ -166,16 +166,18 @@ describe('AddFilter component', () => {
});
expect(addFilterBtn).toBeEnabled();
- await act(() => userEvent.click(addFilterBtn));
+ await act(async () => {
+ await userEvent.click(addFilterBtn);
+ });
expect(activeFilterHandlerMock).toHaveBeenCalled();
expect(addFilterMock).not.toHaveBeenCalled();
});
it('OnSubmit condition with checkbox on functionality', async () => {
- await act(() => {
- userEvent.click(screen.getByRole('checkbox'));
- userEvent.click(screen.getAllByRole('button')[2]);
+ await act(async () => {
+ await userEvent.click(screen.getByRole('checkbox'));
+ await userEvent.click(screen.getAllByRole('button')[2]);
});
expect(activeFilterHandlerMock).not.toHaveBeenCalled();
@@ -193,11 +195,15 @@ describe('AddFilter component', () => {
name: /Add filter/i,
});
- await act(() => userEvent.clear(nameTextBox));
+ await act(async () => {
+ await userEvent.clear(nameTextBox);
+ });
expect(nameTextBox).toHaveValue('');
- await act(() => userEvent.click(addFilterBtn));
+ await act(async () => {
+ await userEvent.click(addFilterBtn);
+ });
expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
expect(activeFilterHandlerMock).toHaveBeenCalledWith(
@@ -211,17 +217,25 @@ describe('AddFilter component', () => {
// get reset-ed
expect(codeTextBox).toHaveValue(``);
expect(toggleModelMock).toHaveBeenCalled();
-
- await act(() => userEvent.paste(codeTextBox, codeValue));
+ codeTextBox.focus();
+ await act(async () => {
+ await userEvent.paste(codeValue);
+ });
expect(codeTextBox).toHaveValue(`${codeValue}\n\n`);
- await act(() => userEvent.click(checkbox));
+ await act(async () => {
+ await userEvent.click(checkbox);
+ });
expect(addFilterBtn).toBeDisabled();
- await act(() => userEvent.type(nameTextBox, nameValue));
+ await act(async () => {
+ await userEvent.type(nameTextBox, nameValue);
+ });
expect(nameTextBox).toHaveValue(nameValue);
expect(addFilterBtn).toBeEnabled();
- await act(() => userEvent.click(addFilterBtn));
+ await act(async () => {
+ await userEvent.click(addFilterBtn);
+ });
expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
expect(addFilterMock).toHaveBeenCalledWith({
@@ -238,16 +252,23 @@ describe('AddFilter component', () => {
)[0] as HTMLTextAreaElement;
const nameTextBox = screen.getAllByRole('textbox')[1];
const addFilterBtn = screen.getByRole('button', { name: /Add filter/i });
- await act(() => {
- userEvent.clear(nameTextBox);
- userEvent.clear(codeTextBox);
- userEvent.paste(codeTextBox, longCodeValue);
+ act(() => {
+ // await userEvent.clear(nameTextBox);
+ // codeTextBox.focus();
+ // await userEvent.clear(codeTextBox);
+ fireEvent.input(nameTextBox, {
+ inputType: '',
+ });
+ fireEvent.input(codeTextBox, {
+ inputType: '',
+ });
});
-
+ codeTextBox.focus();
+ await userEvent.paste(longCodeValue);
expect(nameTextBox).toHaveValue('');
expect(codeTextBox).toHaveValue(`${longCodeValue}\n\n`);
- await act(() => userEvent.click(addFilterBtn));
+ await userEvent.click(addFilterBtn);
const filterName = `${longCodeValue.slice(0, 16)}...`;
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/EditFilter.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/EditFilter.spec.tsx
index 347c4eab20..212ecd8739 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/EditFilter.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/EditFilter.spec.tsx
@@ -35,7 +35,7 @@ describe('EditFilter component', () => {
await act(() => {
renderComponent({ toggleEditModal });
});
- userEvent.click(screen.getByRole('button', { name: /Cancel/i }));
+ await userEvent.click(screen.getByRole('button', { name: /Cancel/i }));
expect(toggleEditModal).toHaveBeenCalledTimes(1);
});
@@ -43,16 +43,16 @@ describe('EditFilter component', () => {
const toggleEditModal = jest.fn();
const editSavedFilter = jest.fn();
- await act(() => {
- renderComponent({ toggleEditModal, editSavedFilter });
- });
+ await renderComponent({ toggleEditModal, editSavedFilter });
const inputs = screen.getAllByRole('textbox');
const textAreaElement = inputs[0] as HTMLTextAreaElement;
const inputNameElement = inputs[1];
- await act(() => {
- userEvent.paste(textAreaElement, 'edited code');
- userEvent.type(inputNameElement, 'edited name');
+ await act(async () => {
+ textAreaElement.focus();
+ await userEvent.paste('edited code');
+ textAreaElement.focus();
+ await userEvent.type(inputNameElement, 'edited name');
fireEvent.submit(screen.getByRole('form'));
});
expect(toggleEditModal).toHaveBeenCalledTimes(1);
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/FilterModal.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/FilterModal.spec.tsx
index d2c4ed7f52..5d41e8c447 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/FilterModal.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/FilterModal.spec.tsx
@@ -32,9 +32,9 @@ describe('FilterModal component', () => {
screen.getByRole('heading', { name: /add filter/i, level: 3 })
).toBeInTheDocument();
});
- it('renders component with edit filter modal', () => {
- userEvent.click(screen.getByRole('savedFilterText'));
- userEvent.click(screen.getByText('Edit'));
+ it('renders component with edit filter modal', async () => {
+ await userEvent.click(screen.getByRole('savedFilterText'));
+ await userEvent.click(screen.getByText('Edit'));
expect(
screen.getByRole('heading', { name: /edit saved filter/i, level: 3 })
).toBeInTheDocument();
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/Filters.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/Filters.spec.tsx
index a0aef49da1..43c7b9328d 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/Filters.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/Filters.spec.tsx
@@ -92,17 +92,17 @@ describe('Filters component', () => {
});
});
- it('search input', () => {
+ it('search input', async () => {
const searchInput = screen.getByPlaceholderText('Search');
expect(searchInput).toHaveValue('');
- userEvent.type(searchInput, inputValue);
+ await userEvent.type(searchInput, inputValue);
expect(searchInput).toHaveValue(inputValue);
});
- it('offset input', () => {
+ it('offset input', async () => {
const offsetInput = screen.getByPlaceholderText('Offset');
expect(offsetInput).toHaveValue('');
- userEvent.type(offsetInput, inputValue);
+ await userEvent.type(offsetInput, inputValue);
expect(offsetInput).toHaveValue(inputValue);
});
@@ -110,10 +110,12 @@ describe('Filters component', () => {
const seekTypeSelect = screen.getAllByRole('listbox');
const option = screen.getAllByRole('option');
- await act(() => userEvent.click(seekTypeSelect[0]));
+ await act(async () => {
+ await userEvent.click(seekTypeSelect[0]);
+ });
- await act(() => {
- userEvent.selectOptions(seekTypeSelect[0], ['Timestamp']);
+ await act(async () => {
+ await userEvent.selectOptions(seekTypeSelect[0], ['Timestamp']);
});
expect(option[0]).toHaveTextContent('Timestamp');
@@ -142,26 +144,28 @@ describe('Filters component', () => {
options = screen.getAllByRole('option');
});
- it('seekType select', () => {
+ it('seekType select', async () => {
expect(options[0]).toHaveTextContent('Offset');
- userEvent.click(seekTypeSelects[0]);
- userEvent.selectOptions(seekTypeSelects[0], [mockTypeOptionSelectLabel]);
+ await userEvent.click(seekTypeSelects[0]);
+ await userEvent.selectOptions(seekTypeSelects[0], [
+ mockTypeOptionSelectLabel,
+ ]);
expect(options[0]).toHaveTextContent(mockTypeOptionSelectLabel);
expect(screen.getByText('Submit')).toBeInTheDocument();
});
- it('seekDirection select', () => {
- userEvent.click(seekTypeSelects[3]);
- userEvent.selectOptions(seekTypeSelects[3], [
+ it('seekDirection select', async () => {
+ await userEvent.click(seekTypeSelects[3]);
+ await userEvent.selectOptions(seekTypeSelects[3], [
mockDirectionOptionSelectLabel,
]);
expect(options[3]).toHaveTextContent(mockDirectionOptionSelectLabel);
});
});
- it('stop loading when live mode is active', () => {
+ it('stop loading when live mode is active', async () => {
renderComponent();
- userEvent.click(screen.getByText('Stop loading'));
+ await userEvent.click(screen.getByText('Stop loading'));
const option = screen.getAllByRole('option');
expect(option[3]).toHaveTextContent('Oldest First');
expect(screen.getByText('Submit')).toBeInTheDocument();
@@ -169,13 +173,13 @@ describe('Filters component', () => {
it('renders addFilter modal', async () => {
renderComponent();
- await act(() =>
- userEvent.click(
+ await act(async () => {
+ await userEvent.click(
screen.getByRole('button', {
name: /add filters/i,
})
- )
- );
+ );
+ });
expect(screen.getByTestId('messageFilterModal')).toBeInTheDocument();
});
@@ -183,13 +187,13 @@ describe('Filters component', () => {
beforeEach(async () => {
renderComponent();
- await act(() =>
- userEvent.click(
+ await act(async () => {
+ await userEvent.click(
screen.getByRole('button', {
name: /add filters/i,
})
- )
- );
+ );
+ });
const filterName = 'filter name';
const filterCode = 'filter code';
@@ -201,21 +205,22 @@ describe('Filters component', () => {
const textAreaElement = textBoxElements[0] as HTMLTextAreaElement;
const inputNameElement = textBoxElements[1];
- await act(() => {
- userEvent.paste(textAreaElement, filterName);
- userEvent.type(inputNameElement, filterCode);
+ await act(async () => {
+ textAreaElement.focus();
+ await userEvent.paste(filterName);
+ await userEvent.type(inputNameElement, filterCode);
});
expect(textAreaElement.value).toEqual(`${filterName}\n\n`);
expect(inputNameElement).toHaveValue(filterCode);
- await act(() =>
- userEvent.click(
+ await act(async () => {
+ await userEvent.click(
within(messageFilterModal).getByRole('button', {
name: /add filter/i,
})
- )
- );
+ );
+ });
});
it('shows saved smart filter', () => {
@@ -225,7 +230,9 @@ describe('Filters component', () => {
it('delete the active smart Filter', async () => {
const smartFilterElement = screen.getByTestId('activeSmartFilter');
const deleteIcon = within(smartFilterElement).getByText('mock-CloseIcon');
- await act(() => userEvent.click(deleteIcon));
+ await act(async () => {
+ await userEvent.click(deleteIcon);
+ });
const anotherSmartFilterElement =
screen.queryByTestId('activeSmartFilter');
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/InfoModal.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/InfoModal.spec.tsx
index 76d50b054d..90a798b19a 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/InfoModal.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/InfoModal.spec.tsx
@@ -5,10 +5,10 @@ import React from 'react';
import InfoModal from 'components/Topics/Topic/Messages/Filters/InfoModal';
describe('InfoModal component', () => {
- it('closes InfoModal', () => {
+ it('closes InfoModal', async () => {
const toggleInfoModal = jest.fn();
render();
- userEvent.click(screen.getByRole('button', { name: 'Ok' }));
+ await userEvent.click(screen.getByRole('button', { name: 'Ok' }));
expect(toggleInfoModal).toHaveBeenCalledTimes(1);
});
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/SavedFilters.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/SavedFilters.spec.tsx
index cac3bee8ec..dff3048786 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/SavedFilters.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/Filters/__tests__/SavedFilters.spec.tsx
@@ -3,12 +3,7 @@ import SavedFilters, {
Props,
} from 'components/Topics/Topic/Messages/Filters/SavedFilters';
import { MessageFilters } from 'components/Topics/Topic/Messages/Filters/Filters';
-import {
- screen,
- waitFor,
- waitForElementToBeRemoved,
- within,
-} from '@testing-library/react';
+import { screen, waitFor, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { render } from 'lib/testHelpers';
@@ -35,17 +30,17 @@ describe('SavedFilter Component', () => {
const getSavedFilters = () => screen.getAllByRole('savedFilter');
- it('should check the Cancel button click', () => {
+ it('should check the Cancel button click', async () => {
const cancelMock = jest.fn();
setUpComponent({ closeModal: cancelMock });
- userEvent.click(screen.getByText(/cancel/i));
+ await userEvent.click(screen.getByText(/cancel/i));
expect(cancelMock).toHaveBeenCalled();
});
- it('should check on go back button click', () => {
+ it('should check on go back button click', async () => {
const onGoBackMock = jest.fn();
setUpComponent({ onGoBack: onGoBackMock });
- userEvent.click(screen.getByText(/back to create filters/i));
+ await userEvent.click(screen.getByText(/back to create filters/i));
expect(onGoBackMock).toHaveBeenCalled();
});
@@ -84,26 +79,26 @@ describe('SavedFilter Component', () => {
expect(screen.getByText(mockFilters[1].name)).toBeInTheDocument();
});
- it('should check the Filter edit Button works', () => {
+ it('should check the Filter edit Button works', async () => {
const savedFilters = getSavedFilters();
- userEvent.hover(savedFilters[0]);
- userEvent.click(within(savedFilters[0]).getByText(/edit/i));
+ await userEvent.hover(savedFilters[0]);
+ await userEvent.click(within(savedFilters[0]).getByText(/edit/i));
expect(onEditMock).toHaveBeenCalled();
- userEvent.hover(savedFilters[1]);
- userEvent.click(within(savedFilters[1]).getByText(/edit/i));
+ await userEvent.hover(savedFilters[1]);
+ await userEvent.click(within(savedFilters[1]).getByText(/edit/i));
expect(onEditMock).toHaveBeenCalledTimes(2);
});
- it('should check the select filter', () => {
+ it('should check the select filter', async () => {
const selectFilterButton = screen.getByText(/Select filter/i);
- userEvent.click(selectFilterButton);
+ await userEvent.click(selectFilterButton);
expect(activeFilterMock).not.toHaveBeenCalled();
const savedFilterElement = getSavedFilters();
- userEvent.click(savedFilterElement[0]);
- userEvent.click(selectFilterButton);
+ await userEvent.click(savedFilterElement[0]);
+ await userEvent.click(selectFilterButton);
expect(activeFilterMock).toHaveBeenCalled();
expect(cancelMock).toHaveBeenCalled();
@@ -121,12 +116,12 @@ describe('SavedFilter Component', () => {
deleteMock.mockClear();
});
- it('Open Confirmation for the deletion modal', () => {
+ it('Open Confirmation for the deletion modal', async () => {
setUpComponent({ deleteFilter: deleteMock });
const savedFilters = getSavedFilters();
const deleteIcons = screen.getAllByText('mock-DeleteIcon');
- userEvent.hover(savedFilters[0]);
- userEvent.click(deleteIcons[0]);
+ await userEvent.hover(savedFilters[0]);
+ await userEvent.click(deleteIcons[0]);
const modelDialog = screen.getByRole('dialog');
expect(modelDialog).toBeInTheDocument();
expect(
@@ -139,8 +134,8 @@ describe('SavedFilter Component', () => {
const savedFilters = getSavedFilters();
const deleteIcons = screen.getAllByText('mock-DeleteIcon');
- userEvent.hover(savedFilters[0]);
- userEvent.click(deleteIcons[0]);
+ await userEvent.hover(savedFilters[0]);
+ await userEvent.click(deleteIcons[0]);
const modelDialog = screen.getByRole('dialog');
expect(modelDialog).toBeInTheDocument();
@@ -156,14 +151,13 @@ describe('SavedFilter Component', () => {
const savedFilters = getSavedFilters();
const deleteIcons = screen.getAllByText('mock-DeleteIcon');
- userEvent.hover(savedFilters[0]);
- userEvent.click(deleteIcons[0]);
+ await userEvent.hover(savedFilters[0]);
+ await userEvent.click(deleteIcons[0]);
- await waitFor(() =>
- userEvent.click(screen.getByRole('button', { name: 'Confirm' }))
- );
+ expect(screen.queryByRole('dialog')).toBeInTheDocument();
+ await userEvent.click(screen.getByRole('button', { name: 'Confirm' }));
expect(deleteMock).toHaveBeenCalledTimes(1);
- await waitForElementToBeRemoved(() => screen.queryByRole('dialog'));
+ expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
});
});
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/MessageContent/__tests__/MessageContent.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/MessageContent/__tests__/MessageContent.spec.tsx
index e7fbd2b44a..f166d70d3b 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/MessageContent/__tests__/MessageContent.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/MessageContent/__tests__/MessageContent.spec.tsx
@@ -50,9 +50,9 @@ describe('MessageContent screen', () => {
});
describe('when switched to display the key', () => {
- it('makes key tab active', () => {
+ it('makes key tab active', async () => {
const keyTab = screen.getAllByText('Key');
- userEvent.click(keyTab[0]);
+ await userEvent.click(keyTab[0]);
expect(keyTab[0]).toHaveStyleRule(
'background-color',
theme.secondaryTab.backgroundColor.active
@@ -61,8 +61,8 @@ describe('MessageContent screen', () => {
});
describe('when switched to display the headers', () => {
- it('makes headers tab active', () => {
- userEvent.click(screen.getByText('Headers'));
+ it('makes Headers tab active', async () => {
+ await userEvent.click(screen.getByText('Headers'));
expect(screen.getByText('Headers')).toHaveStyleRule(
'background-color',
theme.secondaryTab.backgroundColor.active
@@ -71,9 +71,9 @@ describe('MessageContent screen', () => {
});
describe('when switched to display the value', () => {
- it('makes value tab active', () => {
+ it('makes value tab active', async () => {
const contentTab = screen.getAllByText('Value');
- userEvent.click(contentTab[0]);
+ await userEvent.click(contentTab[0]);
expect(contentTab[0]).toHaveStyleRule(
'background-color',
theme.secondaryTab.backgroundColor.active
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Message.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Message.spec.tsx
index 1c9ec36ea3..f70e2e0a42 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Message.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Message.spec.tsx
@@ -66,24 +66,24 @@ describe('Message component', () => {
).not.toBeInTheDocument();
});
- it('should check the dropdown being visible during hover', () => {
+ it('should check the dropdown being visible during hover', async () => {
renderComponent();
const text = 'Save as a file';
const trElement = screen.getByRole('row');
expect(screen.queryByText(text)).not.toBeInTheDocument();
- userEvent.hover(trElement);
+ await userEvent.hover(trElement);
expect(screen.getByText(text)).toBeInTheDocument();
- userEvent.unhover(trElement);
+ await userEvent.unhover(trElement);
expect(screen.queryByText(text)).not.toBeInTheDocument();
});
- it('should check open Message Content functionality', () => {
+ it('should check open Message Content functionality', async () => {
renderComponent();
const messageToggleIcon = screen.getByRole('button', { hidden: true });
expect(screen.queryByText(messageContentText)).not.toBeInTheDocument();
- userEvent.click(messageToggleIcon);
+ await userEvent.click(messageToggleIcon);
expect(screen.getByText(messageContentText)).toBeInTheDocument();
});
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Messages.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Messages.spec.tsx
index 0d1b5a6531..3c43931688 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Messages.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Messages/__test__/Messages.spec.tsx
@@ -57,24 +57,24 @@ describe('Messages', () => {
);
const labelValue1 = SeekDirectionOptions[1].label;
- userEvent.click(seekDirectionSelect);
- userEvent.selectOptions(seekDirectionSelect, [labelValue1]);
+ await userEvent.click(seekDirectionSelect);
+ await userEvent.selectOptions(seekDirectionSelect, [labelValue1]);
expect(seekDirectionOption).toHaveTextContent(labelValue1);
const labelValue0 = SeekDirectionOptions[0].label;
- userEvent.click(seekDirectionSelect);
- userEvent.selectOptions(seekDirectionSelect, [labelValue0]);
+ await userEvent.click(seekDirectionSelect);
+ await userEvent.selectOptions(seekDirectionSelect, [labelValue0]);
expect(seekDirectionOption).toHaveTextContent(labelValue0);
const liveOptionConf = SeekDirectionOptions[2];
const labelValue2 = liveOptionConf.label;
- userEvent.click(seekDirectionSelect);
+ await userEvent.click(seekDirectionSelect);
const liveModeLi = screen.getByRole(
(role, element) =>
role === 'option' &&
element?.getAttribute('value') === liveOptionConf.value
);
- userEvent.selectOptions(seekDirectionSelect, [liveModeLi]);
+ await userEvent.selectOptions(seekDirectionSelect, [liveModeLi]);
expect(seekDirectionOption).toHaveTextContent(labelValue2);
await waitFor(() => {
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Overview/__test__/Overview.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Overview/__test__/Overview.spec.tsx
index e0efd0db9e..3f10635df5 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Overview/__test__/Overview.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Overview/__test__/Overview.spec.tsx
@@ -109,14 +109,14 @@ describe('Overview', () => {
});
describe('when Clear Messages is clicked', () => {
- it('should when Clear Messages is clicked', () => {
+ it('should when Clear Messages is clicked', async () => {
renderComponent({
...externalTopicPayload,
cleanUpPolicy: CleanUpPolicy.DELETE,
});
const clearMessagesButton = screen.getByText('Clear Messages');
- userEvent.click(clearMessagesButton);
+ await userEvent.click(clearMessagesButton);
expect(uwrapMock).toHaveBeenCalledTimes(1);
});
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/SendMessage/__test__/SendMessage.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/SendMessage/__test__/SendMessage.spec.tsx
index a4a5c12ef7..609324b8f0 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/SendMessage/__test__/SendMessage.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/SendMessage/__test__/SendMessage.spec.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import SendMessage from 'components/Topics/Topic/SendMessage/SendMessage';
-import { act, screen, waitFor } from '@testing-library/react';
+import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { render, WithRoute } from 'lib/testHelpers';
import { clusterTopicPath } from 'lib/paths';
@@ -47,32 +47,26 @@ const mockOnSubmit = jest.fn();
const renderComponent = async () => {
const path = clusterTopicPath(clusterName, topicName);
- await act(() => {
- render(
-
-
- ,
- { initialEntries: [path] }
- );
- });
+ await render(
+
+
+ ,
+ { initialEntries: [path] }
+ );
};
const renderAndSubmitData = async (error: string[] = []) => {
await renderComponent();
- await act(() => {
- userEvent.click(screen.getAllByRole('listbox')[0]);
- });
- await act(() => {
- userEvent.click(screen.getAllByRole('option')[1]);
- });
+ await userEvent.click(screen.getAllByRole('listbox')[0]);
+
+ await userEvent.click(screen.getAllByRole('option')[1]);
+
(validateBySchema as Mock).mockImplementation(() => error);
const submitButton = screen.getByRole('button', {
name: 'Produce Message',
});
await waitFor(() => expect(submitButton).toBeEnabled());
- await act(() => {
- userEvent.click(submitButton);
- });
+ await userEvent.click(submitButton);
};
describe('SendMessage', () => {
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Statistics/__test__/Metrics.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Statistics/__test__/Metrics.spec.tsx
index 2f27802a00..ba49893a0e 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/Statistics/__test__/Metrics.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/Statistics/__test__/Metrics.spec.tsx
@@ -50,10 +50,10 @@ describe('Metrics', () => {
renderComponent();
});
- it('renders Stop Analysis button', () => {
+ it('renders Stop Analysis button', async () => {
const btn = screen.getByRole('button', { name: 'Stop Analysis' });
expect(btn).toBeInTheDocument();
- userEvent.click(btn);
+ await userEvent.click(btn);
expect(cancelMock).toHaveBeenCalled();
});
@@ -95,9 +95,9 @@ describe('Metrics', () => {
expect(btns.length).toEqual(2);
expect(screen.queryByText('Partition stats')).not.toBeInTheDocument();
- userEvent.click(btns[0]);
+ await userEvent.click(btns[0]);
expect(screen.getAllByText('Partition stats').length).toEqual(1);
- userEvent.click(btns[1]);
+ await userEvent.click(btns[1]);
expect(screen.getAllByText('Partition stats').length).toEqual(2);
});
});
diff --git a/kafka-ui-react-app/src/components/Topics/Topic/__test__/Topic.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/__test__/Topic.spec.tsx
index dd9d0c59c7..9baa8785e1 100644
--- a/kafka-ui-react-app/src/components/Topics/Topic/__test__/Topic.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/Topic/__test__/Topic.spec.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { act, screen, waitFor } from '@testing-library/react';
+import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import ClusterContext from 'components/contexts/ClusterContext';
import Details from 'components/Topics/Topic/Topic';
@@ -110,17 +110,17 @@ describe('Details', () => {
});
describe('when remove topic modal is open', () => {
- beforeEach(() => {
+ beforeEach(async () => {
renderComponent();
const openModalButton = screen.getAllByText('Remove Topic')[0];
- userEvent.click(openModalButton);
+ await userEvent.click(openModalButton);
});
it('calls deleteTopic on confirm', async () => {
const submitButton = screen.getAllByRole('button', {
name: 'Confirm',
})[0];
- await act(() => userEvent.click(submitButton));
+ await userEvent.click(submitButton);
expect(mockDelete).toHaveBeenCalledWith(topic.name);
});
it('closes the modal when cancel button is clicked', async () => {
@@ -134,7 +134,7 @@ describe('Details', () => {
beforeEach(async () => {
await renderComponent();
const confirmButton = screen.getAllByText('Clear messages')[0];
- await act(() => userEvent.click(confirmButton));
+ await userEvent.click(confirmButton);
});
it('it calls clearTopicMessages on confirm', async () => {
@@ -154,10 +154,10 @@ describe('Details', () => {
});
describe('when edit settings is clicked', () => {
- it('redirects to the edit page', () => {
+ it('redirects to the edit page', async () => {
renderComponent();
const button = screen.getAllByText('Edit settings')[0];
- userEvent.click(button);
+ await userEvent.click(button);
expect(mockNavigate).toHaveBeenCalledWith(clusterTopicEditRelativePath);
});
});
@@ -169,24 +169,24 @@ describe('Details', () => {
const submitDeleteButton = screen.getByRole('button', {
name: 'Confirm',
});
- await act(() => userEvent.click(submitDeleteButton));
+ await userEvent.click(submitDeleteButton);
expect(mockNavigate).toHaveBeenCalledWith('../..');
});
- it('shows a confirmation popup on deleting topic messages', () => {
+ it('shows a confirmation popup on deleting topic messages', async () => {
renderComponent();
const clearMessagesButton = screen.getAllByText(/Clear messages/i)[0];
- userEvent.click(clearMessagesButton);
+ await userEvent.click(clearMessagesButton);
expect(
screen.getByText(/Are you sure want to clear topic messages?/i)
).toBeInTheDocument();
});
- it('shows a confirmation popup on recreating topic', () => {
+ it('shows a confirmation popup on recreating topic', async () => {
renderComponent();
const recreateTopicButton = screen.getByText(/Recreate topic/i);
- userEvent.click(recreateTopicButton);
+ await userEvent.click(recreateTopicButton);
expect(
screen.getByText(/Are you sure want to recreate topic?/i)
).toBeInTheDocument();
@@ -195,19 +195,19 @@ describe('Details', () => {
it('is calling recreation function after click on Submit button', async () => {
renderComponent();
const recreateTopicButton = screen.getByText(/Recreate topic/i);
- userEvent.click(recreateTopicButton);
+ await userEvent.click(recreateTopicButton);
const confirmBtn = screen.getByRole('button', { name: /Confirm/i });
await waitFor(() => userEvent.click(confirmBtn));
expect(mockRecreate).toBeCalledTimes(1);
});
- it('closes popup confirmation window after click on Cancel button', () => {
+ it('closes popup confirmation window after click on Cancel button', async () => {
renderComponent();
const recreateTopicButton = screen.getByText(/Recreate topic/i);
- userEvent.click(recreateTopicButton);
+ await userEvent.click(recreateTopicButton);
const cancelBtn = screen.getByRole('button', { name: /cancel/i });
- userEvent.click(cancelBtn);
+ await userEvent.click(cancelBtn);
expect(
screen.queryByText(/Are you sure want to recreate topic?/i)
).not.toBeInTheDocument();
diff --git a/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParamField.spec.tsx b/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParamField.spec.tsx
index d94812d73a..8ff3b88daf 100644
--- a/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParamField.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParamField.spec.tsx
@@ -57,7 +57,7 @@ describe('CustomParamsField', () => {
});
describe('core functionality works', () => {
- it('click on button triggers remove', () => {
+ it('click on button triggers remove', async () => {
setupComponent({
field,
isDisabled,
@@ -66,11 +66,11 @@ describe('CustomParamsField', () => {
existingFields,
setExistingFields,
});
- userEvent.click(screen.getByRole('button'));
+ await userEvent.click(screen.getByRole('button'));
expect(remove).toHaveBeenCalledTimes(1);
});
- it('pressing space on button triggers remove', () => {
+ it('pressing space on button triggers remove', async () => {
setupComponent({
field,
isDisabled,
@@ -79,7 +79,7 @@ describe('CustomParamsField', () => {
existingFields,
setExistingFields,
});
- userEvent.type(screen.getByRole('button'), SPACE_KEY);
+ await userEvent.type(screen.getByRole('button'), SPACE_KEY);
// userEvent.type triggers remove two times as at first it clicks on element and then presses space
expect(remove).toHaveBeenCalledTimes(2);
});
diff --git a/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParams.spec.tsx b/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParams.spec.tsx
index 09c58be681..1a185637a6 100644
--- a/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParams.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/shared/Form/CustomParams/__test__/CustomParams.spec.tsx
@@ -11,10 +11,10 @@ import { TOPIC_CUSTOM_PARAMS } from 'lib/constants';
import { defaultValues } from './fixtures';
const selectOption = async (listbox: HTMLElement, option: string) => {
- await act(() => {
- userEvent.click(listbox);
+ await act(async () => {
+ await userEvent.click(listbox);
});
- userEvent.click(screen.getByText(option));
+ await userEvent.click(screen.getByText(option));
};
const expectOptionIsSelected = (listbox: HTMLElement, option: string) => {
@@ -28,7 +28,9 @@ const expectOptionAvailability = async (
option: string,
disabled: boolean
) => {
- await act(() => userEvent.click(listbox));
+ await act(async () => {
+ await userEvent.click(listbox);
+ });
const selectedOptions = within(listbox).getAllByText(option).reverse();
// its either two or one nodes, we only need last one
const selectedOption = selectedOptions[0];
@@ -43,7 +45,9 @@ const expectOptionAvailability = async (
'cursor',
disabled ? 'not-allowed' : 'pointer'
);
- await act(() => userEvent.click(listbox));
+ await act(async () => {
+ await userEvent.click(listbox);
+ });
};
const renderComponent = (props: CustomParamsProps, defaults = {}) => {
@@ -85,7 +89,9 @@ describe('CustomParams', () => {
beforeEach(async () => {
renderComponent({ isSubmitting: false });
button = screen.getByRole('button');
- await act(() => userEvent.click(button));
+ await act(async () => {
+ await userEvent.click(button);
+ });
});
it('button click creates custom param fieldset', async () => {
@@ -120,8 +126,12 @@ describe('CustomParams', () => {
});
it('multiple button clicks create multiple fieldsets', async () => {
- await act(() => userEvent.click(button));
- await act(() => userEvent.click(button));
+ await act(async () => {
+ await userEvent.click(button);
+ });
+ await act(async () => {
+ await userEvent.click(button);
+ });
const listboxes = screen.getAllByRole('listbox');
expect(listboxes.length).toBe(3);
@@ -131,7 +141,9 @@ describe('CustomParams', () => {
});
it("can't select already selected option", async () => {
- await act(() => userEvent.click(button));
+ await act(async () => {
+ await userEvent.click(button);
+ });
const listboxes = screen.getAllByRole('listbox');
@@ -144,8 +156,12 @@ describe('CustomParams', () => {
});
it('when fieldset with selected custom property type is deleted disabled options update correctly', async () => {
- await act(() => userEvent.click(button));
- await act(() => userEvent.click(button));
+ await act(async () => {
+ await userEvent.click(button);
+ });
+ await act(async () => {
+ await userEvent.click(button);
+ });
const listboxes = screen.getAllByRole('listbox');
@@ -172,7 +188,9 @@ describe('CustomParams', () => {
const deleteSecondFieldsetButton = screen.getByTitle(
'Delete customParam field 1'
);
- await act(() => userEvent.click(deleteSecondFieldsetButton));
+ await act(async () => {
+ await userEvent.click(deleteSecondFieldsetButton);
+ });
expect(secondListbox).not.toBeInTheDocument();
await expectOptionAvailability(
diff --git a/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TimeToRetainBtn.spec.tsx b/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TimeToRetainBtn.spec.tsx
index bf93b72d4e..aaae57306a 100644
--- a/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TimeToRetainBtn.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TimeToRetainBtn.spec.tsx
@@ -46,9 +46,9 @@ describe('TimeToRetainBtn', () => {
);
expect(buttonElement).toHaveStyle(`border:none`);
});
- it('should test the non active state with click becoming active', () => {
+ it('should test the non active state with click becoming active', async () => {
const buttonElement = screen.getByRole('button');
- userEvent.click(buttonElement);
+ await userEvent.click(buttonElement);
expect(buttonElement).toHaveStyle(
`background-color:${theme.button.secondary.invertedColors.normal}`
);
diff --git a/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TopicForm.spec.tsx b/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TopicForm.spec.tsx
index fa12e8728c..8454b401c1 100644
--- a/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TopicForm.spec.tsx
+++ b/kafka-ui-react-app/src/components/Topics/shared/Form/__tests__/TopicForm.spec.tsx
@@ -67,14 +67,17 @@ describe('TopicForm', () => {
onSubmit: onSubmit.mockImplementation((e) => e.preventDefault()),
});
- await act(() => {
- userEvent.type(screen.getByPlaceholderText('Topic Name'), 'topicName');
+ await act(async () => {
+ await userEvent.type(
+ screen.getByPlaceholderText('Topic Name'),
+ 'topicName'
+ );
});
await act(() => {
fireEvent.submit(screen.getByLabelText('topic form'));
});
- userEvent.click(screen.getByRole('button', { name: 'Create topic' }));
+ await userEvent.click(screen.getByRole('button', { name: 'Create topic' }));
expect(onSubmit).toBeCalledTimes(1);
});
});
diff --git a/kafka-ui-react-app/src/components/__tests__/App.spec.tsx b/kafka-ui-react-app/src/components/__tests__/App.spec.tsx
index 6c9fcd6535..4190946c1f 100644
--- a/kafka-ui-react-app/src/components/__tests__/App.spec.tsx
+++ b/kafka-ui-react-app/src/components/__tests__/App.spec.tsx
@@ -42,7 +42,7 @@ describe('App', () => {
).toBeInTheDocument();
});
- it('handle burger click correctly', () => {
+ it('handle burger click correctly', async () => {
const burger = within(screen.getByLabelText('Page Header')).getByRole(
'button',
burgerButtonOptions
@@ -52,7 +52,7 @@ describe('App', () => {
expect(overlay).toBeInTheDocument();
expect(overlay).toHaveStyleRule('visibility: hidden');
expect(burger).toHaveStyleRule('display: none');
- userEvent.click(burger);
+ await userEvent.click(burger);
expect(overlay).toHaveStyleRule('visibility: visible');
});
diff --git a/kafka-ui-react-app/src/components/common/Alert/__tests__/Alert.spec.tsx b/kafka-ui-react-app/src/components/common/Alert/__tests__/Alert.spec.tsx
index a77f451b5e..b4cea35348 100644
--- a/kafka-ui-react-app/src/components/common/Alert/__tests__/Alert.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/Alert/__tests__/Alert.spec.tsx
@@ -26,9 +26,9 @@ describe('Alert', () => {
expect(screen.getByRole('contentinfo')).toHaveTextContent(message);
expect(getButton()).toBeInTheDocument();
});
- it('handles dismiss callback', () => {
+ it('handles dismiss callback', async () => {
setupComponent();
- userEvent.click(getButton());
+ await userEvent.click(getButton());
expect(dismiss).toHaveBeenCalled();
});
});
diff --git a/kafka-ui-react-app/src/components/common/Input/__tests__/Input.spec.tsx b/kafka-ui-react-app/src/components/common/Input/__tests__/Input.spec.tsx
index 25447ccae0..3082f6f610 100644
--- a/kafka-ui-react-app/src/components/common/Input/__tests__/Input.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/Input/__tests__/Input.spec.tsx
@@ -25,17 +25,17 @@ describe('Custom Input', () => {
describe('number', () => {
const getInput = () => screen.getByRole('spinbutton');
- it('allows user to type only numbers', () => {
+ it('allows user to type only numbers', async () => {
render(setupWrapper({ type: 'number' }));
const input = getInput();
- userEvent.type(input, 'abc131');
+ await userEvent.type(input, 'abc131');
expect(input).toHaveValue(131);
});
- it('allows negative values', () => {
+ it('allows negative values', async () => {
render(setupWrapper({ type: 'number' }));
const input = getInput();
- userEvent.type(input, '-2');
+ await userEvent.type(input, '-2');
expect(input).toHaveValue(-2);
});
});
diff --git a/kafka-ui-react-app/src/components/common/NewTable/__test__/Table.spec.tsx b/kafka-ui-react-app/src/components/common/NewTable/__test__/Table.spec.tsx
index 480f6e6db1..227dc55205 100644
--- a/kafka-ui-react-app/src/components/common/NewTable/__test__/Table.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/NewTable/__test__/Table.spec.tsx
@@ -11,7 +11,6 @@ import { screen, waitFor } from '@testing-library/dom';
import { ColumnDef, Row } from '@tanstack/react-table';
import userEvent from '@testing-library/user-event';
import { formatTimestamp } from 'lib/dateTimeHelpers';
-import { act } from '@testing-library/react';
import { ConnectorState, ConsumerGroupState } from 'generated-sources';
const mockedUsedNavigate = jest.fn();
@@ -155,15 +154,15 @@ describe('Table', () => {
});
describe('ExpanderCell', () => {
- it('renders button', () => {
+ it('renders button', async () => {
renderComponent({ getRowCanExpand: () => true });
const btns = screen.getAllByRole('button', { name: 'Expand row' });
expect(btns.length).toEqual(data.length);
expect(screen.queryByText('I am expanded row')).not.toBeInTheDocument();
- userEvent.click(btns[2]);
+ await userEvent.click(btns[2]);
expect(screen.getByText('I am expanded row')).toBeInTheDocument();
- userEvent.click(btns[0]);
+ await userEvent.click(btns[0]);
expect(screen.getAllByText('I am expanded row').length).toEqual(2);
});
@@ -213,20 +212,20 @@ describe('Table', () => {
expect(lastBtn).toBeInTheDocument();
expect(lastBtn).toBeEnabled();
- userEvent.click(nextBtn);
+ await userEvent.click(nextBtn);
expect(screen.getByText('ipsum')).toBeInTheDocument();
expect(prevBtn).toBeEnabled();
expect(firstBtn).toBeEnabled();
- userEvent.click(lastBtn);
+ await userEvent.click(lastBtn);
expect(screen.getByText('sit')).toBeInTheDocument();
expect(lastBtn).toBeDisabled();
expect(nextBtn).toBeDisabled();
- userEvent.click(prevBtn);
+ await userEvent.click(prevBtn);
expect(screen.getByText('dolor')).toBeInTheDocument();
- userEvent.click(firstBtn);
+ await userEvent.click(firstBtn);
expect(screen.getByText('lorem')).toBeInTheDocument();
});
@@ -243,22 +242,22 @@ describe('Table', () => {
expect(goToPage).toBeInTheDocument();
expect(goToPage).toHaveValue(1);
});
- it('updates page on Go To page change', () => {
+ it('updates page on Go To page change', async () => {
const goToPage = getGoToPageInput();
- userEvent.clear(goToPage);
- userEvent.type(goToPage, '2');
+ await userEvent.clear(goToPage);
+ await userEvent.type(goToPage, '2');
expect(goToPage).toHaveValue(2);
expect(screen.getByText('ipsum')).toBeInTheDocument();
});
- it('does not update page on Go To page change if page is out of range', () => {
+ it('does not update page on Go To page change if page is out of range', async () => {
const goToPage = getGoToPageInput();
- userEvent.type(goToPage, '5');
+ await userEvent.type(goToPage, '5');
expect(goToPage).toHaveValue(15);
expect(screen.getByText('No rows found')).toBeInTheDocument();
});
- it('does not update page on Go To page change if page is not a number', () => {
+ it('does not update page on Go To page change if page is not a number', async () => {
const goToPage = getGoToPageInput();
- userEvent.type(goToPage, 'abc');
+ await userEvent.type(goToPage, 'abc');
expect(goToPage).toHaveValue(1);
});
});
@@ -266,12 +265,10 @@ describe('Table', () => {
describe('Sorting', () => {
it('sort rows', async () => {
- await act(() =>
- renderComponent({
- path: '/?sortBy=text&&sortDirection=desc',
- enableSorting: true,
- })
- );
+ await renderComponent({
+ path: '/?sortBy=text&&sortDirection=desc',
+ enableSorting: true,
+ });
expect(screen.getAllByRole('row').length).toEqual(data.length + 1);
const th = screen.getByRole('columnheader', { name: 'Text' });
expect(th).toBeInTheDocument();
@@ -319,42 +316,42 @@ describe('Table', () => {
expect(checkboxes[4]).toBeDisabled();
});
- it('renders action bar', () => {
+ it('renders action bar', async () => {
expect(screen.getAllByRole('row').length).toEqual(data.length + 1);
expect(screen.queryByText('I am Action Bar')).not.toBeInTheDocument();
const checkboxes = screen.getAllByRole('checkbox');
expect(checkboxes.length).toEqual(data.length + 1);
- userEvent.click(checkboxes[2]);
+ await userEvent.click(checkboxes[2]);
expect(screen.getByText('I am Action Bar')).toBeInTheDocument();
});
});
describe('Clickable Row', () => {
const onRowClick = jest.fn();
- it('handles onRowClick', () => {
+ it('handles onRowClick', async () => {
renderComponent({ onRowClick });
const rows = screen.getAllByRole('row');
expect(rows.length).toEqual(data.length + 1);
- userEvent.click(rows[1]);
+ await userEvent.click(rows[1]);
expect(onRowClick).toHaveBeenCalledTimes(1);
});
- it('does nothing unless onRowClick is provided', () => {
+ it('does nothing unless onRowClick is provided', async () => {
renderComponent();
const rows = screen.getAllByRole('row');
expect(rows.length).toEqual(data.length + 1);
- userEvent.click(rows[1]);
+ await userEvent.click(rows[1]);
});
- it('does not handle onRowClick if enableRowSelection', () => {
+ it('does not handle onRowClick if enableRowSelection', async () => {
renderComponent({ onRowClick, enableRowSelection: true });
const rows = screen.getAllByRole('row');
expect(rows.length).toEqual(data.length + 1);
- userEvent.click(rows[1]);
+ await userEvent.click(rows[1]);
expect(onRowClick).not.toHaveBeenCalled();
});
- it('does not handle onRowClick if expandable rows', () => {
+ it('does not handle onRowClick if expandable rows', async () => {
renderComponent({ onRowClick, getRowCanExpand: () => true });
const rows = screen.getAllByRole('row');
expect(rows.length).toEqual(data.length + 1);
- userEvent.click(rows[1]);
+ await userEvent.click(rows[1]);
expect(onRowClick).not.toHaveBeenCalled();
});
});
diff --git a/kafka-ui-react-app/src/components/common/Search/__tests__/Search.spec.tsx b/kafka-ui-react-app/src/components/common/Search/__tests__/Search.spec.tsx
index b9d1aa362b..808f229317 100644
--- a/kafka-ui-react-app/src/components/common/Search/__tests__/Search.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/Search/__tests__/Search.spec.tsx
@@ -24,11 +24,11 @@ describe('Search', () => {
setSearchParamsMock,
]);
});
- it('calls handleSearch on input', () => {
+ it('calls handleSearch on input', async () => {
render();
const input = screen.getByPlaceholderText(placeholder);
- userEvent.click(input);
- userEvent.keyboard('value');
+ await userEvent.click(input);
+ await userEvent.keyboard('value');
expect(setSearchParamsMock).toHaveBeenCalledTimes(5);
});
diff --git a/kafka-ui-react-app/src/components/common/Select/__tests__/Select.spec.tsx b/kafka-ui-react-app/src/components/common/Select/__tests__/Select.spec.tsx
index 1f6ce0851d..f05d9e126b 100644
--- a/kafka-ui-react-app/src/components/common/Select/__tests__/Select.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/Select/__tests__/Select.spec.tsx
@@ -36,29 +36,29 @@ describe('Custom Select', () => {
expect(getListbox()).toBeInTheDocument();
});
- it('show select options when select is being clicked', () => {
+ it('show select options when select is being clicked', async () => {
expect(getOption()).toBeInTheDocument();
- userEvent.click(getListbox());
+ await userEvent.click(getListbox());
expect(screen.getAllByRole('option')).toHaveLength(3);
});
- it('checking select option change', () => {
+ it('checking select option change', async () => {
const optionLabel = 'test-label1';
- userEvent.click(getListbox());
- userEvent.selectOptions(getListbox(), [optionLabel]);
+ await userEvent.click(getListbox());
+ await userEvent.selectOptions(getListbox(), [optionLabel]);
expect(getOption()).toHaveTextContent(optionLabel);
});
- it('trying to select disabled option does not trigger change', () => {
+ it('trying to select disabled option does not trigger change', async () => {
const normalOptionLabel = 'test-label1';
const disabledOptionLabel = 'test-label2';
- userEvent.click(getListbox());
- userEvent.selectOptions(getListbox(), [normalOptionLabel]);
- userEvent.click(getListbox());
- userEvent.selectOptions(getListbox(), [disabledOptionLabel]);
+ await userEvent.click(getListbox());
+ await userEvent.selectOptions(getListbox(), [normalOptionLabel]);
+ await userEvent.click(getListbox());
+ await userEvent.selectOptions(getListbox(), [disabledOptionLabel]);
expect(getOption()).toHaveTextContent(normalOptionLabel);
});
diff --git a/kafka-ui-react-app/src/components/common/table/__tests__/TableHeaderCell.spec.tsx b/kafka-ui-react-app/src/components/common/table/__tests__/TableHeaderCell.spec.tsx
index 794583dae7..aa4f82c2b0 100644
--- a/kafka-ui-react-app/src/components/common/table/__tests__/TableHeaderCell.spec.tsx
+++ b/kafka-ui-react-app/src/components/common/table/__tests__/TableHeaderCell.spec.tsx
@@ -61,7 +61,7 @@ describe('TableHeaderCell', () => {
expect(title).toHaveStyle(`color: ${theme.table.th.color.active};`);
expect(title).toHaveStyle('cursor: pointer;');
});
- it('renders click on title triggers handler', () => {
+ it('renders click on title triggers handler', async () => {
setupComponent({
title: testTitle,
orderBy: TopicColumnsToSort.NAME,
@@ -69,11 +69,11 @@ describe('TableHeaderCell', () => {
handleOrderBy,
});
const title = within(getColumnHeader()).getByRole('button');
- userEvent.click(title);
+ await userEvent.click(title);
expect(handleOrderBy.mock.calls.length).toBe(1);
});
- it('renders space on title triggers handler', () => {
+ it('renders space on title triggers handler', async () => {
setupComponent({
title: testTitle,
orderBy: TopicColumnsToSort.NAME,
@@ -81,30 +81,30 @@ describe('TableHeaderCell', () => {
handleOrderBy,
});
const title = within(getColumnHeader()).getByRole('button');
- userEvent.type(title, SPACE_KEY);
+ await userEvent.type(title, SPACE_KEY);
// userEvent.type clicks and only then presses space
expect(handleOrderBy.mock.calls.length).toBe(2);
});
- it('click on preview triggers handler', () => {
+ it('click on preview triggers handler', async () => {
setupComponent({
title: testTitle,
previewText: testPreviewText,
onPreview,
});
const preview = within(getColumnHeader()).getByRole('button');
- userEvent.click(preview);
+ await userEvent.click(preview);
expect(onPreview.mock.calls.length).toBe(1);
});
- it('click on preview triggers handler', () => {
+ it('click on preview triggers handler', async () => {
setupComponent({
title: testTitle,
previewText: testPreviewText,
onPreview,
});
const preview = within(getColumnHeader()).getByRole('button');
- userEvent.type(preview, SPACE_KEY);
+ await userEvent.type(preview, SPACE_KEY);
expect(onPreview.mock.calls.length).toBe(2);
});