diff --git a/src/table/__tests__/a11y.test.tsx b/src/table/__tests__/a11y.test.tsx index 5b31974a4e..7db71903c9 100644 --- a/src/table/__tests__/a11y.test.tsx +++ b/src/table/__tests__/a11y.test.tsx @@ -130,6 +130,16 @@ describe('labels', () => { expect(wrapper.find('[role=table]')!.getElement().getAttribute('aria-rowcount')).toEqual('-1'); }); + test('aria-rowcount should be -1 if the table is loading', () => { + const wrapper = renderTableWrapper({ loading: true, loadingText: 'Loading items', totalItemsCount: 500 }); + expect(wrapper.find('[role=table]')!.getElement().getAttribute('aria-rowcount')).toEqual('-1'); + }); + + test('aria-rowcount should be 2 (header and empty state cell) if the empty state is rendered', () => { + const wrapper = renderTableWrapper({ items: [], totalItemsCount: 500 }); + expect(wrapper.find('[role=table]')!.getElement().getAttribute('aria-rowcount')).toEqual('2'); + }); + test.each([undefined, 21])('sets aria-rowindex on table rows', firstIndex => { const expectedFirstIndex = firstIndex ?? 1; const wrapper = renderTableWrapper({ firstIndex }); diff --git a/src/table/internal.tsx b/src/table/internal.tsx index a55bac76ab..701edfff58 100644 --- a/src/table/internal.tsx +++ b/src/table/internal.tsx @@ -547,7 +547,7 @@ const InternalTable = React.forwardRef( )} {...getTableRoleProps({ tableRole, - totalItemsCount, + totalItemsCount: loading ? -1 : allItems.length === 0 ? 1 : totalItemsCount, totalColumnsCount: totalColumnsCount, ariaLabel: ariaLabels?.tableLabel, ariaLabelledby,