Compare commits

...

2 Commits

Author SHA1 Message Date
Mehmet Salih Yavuz
4ad69554a9 fix: update tests to handle duplicate table headers from antd 5.27.4
The antd upgrade to 5.27.4 changed the Table component rendering to include
duplicate column headers, causing Jest tests to fail when using findByText/getByText
for table headers. Updated tests to use findAllByText/getAllByText instead.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:25:22 +03:00
Mehmet Salih Yavuz
f5b886b833 chore: upgrade antd to 5.27.4 2025-09-23 23:01:23 +03:00
6 changed files with 59 additions and 58 deletions

View File

@@ -56,7 +56,7 @@
"@visx/xychart": "^3.5.1",
"ag-grid-community": "34.2.0",
"ag-grid-react": "34.2.0",
"antd": "^5.24.6",
"antd": "^5.27.4",
"chrono-node": "^2.7.8",
"classnames": "^2.2.5",
"content-disposition": "^0.5.4",
@@ -10700,9 +10700,9 @@
}
},
"node_modules/@rc-component/trigger": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.6.tgz",
"integrity": "sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.3.0.tgz",
"integrity": "sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.2",
@@ -18901,9 +18901,9 @@
}
},
"node_modules/antd": {
"version": "5.25.4",
"resolved": "https://registry.npmjs.org/antd/-/antd-5.25.4.tgz",
"integrity": "sha512-yXdWqq1NJSZnD1HoPZWnWuQJGVYYnB3h0Ufsz4sbt3T0N9SdJ4G9GPpLMk8Gn9zWtwBekfR4THPVZ9uzAyhBHQ==",
"version": "5.27.4",
"resolved": "https://registry.npmjs.org/antd/-/antd-5.27.4.tgz",
"integrity": "sha512-rhArohoAUCxhkPjGI/BXthOrrjaElL4Fb7d4vEHnIR3DpxFXfegd4rN21IgGdiF+Iz4EFuUZu8MdS8NuJHLSVQ==",
"license": "MIT",
"dependencies": {
"@ant-design/colors": "^7.2.1",
@@ -18917,7 +18917,7 @@
"@rc-component/mutate-observer": "^1.1.0",
"@rc-component/qrcode": "~1.0.0",
"@rc-component/tour": "~1.15.1",
"@rc-component/trigger": "^2.2.6",
"@rc-component/trigger": "^2.3.0",
"classnames": "^2.5.1",
"copy-to-clipboard": "^3.3.3",
"dayjs": "^1.11.11",
@@ -18942,12 +18942,12 @@
"rc-resize-observer": "^1.4.3",
"rc-segmented": "~2.7.0",
"rc-select": "~14.16.8",
"rc-slider": "~11.1.8",
"rc-slider": "~11.1.9",
"rc-steps": "~6.0.1",
"rc-switch": "~4.1.0",
"rc-table": "~7.50.5",
"rc-tabs": "~15.6.1",
"rc-textarea": "~1.10.0",
"rc-table": "~7.53.0",
"rc-tabs": "~15.7.0",
"rc-textarea": "~1.10.2",
"rc-tooltip": "~6.4.0",
"rc-tree": "~5.13.1",
"rc-tree-select": "~5.27.0",
@@ -47634,9 +47634,9 @@
}
},
"node_modules/rc-slider": {
"version": "11.1.8",
"resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.8.tgz",
"integrity": "sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==",
"version": "11.1.9",
"resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.9.tgz",
"integrity": "sha512-h8IknhzSh3FEM9u8ivkskh+Ef4Yo4JRIY2nj7MrH6GQmrwV6mcpJf5/4KgH5JaVI1H3E52yCdpOlVyGZIeph5A==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.10.1",
@@ -47685,9 +47685,9 @@
}
},
"node_modules/rc-table": {
"version": "7.50.5",
"resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.5.tgz",
"integrity": "sha512-FDZu8aolhSYd3v9KOc3lZOVAU77wmRRu44R0Wfb8Oj1dXRUsloFaXMSl6f7yuWZUxArJTli7k8TEOX2mvhDl4A==",
"version": "7.53.1",
"resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.53.1.tgz",
"integrity": "sha512-firAd7Z+liqIDS5TubJ1qqcoBd6YcANLKWQDZhFf3rfoOTt/UNPj4n3O+2vhl+z4QMqwPEUVAil661WHA8H8Aw==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.10.1",
@@ -47706,9 +47706,9 @@
}
},
"node_modules/rc-tabs": {
"version": "15.6.1",
"resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.6.1.tgz",
"integrity": "sha512-/HzDV1VqOsUWyuC0c6AkxVYFjvx9+rFPKZ32ejxX0Uc7QCzcEjTA9/xMgv4HemPKwzBNX8KhGVbbumDjnj92aA==",
"version": "15.7.0",
"resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.7.0.tgz",
"integrity": "sha512-ZepiE+6fmozYdWf/9gVp7k56PKHB1YYoDsKeQA1CBlJ/POIhjkcYiv0AGP0w2Jhzftd3AVvZP/K+V+Lpi2ankA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.11.2",
@@ -47728,9 +47728,9 @@
}
},
"node_modules/rc-textarea": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.0.tgz",
"integrity": "sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA==",
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.2.tgz",
"integrity": "sha512-HfaeXiaSlpiSp0I/pvWpecFEHpVysZ9tpDLNkxQbMvMz6gsr7aVZ7FpWP9kt4t7DB+jJXesYS0us1uPZnlRnwQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.10.1",

