diff --git a/packages/react-core/src/components/Chip/__tests__/ChipGroup.test.tsx b/packages/react-core/src/components/Chip/__tests__/ChipGroup.test.tsx
index 69055dcc3ef..807944710f1 100644
--- a/packages/react-core/src/components/Chip/__tests__/ChipGroup.test.tsx
+++ b/packages/react-core/src/components/Chip/__tests__/ChipGroup.test.tsx
@@ -5,66 +5,293 @@ import userEvent from '@testing-library/user-event';
 
 import { ChipGroup } from '../index';
 import { Chip } from '../../Chip';
+import styles from '@patternfly/react-styles/css/components/Chip/chip-group';
 
-describe('ChipGroup', () => {
-  test('chip group default', () => {
-    const { asFragment } = render(
-      <ChipGroup>
-        <Chip>1.1</Chip>
-      </ChipGroup>
-    );
-
-    expect(asFragment()).toMatchSnapshot();
-  });
-
-  test('chip group with category', () => {
-    const { asFragment } = render(
-      <ChipGroup categoryName="category">
-        <Chip>1.1</Chip>
-      </ChipGroup>
-    );
-    expect(asFragment()).toMatchSnapshot();
-  });
-
-  test('chip group with closable category', () => {
-    const { asFragment } = render(
-      <ChipGroup categoryName="category" isClosable>
-        <Chip>1.1</Chip>
-      </ChipGroup>
-    );
-    expect(asFragment()).toMatchSnapshot();
-  });
-
-  test('chip group expanded', async () => {
-    const user = userEvent.setup();
-
-    render(
-      <ChipGroup>
-        <Chip>1</Chip>
-        <Chip>2</Chip>
-        <Chip>3</Chip>
-        <Chip>4</Chip>
-      </ChipGroup>
-    );
-
-    const moreText = screen.getByText('1 more');
-    expect(moreText).toBeInTheDocument();
-
-    await user.click(moreText);
-    expect(screen.getByText('Show Less')).toBeInTheDocument();
-  });
-
-  test('chip group will not render if no children passed', () => {
-    render(<ChipGroup />);
-    expect(screen.queryByRole('group')).toBeNull();
-  });
-
-  test('chip group with category and tooltip', () => {
-    const { asFragment } = render(
-      <ChipGroup categoryName="A very long category name">
-        <Chip>1.1</Chip>
-      </ChipGroup>
-    );
-    expect(asFragment()).toMatchSnapshot();
-  });
+test('chip group default', () => {
+  render(
+    <ChipGroup>
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.getByRole('group')).toHaveClass(styles.chipGroup);
+});
+
+test('chip group with custom className', () => {
+  render(
+    <ChipGroup className="test">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.getByRole('group')).toHaveClass(`${styles.chipGroup} test`);
+});
+
+test('chip group has aria-label by default when categoryName is not passed', () => {
+  render(
+    <ChipGroup>
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.getByRole('group')).toHaveAccessibleName('Chip group category');
+});
+
+test('chip group with custom aria-label', () => {
+  render(
+    <ChipGroup aria-label="test chip group">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.getByRole('group')).toHaveAccessibleName('test chip group');
+});
+
+test('chip group with category', () => {
+  render(
+    <ChipGroup categoryName="category">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByText('category')).toBeVisible();
+});
+
+test('chip group with category renders with class pf-m-category', () => {
+  render(
+    <ChipGroup categoryName="category">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByRole('group')).toHaveClass(`${styles.modifiers.category}`);
+});
+
+test('chip group has aria-labelledby attribute', () => {
+  render(
+    <ChipGroup categoryName="category">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByRole('group')).toHaveAttribute('aria-labelledby', expect.stringContaining(`pf-random-id`));
+});
+
+test('chip group has aria-labelledby attribute set to ID value', () => {
+  render(
+    <ChipGroup categoryName="category" id="chip-group-id">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByRole('group')).toHaveAttribute('aria-labelledby', 'chip-group-id');
+});
+
+test('chip group expands', async () => {
+  const user = userEvent.setup();
+  const chips = ['Chip one', 'Really long chip that goes on and on', 'Chip three', 'Chip four', 'Chip five'];
+
+  render(
+    <ChipGroup aria-label="test">
+      {chips.map((currentChip) => (
+        <Chip key={currentChip}>{currentChip}</Chip>
+      ))}
+    </ChipGroup>
+  );
+
+  await user.click(screen.getByText('2 more'));
+  expect(screen.getByText('Chip five')).toBeVisible();
+});
+
+test('chip group with closable category', () => {
+  render(
+    <ChipGroup categoryName="category" isClosable>
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByRole('group').lastChild).toHaveClass(styles.chipGroupClose);
+});
+
+test('chip group with closeBtnAriaLabel', () => {
+  render(
+    <ChipGroup closeBtnAriaLabel="close button aria label" isClosable categoryName="category">
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+  expect(screen.getByLabelText('close button aria label')).toBeInTheDocument();
+  expect(screen.getByLabelText('close button aria label')).toHaveAccessibleName("close button aria label category");
+});
+
+test('chip group onClick', async () => {
+  const onClose = jest.fn();
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup categoryName="category" isClosable onClick={onClose}>
+      <Chip>1.1</Chip>
+    </ChipGroup>
+  );
+
+  await user.click(screen.getByLabelText('Close chip group'));
+  expect(onClose).toHaveBeenCalledTimes(1);
+});
+
+test('chip group onOverflowChipClick', async () => {
+  const onOverflowChipClick = jest.fn();
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup categoryName="category" onOverflowChipClick={onOverflowChipClick}>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  await user.click(screen.getByText('1 more'));
+  expect(onOverflowChipClick).toHaveBeenCalledTimes(1);
+});
+
+test('chip group expanded', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('1 more');
+  expect(moreText).toBeInTheDocument();
+
+  await user.click(moreText);
+  expect(screen.getByText('Show Less')).toBeInTheDocument();
+});
+
+test('overflow chip does not render by default when < 4 children are passed', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.queryByText('1 more')).not.toBeInTheDocument();
+});
+
+test('overflow chip collapsed by default', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('1 more');
+  expect(moreText).toBeInTheDocument();
+});
+
+test('overflow chip renders with the default numChips prop value of 3', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('1 more');
+  expect(moreText).toBeInTheDocument();
+
+  await user.click(moreText);
+  expect(screen.getByText('Show Less')).toBeInTheDocument();
+});
+
+test('overflow chip renders with numChips prop value of 2', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup numChips={2}>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('1 more');
+  expect(moreText).toBeInTheDocument();
+
+  await user.click(moreText);
+  expect(screen.getByText('Show Less')).toBeInTheDocument();
+});
+
+test('clicking the overflow chip causes the text to update with the default props', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('1 more');
+
+  await user.click(moreText);
+  expect(screen.getByText('Show Less')).toBeInTheDocument();
+});
+
+test('passing in the expandedText and collapsedText props work', async () => {
+  const user = userEvent.setup();
+
+  render(
+    <ChipGroup expandedText="Collapse" collapsedText="Expand">
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  const moreText = screen.getByText('Expand');
+  expect(moreText).toBeInTheDocument();
+
+  await user.click(moreText);
+  expect(screen.getByText('Collapse')).toBeInTheDocument();
+});
+
+test('passing defaultIsOpen of true causes the chip group to be expanded by default', async () => {
+  render(
+    <ChipGroup defaultIsOpen>
+      <Chip>1</Chip>
+      <Chip>2</Chip>
+      <Chip>3</Chip>
+      <Chip>4</Chip>
+    </ChipGroup>
+  );
+
+  expect(screen.getByText('Show Less')).toBeInTheDocument();
+});
+
+test('chip group will not render if no children passed', () => {
+  render(<ChipGroup />);
+  expect(screen.queryByRole('group')).toBeNull();
+});
+
+test('chip group renders to match snapshot', () => {
+  const { asFragment } = render(<ChipGroup>chips</ChipGroup>);
+  expect(screen.getByRole('group')).toBeInTheDocument();
+  expect(asFragment()).toMatchSnapshot();
 });
diff --git a/packages/react-core/src/components/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap b/packages/react-core/src/components/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap
index 0b8e5375434..e54bd1962a6 100644
--- a/packages/react-core/src/components/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap
+++ b/packages/react-core/src/components/Chip/__tests__/__snapshots__/ChipGroup.test.tsx.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`ChipGroup chip group default 1`] = `
+exports[`chip group renders to match snapshot 1`] = `
 <DocumentFragment>
   <div
     aria-label="Chip group category"
@@ -20,321 +20,10 @@ exports[`ChipGroup chip group default 1`] = `
         <li
           class="pf-v5-c-chip-group__list-item"
         >
-          <div
-            class="pf-v5-c-chip"
-            data-ouia-component-id="OUIA-Generated-Chip-1"
-            data-ouia-component-type="PF5/Chip"
-            data-ouia-safe="true"
-          >
-            <span
-              class="pf-v5-c-chip__content"
-            >
-              <span
-                class="pf-v5-c-chip__text"
-                id="pf-random-id-1"
-              >
-                1.1
-              </span>
-            </span>
-            <span
-              class="pf-v5-c-chip__actions"
-            >
-              <button
-                aria-disabled="false"
-                aria-label="close"
-                aria-labelledby="remove_pf-random-id-1 pf-random-id-1"
-                class="pf-v5-c-button pf-m-plain"
-                data-ouia-component-id="close"
-                data-ouia-component-type="PF5/Button"
-                data-ouia-safe="true"
-                id="remove_pf-random-id-1"
-                type="button"
-              >
-                <svg
-                  aria-hidden="true"
-                  class="pf-v5-svg"
-                  fill="currentColor"
-                  height="1em"
-                  role="img"
-                  viewBox="0 0 352 512"
-                  width="1em"
-                >
-                  <path
-                    d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
-                  />
-                </svg>
-              </button>
-            </span>
-          </div>
+          chips
         </li>
       </ul>
     </div>
   </div>
 </DocumentFragment>
 `;