View File

@@ -129,7 +129,7 @@
"@visx/xychart": "^3.5.1",
"ag-grid-community": "34.2.0",
"ag-grid-react": "34.2.0",
"antd": "^5.24.6",
"antd": "^5.27.4",
"chrono-node": "^2.7.8",
"classnames": "^2.2.5",
"content-disposition": "^0.5.4",

View File

@@ -218,7 +218,8 @@ describe('ChartList - List View Tests', () => {
// Verify all expected headers are present
expectedHeaders.forEach(headerText => {
expect(within(table).getByText(headerText)).toBeInTheDocument();
const headers = within(table).getAllByText(headerText);
expect(headers.length).toBeGreaterThan(0);
});
});
@@ -234,8 +235,8 @@ describe('ChartList - List View Tests', () => {
expect(sortableHeaders).toHaveLength(3);
const nameHeader = within(table).getByText('Name');
fireEvent.click(nameHeader);
const nameHeaders = within(table).getAllByText('Name');
fireEvent.click(nameHeaders[0]);
await waitFor(() => {
const sortCalls = fetchMock

View File

@@ -158,11 +158,11 @@ describe('RolesList', () => {
const table = screen.getByRole('table');
expect(table).toBeInTheDocument();
const nameColumn = await within(table).findByText('Name');
const actionsColumn = await within(table).findByText('Actions');
const nameColumns = await within(table).findAllByText('Name');
const actionsColumns = await within(table).findAllByText('Actions');
expect(nameColumn).toBeInTheDocument();
expect(actionsColumn).toBeInTheDocument();
expect(nameColumns.length).toBeGreaterThan(0);
expect(actionsColumns.length).toBeGreaterThan(0);
});
it('opens add modal when Add Role button is clicked', async () => {

View File

@@ -173,19 +173,19 @@ describe('RuleList RTL', () => {
const table = screen.getByRole('table');
expect(table).toBeInTheDocument();
const nameColumn = await within(table).findByText('Name');
const filterTypeColumn = await within(table).findByText('Filter Type');
const groupKeyColumn = await within(table).findByText('Group Key');
const clauseColumn = await within(table).findByText('Clause');
const modifiedColumn = await within(table).findByText('Last modified');
const actionsColumn = await within(table).findByText('Actions');
const nameColumns = await within(table).findAllByText('Name');
const filterTypeColumns = await within(table).findAllByText('Filter Type');
const groupKeyColumns = await within(table).findAllByText('Group Key');
const clauseColumns = await within(table).findAllByText('Clause');
const modifiedColumns = await within(table).findAllByText('Last modified');
const actionsColumns = await within(table).findAllByText('Actions');
expect(nameColumn).toBeInTheDocument();
expect(filterTypeColumn).toBeInTheDocument();
expect(groupKeyColumn).toBeInTheDocument();
expect(clauseColumn).toBeInTheDocument();
expect(modifiedColumn).toBeInTheDocument();
expect(actionsColumn).toBeInTheDocument();
expect(nameColumns.length).toBeGreaterThan(0);
expect(filterTypeColumns.length).toBeGreaterThan(0);
expect(groupKeyColumns.length).toBeGreaterThan(0);
expect(clauseColumns.length).toBeGreaterThan(0);
expect(modifiedColumns.length).toBeGreaterThan(0);
expect(actionsColumns.length).toBeGreaterThan(0);
});
it('renders correct action buttons with write permission', async () => {

View File

@@ -151,21 +151,21 @@ describe('UsersList', () => {
const table = screen.getByRole('table');
expect(table).toBeInTheDocument();
const fnameColumn = await within(table).findByText('First name');
const lnameColumn = await within(table).findByText('Last name');
const usernameColumn = await within(table).findByText('Username');
const emailColumn = await within(table).findByText('Email');
const rolesColumn = await within(table).findByText('Roles');
const actionsColumn = await within(table).findByText('Actions');
const activeColumn = await within(table).findByText('Is active?');
const fnameColumns = await within(table).findAllByText('First name');
const lnameColumns = await within(table).findAllByText('Last name');
const usernameColumns = await within(table).findAllByText('Username');
const emailColumns = await within(table).findAllByText('Email');
const rolesColumns = await within(table).findAllByText('Roles');
const actionsColumns = await within(table).findAllByText('Actions');
const activeColumns = await within(table).findAllByText('Is active?');
expect(fnameColumn).toBeInTheDocument();
expect(lnameColumn).toBeInTheDocument();
expect(usernameColumn).toBeInTheDocument();
expect(emailColumn).toBeInTheDocument();
expect(rolesColumn).toBeInTheDocument();
expect(activeColumn).toBeInTheDocument();
expect(actionsColumn).toBeInTheDocument();
expect(fnameColumns.length).toBeGreaterThan(0);
expect(lnameColumns.length).toBeGreaterThan(0);
expect(usernameColumns.length).toBeGreaterThan(0);
expect(emailColumns.length).toBeGreaterThan(0);
expect(rolesColumns.length).toBeGreaterThan(0);
expect(activeColumns.length).toBeGreaterThan(0);
expect(actionsColumns.length).toBeGreaterThan(0);
});
it('opens add modal when Add User button is clicked', async () => {