-
-exports[`ChipGroup chip group with category 1`] = `
-<DocumentFragment>
-  <div
-    aria-labelledby="pf-random-id-2"
-    class="pf-v5-c-chip-group pf-m-category"
-    data-ouia-component-type="PF5/ChipGroup"
-    data-ouia-safe="true"
-    role="group"
-  >
-    <div
-      class="pf-v5-c-chip-group__main"
-    >
-      <span
-        class="pf-v5-c-chip-group__label"
-        id="pf-random-id-2"
-      >
-        category
-      </span>
-      <ul
-        aria-labelledby="pf-random-id-2"
-        class="pf-v5-c-chip-group__list"
-        role="list"
-      >
-        <li
-          class="pf-v5-c-chip-group__list-item"
-        >
-          <div
-            class="pf-v5-c-chip"
-            data-ouia-component-id="OUIA-Generated-Chip-2"
-            data-ouia-component-type="PF5/Chip"
-            data-ouia-safe="true"
-          >
-            <span
-              class="pf-v5-c-chip__content"
-            >
-              <span
-                class="pf-v5-c-chip__text"
-                id="pf-random-id-3"
-              >
-                1.1
-              </span>
-            </span>
-            <span
-              class="pf-v5-c-chip__actions"
-            >
-              <button
-                aria-disabled="false"
-                aria-label="close"
-                aria-labelledby="remove_pf-random-id-3 pf-random-id-3"
-                class="pf-v5-c-button pf-m-plain"
-                data-ouia-component-id="close"
-                data-ouia-component-type="PF5/Button"
-                data-ouia-safe="true"
-                id="remove_pf-random-id-3"
-                type="button"
-              >
-                <svg
-                  aria-hidden="true"
-                  class="pf-v5-svg"
-                  fill="currentColor"
-                  height="1em"
-                  role="img"
-                  viewBox="0 0 352 512"
-                  width="1em"
-                >
-                  <path
-                    d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
-                  />
-                </svg>
-              </button>
-            </span>
-          </div>
-        </li>
-      </ul>
-    </div>
-  </div>
-</DocumentFragment>
-`;
-
-exports[`ChipGroup chip group with category and tooltip 1`] = `
-<DocumentFragment>
-  <div
-    aria-labelledby="pf-random-id-12"
-    class="pf-v5-c-chip-group pf-m-category"
-    data-ouia-component-type="PF5/ChipGroup"
-    data-ouia-safe="true"
-    role="group"
-  >
-    <div
-      class="pf-v5-c-chip-group__main"
-    >
-      <span
-        class="pf-v5-c-chip-group__label"
-        id="pf-random-id-12"
-      >
-        A very long category name
-      </span>
-      <ul
-        aria-labelledby="pf-random-id-12"
-        class="pf-v5-c-chip-group__list"
-        role="list"
-      >
-        <li
-          class="pf-v5-c-chip-group__list-item"
-        >
-          <div
-            class="pf-v5-c-chip"
-            data-ouia-component-id="OUIA-Generated-Chip-9"
-            data-ouia-component-type="PF5/Chip"
-            data-ouia-safe="true"
-          >
-            <span
-              class="pf-v5-c-chip__content"
-            >
-              <span
-                class="pf-v5-c-chip__text"
-                id="pf-random-id-13"
-              >
-                1.1
-              </span>
-            </span>
-            <span
-              class="pf-v5-c-chip__actions"
-            >
-              <button
-                aria-disabled="false"
-                aria-label="close"
-                aria-labelledby="remove_pf-random-id-13 pf-random-id-13"
-                class="pf-v5-c-button pf-m-plain"
-                data-ouia-component-id="close"
-                data-ouia-component-type="PF5/Button"
-                data-ouia-safe="true"
-                id="remove_pf-random-id-13"
-                type="button"
-              >
-                <svg
-                  aria-hidden="true"
-                  class="pf-v5-svg"
-                  fill="currentColor"
-                  height="1em"
-                  role="img"
-                  viewBox="0 0 352 512"
-                  width="1em"
-                >
-                  <path
-                    d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
-                  />
-                </svg>
-              </button>
-            </span>
-          </div>
-        </li>
-      </ul>
-    </div>
-  </div>
-</DocumentFragment>
-`;
-
-exports[`ChipGroup chip group with closable category 1`] = `
-<DocumentFragment>
-  <div
-    aria-labelledby="pf-random-id-4"
-    class="pf-v5-c-chip-group pf-m-category"
-    data-ouia-component-type="PF5/ChipGroup"
-    data-ouia-safe="true"
-    role="group"
-  >
-    <div
-      class="pf-v5-c-chip-group__main"
-    >
-      <span
-        class="pf-v5-c-chip-group__label"
-        id="pf-random-id-4"
-      >
-        category
-      </span>
-      <ul
-        aria-labelledby="pf-random-id-4"
-        class="pf-v5-c-chip-group__list"
-        role="list"
-      >
-        <li
-          class="pf-v5-c-chip-group__list-item"
-        >
-          <div
-            class="pf-v5-c-chip"
-            data-ouia-component-id="OUIA-Generated-Chip-3"
-            data-ouia-component-type="PF5/Chip"
-            data-ouia-safe="true"
-          >
-            <span
-              class="pf-v5-c-chip__content"
-            >
-              <span
-                class="pf-v5-c-chip__text"
-                id="pf-random-id-5"
-              >
-                1.1
-              </span>
-            </span>
-            <span
-              class="pf-v5-c-chip__actions"
-            >
-              <button
-                aria-disabled="false"
-                aria-label="close"
-                aria-labelledby="remove_pf-random-id-5 pf-random-id-5"
-                class="pf-v5-c-button pf-m-plain"
-                data-ouia-component-id="close"
-                data-ouia-component-type="PF5/Button"
-                data-ouia-safe="true"
-                id="remove_pf-random-id-5"
-                type="button"
-              >
-                <svg
-                  aria-hidden="true"
-                  class="pf-v5-svg"
-                  fill="currentColor"
-                  height="1em"
-                  role="img"
-                  viewBox="0 0 352 512"
-                  width="1em"
-                >
-                  <path
-                    d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
-                  />
-                </svg>
-              </button>
-            </span>
-          </div>
-        </li>
-      </ul>
-    </div>
-    <div
-      class="pf-v5-c-chip-group__close"
-    >
-      <button
-        aria-disabled="false"
-        aria-label="Close chip group"
-        aria-labelledby="remove_group_pf-random-id-4 pf-random-id-4"
-        class="pf-v5-c-button pf-m-plain"
-        data-ouia-component-id="Close chip group"
-        data-ouia-component-type="PF5/Button"
-        data-ouia-safe="true"
-        id="remove_group_pf-random-id-4"
-        type="button"
-      >
-        <svg
-          aria-hidden="true"
-          class="pf-v5-svg"
-          fill="currentColor"
-          height="1em"
-          role="img"
-          viewBox="0 0 512 512"
-          width="1em"
-        >
-          <path
-            d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"
-          />
-        </svg>
-      </button>
-    </div>
-  </div>
-</DocumentFragment>
-`;
