@patternfly/react-core 6.4.1-prerelease.9 → 6.5.0-prerelease.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Compass/package.json +1 -0
  23. package/dist/dynamic/components/Content/package.json +1 -1
  24. package/dist/dynamic/components/DataList/package.json +1 -1
  25. package/dist/dynamic/components/DatePicker/package.json +1 -1
  26. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  27. package/dist/dynamic/components/Divider/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/package.json +1 -1
  91. package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -1
  92. package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -1
  93. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  94. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  95. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  96. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  97. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  98. package/dist/dynamic/helpers/constants/package.json +1 -1
  99. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  100. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  102. package/dist/dynamic/helpers/package.json +1 -1
  103. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  104. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  105. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  106. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  107. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  108. package/dist/dynamic/helpers/util/package.json +1 -1
  109. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  110. package/dist/dynamic/layouts/Flex/package.json +1 -1
  111. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  112. package/dist/dynamic/layouts/Grid/package.json +1 -1
  113. package/dist/dynamic/layouts/Level/package.json +1 -1
  114. package/dist/dynamic/layouts/Split/package.json +1 -1
  115. package/dist/dynamic/layouts/Stack/package.json +1 -1
  116. package/dist/dynamic/styles/package.json +1 -1
  117. package/dist/dynamic-modules.json +8 -0
  118. package/dist/esm/components/ActionList/ActionList.d.ts +2 -0
  119. package/dist/esm/components/ActionList/ActionList.d.ts.map +1 -1
  120. package/dist/esm/components/ActionList/ActionList.js +2 -2
  121. package/dist/esm/components/ActionList/ActionList.js.map +1 -1
  122. package/dist/esm/components/Button/Button.d.ts +2 -0
  123. package/dist/esm/components/Button/Button.d.ts.map +1 -1
  124. package/dist/esm/components/Button/Button.js +2 -2
  125. package/dist/esm/components/Button/Button.js.map +1 -1
  126. package/dist/esm/components/Compass/Compass.d.ts +34 -0
  127. package/dist/esm/components/Compass/Compass.d.ts.map +1 -0
  128. package/dist/esm/components/Compass/Compass.js +25 -0
  129. package/dist/esm/components/Compass/Compass.js.map +1 -0
  130. package/dist/esm/components/Compass/CompassContent.d.ts +15 -0
  131. package/dist/esm/components/Compass/CompassContent.d.ts.map +1 -0
  132. package/dist/esm/components/Compass/CompassContent.js +16 -0
  133. package/dist/esm/components/Compass/CompassContent.js.map +1 -0
  134. package/dist/esm/components/Compass/CompassHeader.d.ts +12 -0
  135. package/dist/esm/components/Compass/CompassHeader.d.ts.map +1 -0
  136. package/dist/esm/components/Compass/CompassHeader.js +6 -0
  137. package/dist/esm/components/Compass/CompassHeader.js.map +1 -0
  138. package/dist/esm/components/Compass/CompassHero.d.ts +26 -0
  139. package/dist/esm/components/Compass/CompassHero.d.ts.map +1 -0
  140. package/dist/esm/components/Compass/CompassHero.js +47 -0
  141. package/dist/esm/components/Compass/CompassHero.js.map +1 -0
  142. package/dist/esm/components/Compass/CompassMainHeader.d.ts +14 -0
  143. package/dist/esm/components/Compass/CompassMainHeader.d.ts.map +1 -0
  144. package/dist/esm/components/Compass/CompassMainHeader.js +13 -0
  145. package/dist/esm/components/Compass/CompassMainHeader.js.map +1 -0
  146. package/dist/esm/components/Compass/CompassMessageBar.d.ts +10 -0
  147. package/dist/esm/components/Compass/CompassMessageBar.d.ts.map +1 -0
  148. package/dist/esm/components/Compass/CompassMessageBar.js +10 -0
  149. package/dist/esm/components/Compass/CompassMessageBar.js.map +1 -0
  150. package/dist/esm/components/Compass/CompassPanel.d.ts +22 -0
  151. package/dist/esm/components/Compass/CompassPanel.d.ts.map +1 -0
  152. package/dist/esm/components/Compass/CompassPanel.js +10 -0
  153. package/dist/esm/components/Compass/CompassPanel.js.map +1 -0
  154. package/dist/esm/components/Compass/index.d.ts +8 -0
  155. package/dist/esm/components/Compass/index.d.ts.map +1 -0
  156. package/dist/esm/components/Compass/index.js +8 -0
  157. package/dist/esm/components/Compass/index.js.map +1 -0
  158. package/dist/esm/components/Drawer/Drawer.d.ts +2 -0
  159. package/dist/esm/components/Drawer/Drawer.d.ts.map +1 -1
  160. package/dist/esm/components/Drawer/Drawer.js +2 -2
  161. package/dist/esm/components/Drawer/Drawer.js.map +1 -1
  162. package/dist/esm/components/Menu/Menu.d.ts +0 -1
  163. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  164. package/dist/esm/components/Menu/Menu.js +5 -8
  165. package/dist/esm/components/Menu/Menu.js.map +1 -1
  166. package/dist/esm/components/MenuToggle/MenuToggle.d.ts +2 -0
  167. package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  168. package/dist/esm/components/MenuToggle/MenuToggle.js +3 -2
  169. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  170. package/dist/esm/components/Tabs/Tabs.d.ts +2 -0
  171. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  172. package/dist/esm/components/Tabs/Tabs.js +3 -2
  173. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  174. package/dist/esm/components/index.d.ts +1 -0
  175. package/dist/esm/components/index.d.ts.map +1 -1
  176. package/dist/esm/components/index.js +1 -0
  177. package/dist/esm/components/index.js.map +1 -1
  178. package/dist/js/components/ActionList/ActionList.d.ts +2 -0
  179. package/dist/js/components/ActionList/ActionList.d.ts.map +1 -1
  180. package/dist/js/components/ActionList/ActionList.js +2 -2
  181. package/dist/js/components/ActionList/ActionList.js.map +1 -1
  182. package/dist/js/components/Button/Button.d.ts +2 -0
  183. package/dist/js/components/Button/Button.d.ts.map +1 -1
  184. package/dist/js/components/Button/Button.js +2 -2
  185. package/dist/js/components/Button/Button.js.map +1 -1
  186. package/dist/js/components/Compass/Compass.d.ts +34 -0
  187. package/dist/js/components/Compass/Compass.d.ts.map +1 -0
  188. package/dist/js/components/Compass/Compass.js +29 -0
  189. package/dist/js/components/Compass/Compass.js.map +1 -0
  190. package/dist/js/components/Compass/CompassContent.d.ts +15 -0
  191. package/dist/js/components/Compass/CompassContent.d.ts.map +1 -0
  192. package/dist/js/components/Compass/CompassContent.js +20 -0
  193. package/dist/js/components/Compass/CompassContent.js.map +1 -0
  194. package/dist/js/components/Compass/CompassHeader.d.ts +12 -0
  195. package/dist/js/components/Compass/CompassHeader.d.ts.map +1 -0
  196. package/dist/js/components/Compass/CompassHeader.js +11 -0
  197. package/dist/js/components/Compass/CompassHeader.js.map +1 -0
  198. package/dist/js/components/Compass/CompassHero.d.ts +26 -0
  199. package/dist/js/components/Compass/CompassHero.d.ts.map +1 -0
  200. package/dist/js/components/Compass/CompassHero.js +51 -0
  201. package/dist/js/components/Compass/CompassHero.js.map +1 -0
  202. package/dist/js/components/Compass/CompassMainHeader.d.ts +14 -0
  203. package/dist/js/components/Compass/CompassMainHeader.d.ts.map +1 -0
  204. package/dist/js/components/Compass/CompassMainHeader.js +17 -0
  205. package/dist/js/components/Compass/CompassMainHeader.js.map +1 -0
  206. package/dist/js/components/Compass/CompassMessageBar.d.ts +10 -0
  207. package/dist/js/components/Compass/CompassMessageBar.d.ts.map +1 -0
  208. package/dist/js/components/Compass/CompassMessageBar.js +14 -0
  209. package/dist/js/components/Compass/CompassMessageBar.js.map +1 -0
  210. package/dist/js/components/Compass/CompassPanel.d.ts +22 -0
  211. package/dist/js/components/Compass/CompassPanel.d.ts.map +1 -0
  212. package/dist/js/components/Compass/CompassPanel.js +14 -0
  213. package/dist/js/components/Compass/CompassPanel.js.map +1 -0
  214. package/dist/js/components/Compass/index.d.ts +8 -0
  215. package/dist/js/components/Compass/index.d.ts.map +1 -0
  216. package/dist/js/components/Compass/index.js +11 -0
  217. package/dist/js/components/Compass/index.js.map +1 -0
  218. package/dist/js/components/Drawer/Drawer.d.ts +2 -0
  219. package/dist/js/components/Drawer/Drawer.d.ts.map +1 -1
  220. package/dist/js/components/Drawer/Drawer.js +2 -2
  221. package/dist/js/components/Drawer/Drawer.js.map +1 -1
  222. package/dist/js/components/Menu/Menu.d.ts +0 -1
  223. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  224. package/dist/js/components/Menu/Menu.js +5 -8
  225. package/dist/js/components/Menu/Menu.js.map +1 -1
  226. package/dist/js/components/MenuToggle/MenuToggle.d.ts +2 -0
  227. package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
  228. package/dist/js/components/MenuToggle/MenuToggle.js +3 -2
  229. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  230. package/dist/js/components/Tabs/Tabs.d.ts +2 -0
  231. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  232. package/dist/js/components/Tabs/Tabs.js +3 -2
  233. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  234. package/dist/js/components/index.d.ts +1 -0
  235. package/dist/js/components/index.d.ts.map +1 -1
  236. package/dist/js/components/index.js +1 -0
  237. package/dist/js/components/index.js.map +1 -1
  238. package/dist/styles/assets/images/RHAiExperienceIcon.svg +27 -0
  239. package/dist/styles/assets/images/RHAutomationsLogo.svg +96 -0
  240. package/dist/styles/assets/images/RHServerStackIcon.svg +16 -0
  241. package/dist/styles/assets/images/compass--hero-bg.png +0 -0
  242. package/dist/styles/assets/images/compass--rh-wallpaper-dark.png +0 -0
  243. package/dist/styles/assets/images/compass--rh-wallpaper-light.png +0 -0
  244. package/dist/styles/assets/images/compass--wallpaper-dark.png +0 -0
  245. package/dist/styles/assets/images/compass--wallpaper-light.png +0 -0
  246. package/dist/styles/base-no-reset.css +51 -0
  247. package/dist/styles/base.css +51 -0
  248. package/dist/umd/assets/{output-CJfbZNQh.css → output-DxVGusJA.css} +21025 -20701
  249. package/dist/umd/react-core.min.js +2 -2
  250. package/helpers/package.json +1 -1
  251. package/layouts/package.json +1 -1
  252. package/next/package.json +1 -1
  253. package/package.json +6 -6
  254. package/src/components/ActionList/ActionList.tsx +12 -1
  255. package/src/components/ActionList/__tests__/ActionList.test.tsx +12 -0
  256. package/src/components/ActionList/examples/ActionList.md +6 -0
  257. package/src/components/ActionList/examples/ActionListVertical.tsx +46 -0
  258. package/src/components/Button/Button.tsx +4 -0
  259. package/src/components/Button/__tests__/Button.test.tsx +5 -0
  260. package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
  261. package/src/components/Button/examples/Button.md +8 -0
  262. package/src/components/Button/examples/ButtonCircle.tsx +63 -0
  263. package/src/components/Compass/Compass.tsx +107 -0
  264. package/src/components/Compass/CompassContent.tsx +42 -0
  265. package/src/components/Compass/CompassHeader.tsx +21 -0
  266. package/src/components/Compass/CompassHero.tsx +87 -0
  267. package/src/components/Compass/CompassMainHeader.tsx +43 -0
  268. package/src/components/Compass/CompassMessageBar.tsx +21 -0
  269. package/src/components/Compass/CompassPanel.tsx +51 -0
  270. package/src/components/Compass/__tests__/Compass.test.tsx +172 -0
  271. package/src/components/Compass/__tests__/CompassContent.test.tsx +46 -0
  272. package/src/components/Compass/__tests__/CompassHeader.test.tsx +56 -0
  273. package/src/components/Compass/__tests__/CompassHero.test.tsx +150 -0
  274. package/src/components/Compass/__tests__/CompassMainHeader.test.tsx +90 -0
  275. package/src/components/Compass/__tests__/CompassMessageBar.test.tsx +41 -0
  276. package/src/components/Compass/__tests__/CompassPanel.test.tsx +86 -0
  277. package/src/components/Compass/__tests__/__snapshots__/Compass.test.tsx.snap +104 -0
  278. package/src/components/Compass/__tests__/__snapshots__/CompassContent.test.tsx.snap +40 -0
  279. package/src/components/Compass/__tests__/__snapshots__/CompassHeader.test.tsx.snap +27 -0
  280. package/src/components/Compass/__tests__/__snapshots__/CompassHero.test.tsx.snap +18 -0
  281. package/src/components/Compass/__tests__/__snapshots__/CompassMainHeader.test.tsx.snap +42 -0
  282. package/src/components/Compass/__tests__/__snapshots__/CompassMessageBar.test.tsx.snap +13 -0
  283. package/src/components/Compass/__tests__/__snapshots__/CompassPanel.test.tsx.snap +25 -0
  284. package/src/components/Compass/examples/Compass.md +38 -0
  285. package/src/components/Compass/examples/CompassBasic.tsx +33 -0
  286. package/src/components/Compass/examples/CompassDemo.tsx +151 -0
  287. package/src/components/Compass/examples/compass.css +11 -0
  288. package/src/components/Compass/index.ts +7 -0
  289. package/src/components/Drawer/Drawer.tsx +4 -0
  290. package/src/components/Drawer/__tests__/Drawer.test.tsx +26 -1
  291. package/src/components/Drawer/examples/Drawer.md +13 -0
  292. package/src/components/Drawer/examples/DrawerBasicPill.tsx +57 -0
  293. package/src/components/Drawer/examples/DrawerPillInline.tsx +57 -0
  294. package/src/components/Menu/Menu.tsx +1 -6
  295. package/src/components/MenuToggle/MenuToggle.tsx +5 -1
  296. package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +20 -0
  297. package/src/components/MenuToggle/examples/MenuToggle.md +18 -0
  298. package/src/components/MenuToggle/examples/MenuTogglePlainCircle.tsx +11 -0
  299. package/src/components/Tabs/Tabs.tsx +5 -0
  300. package/src/components/index.ts +1 -0
@@ -0,0 +1,172 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { Compass } from '../Compass';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders without children', () => {
6
+ render(
7
+ <div data-testid="test-compass">
8
+ <Compass />
9
+ </div>
10
+ );
11
+ expect(screen.getByTestId('test-compass').firstChild).toBeVisible();
12
+ });
13
+
14
+ test('Renders with custom class name when className prop is provided', () => {
15
+ render(<Compass className="custom-class" data-testid="compass" />);
16
+ expect(screen.getByTestId('compass')).toHaveClass('custom-class');
17
+ });
18
+
19
+ test('Renders with default compass class', () => {
20
+ render(<Compass data-testid="compass" />);
21
+ expect(screen.getByTestId('compass')).toHaveClass(styles.compass);
22
+ });
23
+
24
+ test('Renders header content when provided', () => {
25
+ render(<Compass header={<div>Header content</div>} />);
26
+ expect(screen.getByText('Header content')).toBeVisible();
27
+ });
28
+
29
+ test('Renders sidebar start content when provided', () => {
30
+ render(<Compass sidebarStart={<div>Sidebar start</div>} />);
31
+ expect(screen.getByText('Sidebar start')).toBeVisible();
32
+ });
33
+
34
+ test('Renders main content when provided', () => {
35
+ render(<Compass main={<div>Main content</div>} />);
36
+ expect(screen.getByText('Main content')).toBeVisible();
37
+ });
38
+
39
+ test('Renders sidebar end content when provided', () => {
40
+ render(<Compass sidebarEnd={<div>Sidebar end</div>} />);
41
+ expect(screen.getByText('Sidebar end')).toBeVisible();
42
+ });
43
+
44
+ test('Renders footer content when provided', () => {
45
+ render(<Compass footer={<div>Footer content</div>} />);
46
+ expect(screen.getByText('Footer content')).toBeVisible();
47
+ });
48
+
49
+ test('Renders header with expanded class when isHeaderExpanded is true', () => {
50
+ render(<Compass header={<div>Header</div>} isHeaderExpanded />);
51
+ expect(screen.getByText('Header').parentElement).toHaveClass('pf-m-expanded');
52
+ });
53
+
54
+ test('Renders header without expanded class and with inert when isHeaderExpanded is false', () => {
55
+ render(<Compass header={<div>Header</div>} isHeaderExpanded={false} />);
56
+ const headerElement = screen.getByText('Header').parentElement;
57
+ expect(headerElement).not.toHaveClass('pf-m-expanded');
58
+ expect(headerElement).toHaveAttribute('inert');
59
+ });
60
+
61
+ test('Renders sidebar start with expanded class when isSidebarStartExpanded is true', () => {
62
+ render(<Compass sidebarStart={<div>Sidebar start</div>} isSidebarStartExpanded />);
63
+ expect(screen.getByText('Sidebar start').parentElement).toHaveClass('pf-m-expanded');
64
+ });
65
+
66
+ test('Renders sidebar start without expanded class and with inert when isSidebarStartExpanded is false', () => {
67
+ render(<Compass sidebarStart={<div>Sidebar start</div>} isSidebarStartExpanded={false} />);
68
+ const sidebarElement = screen.getByText('Sidebar start').parentElement;
69
+ expect(sidebarElement).not.toHaveClass('pf-m-expanded');
70
+ expect(sidebarElement).toHaveAttribute('inert');
71
+ });
72
+
73
+ test('Renders sidebar end with expanded class when isSidebarEndExpanded is true', () => {
74
+ render(<Compass sidebarEnd={<div>Sidebar end</div>} isSidebarEndExpanded />);
75
+ expect(screen.getByText('Sidebar end').parentElement).toHaveClass('pf-m-expanded');
76
+ });
77
+
78
+ test('Renders sidebar end without expanded class and with inert when isSidebarEndExpanded is false', () => {
79
+ render(<Compass sidebarEnd={<div>Sidebar end</div>} isSidebarEndExpanded={false} />);
80
+ const sidebarElement = screen.getByText('Sidebar end').parentElement;
81
+ expect(sidebarElement).not.toHaveClass('pf-m-expanded');
82
+ expect(sidebarElement).toHaveAttribute('inert');
83
+ });
84
+
85
+ test('Renders footer with expanded class when isFooterExpanded is true', () => {
86
+ render(<Compass footer={<div>Footer</div>} isFooterExpanded />);
87
+ expect(screen.getByText('Footer').parentElement).toHaveClass('pf-m-expanded');
88
+ });
89
+
90
+ test('Renders footer without expanded class and with inert when isFooterExpanded is false', () => {
91
+ render(<Compass footer={<div>Footer</div>} isFooterExpanded={false} />);
92
+ const footerElement = screen.getByText('Footer').parentElement;
93
+ expect(footerElement).not.toHaveClass('pf-m-expanded');
94
+ expect(footerElement).toHaveAttribute('inert');
95
+ });
96
+
97
+ test('Renders with drawer when drawerContent is provided', () => {
98
+ render(<Compass drawerContent={<div>Drawer content</div>} />);
99
+ expect(screen.getByText('Drawer content')).toBeVisible();
100
+ });
101
+
102
+ test('Renders with light background image when backgroundSrcLight is provided', () => {
103
+ const backgroundSrc = 'light-bg.jpg';
104
+ render(<Compass backgroundSrcLight={backgroundSrc} data-testid="compass" />);
105
+ expect(screen.getByTestId('compass')).toHaveStyle(`--pf-v6-c-compass--BackgroundImage--light: url(${backgroundSrc})`);
106
+ });
107
+
108
+ test('Renders with dark background image when backgroundSrcDark is provided', () => {
109
+ const backgroundSrc = 'dark-bg.jpg';
110
+ render(<Compass backgroundSrcDark={backgroundSrc} data-testid="compass" />);
111
+ expect(screen.getByTestId('compass')).toHaveStyle(`--pf-v6-c-compass--BackgroundImage--dark: url(${backgroundSrc})`);
112
+ });
113
+
114
+ test('Renders with both light and dark background images when both are provided', () => {
115
+ const lightSrc = 'light-bg.jpg';
116
+ const darkSrc = 'dark-bg.jpg';
117
+ render(<Compass backgroundSrcLight={lightSrc} backgroundSrcDark={darkSrc} data-testid="compass" />);
118
+ const compassElement = screen.getByTestId('compass');
119
+ expect(compassElement).toHaveStyle(`--pf-v6-c-compass--BackgroundImage--light: url(${lightSrc})`);
120
+ expect(compassElement).toHaveStyle(`--pf-v6-c-compass--BackgroundImage--dark: url(${darkSrc})`);
121
+ });
122
+
123
+ test('Renders with additional props spread to the component', () => {
124
+ render(<Compass aria-label="Test label" data-testid="compass" />);
125
+ expect(screen.getByTestId('compass')).toHaveAccessibleName('Test label');
126
+ });
127
+
128
+ test('Renders with default expansion states', () => {
129
+ render(
130
+ <Compass
131
+ header={<div>Header</div>}
132
+ sidebarStart={<div>Sidebar start</div>}
133
+ sidebarEnd={<div>Sidebar end</div>}
134
+ footer={<div>Footer</div>}
135
+ >
136
+ Test
137
+ </Compass>
138
+ );
139
+
140
+ expect(screen.getByText('Header').parentElement).toHaveClass('pf-m-expanded');
141
+ expect(screen.getByText('Sidebar start').parentElement).toHaveClass('pf-m-expanded');
142
+ expect(screen.getByText('Sidebar end').parentElement).toHaveClass('pf-m-expanded');
143
+ expect(screen.getByText('Footer').parentElement).toHaveClass('pf-m-expanded');
144
+ });
145
+
146
+ test('Matches the snapshot with basic layout', () => {
147
+ const { asFragment } = render(
148
+ <Compass
149
+ header={<div>Header</div>}
150
+ sidebarStart={<div>Sidebar start</div>}
151
+ main={<div>Main content</div>}
152
+ sidebarEnd={<div>Sidebar end</div>}
153
+ footer={<div>Footer</div>}
154
+ />
155
+ );
156
+ expect(asFragment()).toMatchSnapshot();
157
+ });
158
+
159
+ test('Matches the snapshot with drawer', () => {
160
+ const { asFragment } = render(
161
+ <Compass
162
+ drawerContent={<div>Drawer content</div>}
163
+ drawerProps={{ isExpanded: true }}
164
+ header={<div>Header</div>}
165
+ sidebarStart={<div>Sidebar start</div>}
166
+ main={<div>Main content</div>}
167
+ sidebarEnd={<div>Sidebar end</div>}
168
+ footer={<div>Footer</div>}
169
+ />
170
+ );
171
+ expect(asFragment()).toMatchSnapshot();
172
+ });
@@ -0,0 +1,46 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassContent } from '../CompassContent';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders with children', () => {
6
+ render(<CompassContent>Test content</CompassContent>);
7
+ expect(screen.getByText('Test content')).toBeVisible();
8
+ });
9
+
10
+ test('Renders with custom class name when className prop is provided', () => {
11
+ render(<CompassContent className="custom-class">Test</CompassContent>);
12
+ expect(screen.getByText('Test')).toHaveClass('custom-class');
13
+ });
14
+
15
+ test(`Renders with default ${styles.compassContent} class`, () => {
16
+ render(<CompassContent>Test</CompassContent>);
17
+ expect(screen.getByText('Test')).toHaveClass(styles.compassContent);
18
+ });
19
+
20
+ test('Renders with drawer when drawerContent is provided', () => {
21
+ render(<CompassContent drawerContent={<div>Drawer content</div>}>Test</CompassContent>);
22
+ expect(screen.getByText('Drawer content')).toBeVisible();
23
+ });
24
+
25
+ test('Renders with additional props spread to the component', () => {
26
+ render(<CompassContent aria-label="Test label">Test</CompassContent>);
27
+ expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
28
+ });
29
+
30
+ test('Matches the snapshot without drawer', () => {
31
+ const { asFragment } = render(
32
+ <CompassContent>
33
+ <div>Test content</div>
34
+ </CompassContent>
35
+ );
36
+ expect(asFragment()).toMatchSnapshot();
37
+ });
38
+
39
+ test('Matches the snapshot with drawer', () => {
40
+ const { asFragment } = render(
41
+ <CompassContent drawerContent={<div>Drawer content</div>} drawerProps={{ isExpanded: true }}>
42
+ <div>Test content</div>
43
+ </CompassContent>
44
+ );
45
+ expect(asFragment()).toMatchSnapshot();
46
+ });
@@ -0,0 +1,56 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassHeader } from '../CompassHeader';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders without children', () => {
6
+ render(
7
+ <div data-testid="test-header">
8
+ <CompassHeader />
9
+ </div>
10
+ );
11
+ expect(screen.getByTestId('test-header').firstChild).toBeVisible();
12
+ });
13
+
14
+ test('Renders logo content when provided', () => {
15
+ render(<CompassHeader logo={<div>Logo content</div>} />);
16
+ expect(screen.getByText('Logo content')).toBeVisible();
17
+ });
18
+
19
+ test('Renders nav content when provided', () => {
20
+ render(<CompassHeader nav={<div>Nav content</div>} />);
21
+ expect(screen.getByText('Nav content')).toBeVisible();
22
+ });
23
+
24
+ test('Renders profile content when provided', () => {
25
+ render(<CompassHeader profile={<div>Profile content</div>} />);
26
+ expect(screen.getByText('Profile content')).toBeVisible();
27
+ });
28
+
29
+ test('Renders all content when all props are provided', () => {
30
+ render(<CompassHeader logo={<div>Logo</div>} nav={<div>Nav</div>} profile={<div>Profile</div>} />);
31
+ expect(screen.getByText('Logo')).toBeVisible();
32
+ expect(screen.getByText('Nav')).toBeVisible();
33
+ expect(screen.getByText('Profile')).toBeVisible();
34
+ });
35
+
36
+ test(`Renders logo with ${styles.compass}__logo class`, () => {
37
+ render(<CompassHeader logo={<div>Logo</div>} />);
38
+ expect(screen.getByText('Logo').parentElement).toHaveClass(`${styles.compass}__logo`);
39
+ });
40
+
41
+ test(`Renders nav with ${styles.compassNav} class`, () => {
42
+ render(<CompassHeader nav={<div>Nav</div>} />);
43
+ expect(screen.getByText('Nav').parentElement).toHaveClass(styles.compassNav);
44
+ });
45
+
46
+ test(`Renders profile with ${styles.compassProfile} class`, () => {
47
+ render(<CompassHeader profile={<div>Profile</div>} />);
48
+ expect(screen.getByText('Profile').parentElement).toHaveClass(styles.compassProfile);
49
+ });
50
+
51
+ test('Matches the snapshot', () => {
52
+ const { asFragment } = render(
53
+ <CompassHeader logo={<div>Logo</div>} nav={<div>Nav</div>} profile={<div>Profile</div>} />
54
+ );
55
+ expect(asFragment()).toMatchSnapshot();
56
+ });
@@ -0,0 +1,150 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassHero } from '../CompassHero';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders without children', () => {
6
+ render(
7
+ <div data-testid="test-hero">
8
+ <CompassHero />
9
+ </div>
10
+ );
11
+ expect(screen.getByTestId('test-hero').firstChild).toBeVisible();
12
+ });
13
+
14
+ test('Renders with children', () => {
15
+ render(<CompassHero>Test content</CompassHero>);
16
+ expect(screen.getByText('Test content')).toBeVisible();
17
+ });
18
+
19
+ test('Renders with custom class name when className prop is provided', () => {
20
+ render(<CompassHero className="custom-class">Test</CompassHero>);
21
+ expect(screen.getByText('Test').parentElement).toHaveClass('custom-class');
22
+ });
23
+
24
+ test(`Renders with default ${styles.compassPanel} and ${styles.compassHero} classes on the hero and ${styles.compassHeroBody} class on the hero body`, () => {
25
+ render(<CompassHero>Test</CompassHero>);
26
+ const heroBodyElement = screen.getByText('Test');
27
+ expect(heroBodyElement).toHaveClass(styles.compassHeroBody);
28
+
29
+ const heroElement = heroBodyElement.parentElement;
30
+ expect(heroElement).toHaveClass(styles.compassPanel);
31
+ expect(heroElement).toHaveClass(styles.compassHero);
32
+ });
33
+
34
+ test('Renders with light background image style when backgroundSrcLight is provided', () => {
35
+ const backgroundSrc = 'light-bg.jpg';
36
+ render(<CompassHero backgroundSrcLight={backgroundSrc}>Test</CompassHero>);
37
+ expect(screen.getByText('Test').parentElement).toHaveStyle(
38
+ `--pf-v6-c-compass__hero--BackgroundImage--light: url(${backgroundSrc})`
39
+ );
40
+ });
41
+
42
+ test('Renders with dark background image style when backgroundSrcDark is provided', () => {
43
+ const backgroundSrc = 'dark-bg.jpg';
44
+ render(<CompassHero backgroundSrcDark={backgroundSrc}>Test</CompassHero>);
45
+ expect(screen.getByText('Test').parentElement).toHaveStyle(
46
+ `--pf-v6-c-compass__hero--BackgroundImage--dark: url(${backgroundSrc})`
47
+ );
48
+ });
49
+
50
+ test('Renders with both light and dark background image styles when both are provided', () => {
51
+ const lightSrc = 'light-bg.jpg';
52
+ const darkSrc = 'dark-bg.jpg';
53
+ render(
54
+ <CompassHero backgroundSrcLight={lightSrc} backgroundSrcDark={darkSrc}>
55
+ Test
56
+ </CompassHero>
57
+ );
58
+ const heroElement = screen.getByText('Test').parentElement;
59
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--BackgroundImage--light: url(${lightSrc})`);
60
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--BackgroundImage--dark: url(${darkSrc})`);
61
+ });
62
+
63
+ test('Renders with light gradient styles when gradientLight is provided', () => {
64
+ const gradient = {
65
+ stop1: '#ff0000',
66
+ stop2: '#00ff00',
67
+ stop3: '#0000ff'
68
+ };
69
+ render(<CompassHero gradientLight={gradient}>Test</CompassHero>);
70
+ const heroElement = screen.getByText('Test').parentElement;
71
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--light: ${gradient.stop1}`);
72
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-2--light: ${gradient.stop2}`);
73
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-3--light: ${gradient.stop3}`);
74
+ });
75
+
76
+ test('Renders with dark gradient styles when gradientDark is provided', () => {
77
+ const gradient = {
78
+ stop1: '#ff0000',
79
+ stop2: '#00ff00',
80
+ stop3: '#0000ff'
81
+ };
82
+ render(<CompassHero gradientDark={gradient}>Test</CompassHero>);
83
+ const heroElement = screen.getByText('Test').parentElement;
84
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--dark: ${gradient.stop1}`);
85
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-2--dark: ${gradient.stop2}`);
86
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-3--dark: ${gradient.stop3}`);
87
+ });
88
+
89
+ test('Renders with both light and dark gradient styles when both are provided', () => {
90
+ const lightGradient = {
91
+ stop1: '#ff0000',
92
+ stop2: '#00ff00',
93
+ stop3: '#0000ff'
94
+ };
95
+ const darkGradient = {
96
+ stop1: '#000000',
97
+ stop2: '#ffffff',
98
+ stop3: '#808080'
99
+ };
100
+ render(
101
+ <CompassHero gradientLight={lightGradient} gradientDark={darkGradient}>
102
+ Test
103
+ </CompassHero>
104
+ );
105
+ const heroElement = screen.getByText('Test').parentElement;
106
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--light: ${lightGradient.stop1}`);
107
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--dark: ${darkGradient.stop1}`);
108
+ });
109
+
110
+ test('Renders with both background images and gradient styles when both are provided', () => {
111
+ const lightSrc = 'light-bg.jpg';
112
+ const darkSrc = 'dark-bg.jpg';
113
+ const lightGradient = { stop1: '#ff0000' };
114
+ const darkGradient = { stop1: '#000000' };
115
+
116
+ render(
117
+ <CompassHero
118
+ backgroundSrcLight={lightSrc}
119
+ backgroundSrcDark={darkSrc}
120
+ gradientLight={lightGradient}
121
+ gradientDark={darkGradient}
122
+ >
123
+ Test
124
+ </CompassHero>
125
+ );
126
+ const heroElement = screen.getByText('Test').parentElement;
127
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--BackgroundImage--light: url(${lightSrc})`);
128
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--BackgroundImage--dark: url(${darkSrc})`);
129
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--light: ${lightGradient.stop1}`);
130
+ expect(heroElement).toHaveStyle(`--pf-v6-c-compass__hero--gradient--stop-1--dark: ${darkGradient.stop1}`);
131
+ });
132
+
133
+ test('Renders with additional props spread to the component', () => {
134
+ render(<CompassHero aria-label="Test label">Test</CompassHero>);
135
+ expect(screen.getByText('Test').parentElement).toHaveAccessibleName('Test label');
136
+ });
137
+
138
+ test('Matches the snapshot', () => {
139
+ const { asFragment } = render(
140
+ <CompassHero
141
+ backgroundSrcLight="light.jpg"
142
+ backgroundSrcDark="dark.jpg"
143
+ gradientLight={{ stop1: '#ff0000', stop2: '#00ff00', stop3: '#0000ff' }}
144
+ gradientDark={{ stop1: '#000000', stop2: '#ffffff', stop3: '#808080' }}
145
+ >
146
+ <div>Hero content</div>
147
+ </CompassHero>
148
+ );
149
+ expect(asFragment()).toMatchSnapshot();
150
+ });
@@ -0,0 +1,90 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassMainHeader } from '../CompassMainHeader';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders without children', () => {
6
+ render(
7
+ <div data-testid="test-main-header">
8
+ <CompassMainHeader />
9
+ </div>
10
+ );
11
+ expect(screen.getByTestId('test-main-header').firstChild).toBeVisible();
12
+ });
13
+
14
+ test('Renders with children', () => {
15
+ render(<CompassMainHeader>Custom content</CompassMainHeader>);
16
+ expect(screen.getByText('Custom content')).toBeVisible();
17
+ });
18
+
19
+ test('Renders with custom class name when className prop is provided', () => {
20
+ render(<CompassMainHeader className="custom-class">Test</CompassMainHeader>);
21
+ expect(screen.getByText('Test')).toHaveClass('custom-class');
22
+ });
23
+
24
+ test(`Renders with default ${styles.compass}__main-header class`, () => {
25
+ render(<CompassMainHeader>Test</CompassMainHeader>);
26
+ expect(screen.getByText('Test')).toHaveClass(`${styles.compass}__main-header`);
27
+ });
28
+
29
+ test('Renders title when provided', () => {
30
+ render(<CompassMainHeader title={<div>Title content</div>}>Test</CompassMainHeader>);
31
+ expect(screen.getByText('Title content')).toBeVisible();
32
+ });
33
+
34
+ test('Renders toolbar when provided', () => {
35
+ render(<CompassMainHeader toolbar={<div>Toolbar content</div>}>Test</CompassMainHeader>);
36
+ expect(screen.getByText('Toolbar content')).toBeVisible();
37
+ });
38
+
39
+ test('Renders both title and toolbar when provided', () => {
40
+ render(
41
+ <CompassMainHeader title={<div>Title</div>} toolbar={<div>Toolbar</div>}>
42
+ Test
43
+ </CompassMainHeader>
44
+ );
45
+ expect(screen.getByText('Title')).toBeVisible();
46
+ expect(screen.getByText('Toolbar')).toBeVisible();
47
+ });
48
+
49
+ test('Ignores children when title is provided', () => {
50
+ render(<CompassMainHeader title={<div>Title</div>}>Ignored children</CompassMainHeader>);
51
+ expect(screen.getByText('Title')).toBeVisible();
52
+ expect(screen.queryByText('Ignored children')).not.toBeInTheDocument();
53
+ });
54
+
55
+ test('Ignores children when toolbar is provided', () => {
56
+ render(<CompassMainHeader toolbar={<div>Toolbar</div>}>Ignored children</CompassMainHeader>);
57
+ expect(screen.getByText('Toolbar')).toBeVisible();
58
+ expect(screen.queryByText('Ignored children')).not.toBeInTheDocument();
59
+ });
60
+
61
+ test('Ignores children when both title and toolbar are provided', () => {
62
+ render(
63
+ <CompassMainHeader title={<div>Title</div>} toolbar={<div>Toolbar</div>}>
64
+ Ignored children
65
+ </CompassMainHeader>
66
+ );
67
+ expect(screen.getByText('Title')).toBeVisible();
68
+ expect(screen.getByText('Toolbar')).toBeVisible();
69
+ expect(screen.queryByText('Ignored children')).not.toBeInTheDocument();
70
+ });
71
+
72
+ test('Renders children when neither title nor toolbar are provided', () => {
73
+ render(<CompassMainHeader>Custom children content</CompassMainHeader>);
74
+ expect(screen.getByText('Custom children content')).toBeVisible();
75
+ });
76
+
77
+ test('Renders with additional props spread to the component', () => {
78
+ render(<CompassMainHeader aria-label="Test label">Test</CompassMainHeader>);
79
+ expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
80
+ });
81
+
82
+ test('Matches the snapshot with both title and toolbar', () => {
83
+ const { asFragment } = render(<CompassMainHeader title={<div>Title</div>} toolbar={<div>Toolbar</div>} />);
84
+ expect(asFragment()).toMatchSnapshot();
85
+ });
86
+
87
+ test('Matches the snapshot with children', () => {
88
+ const { asFragment } = render(<CompassMainHeader>Custom children content</CompassMainHeader>);
89
+ expect(asFragment()).toMatchSnapshot();
90
+ });
@@ -0,0 +1,41 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassMessageBar } from '../CompassMessageBar';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders without children', () => {
6
+ render(
7
+ <div data-testid="test-message-bar">
8
+ <CompassMessageBar />
9
+ </div>
10
+ );
11
+ expect(screen.getByTestId('test-message-bar').firstChild).toBeVisible();
12
+ });
13
+
14
+ test('Renders with children', () => {
15
+ render(<CompassMessageBar>Test content</CompassMessageBar>);
16
+ expect(screen.getByText('Test content')).toBeVisible();
17
+ });
18
+
19
+ test('Renders with custom class name when className prop is provided', () => {
20
+ render(<CompassMessageBar className="custom-class">Test</CompassMessageBar>);
21
+ expect(screen.getByText('Test')).toHaveClass('custom-class');
22
+ });
23
+
24
+ test(`Renders with default ${styles.compassMessageBar} class`, () => {
25
+ render(<CompassMessageBar>Test</CompassMessageBar>);
26
+ expect(screen.getByText('Test')).toHaveClass(styles.compassMessageBar);
27
+ });
28
+
29
+ test('Renders with additional props spread to the component', () => {
30
+ render(<CompassMessageBar aria-label="Test label">Test</CompassMessageBar>);
31
+ expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
32
+ });
33
+
34
+ test('Matches the snapshot', () => {
35
+ const { asFragment } = render(
36
+ <CompassMessageBar>
37
+ <div>Message bar content</div>
38
+ </CompassMessageBar>
39
+ );
40
+ expect(asFragment()).toMatchSnapshot();
41
+ });
@@ -0,0 +1,86 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import { CompassPanel } from '../CompassPanel';
3
+ import styles from '@patternfly/react-styles/css/components/Compass/compass';
4
+
5
+ test('Renders with children', () => {
6
+ render(<CompassPanel>Test content</CompassPanel>);
7
+ expect(screen.getByText('Test content')).toBeVisible();
8
+ });
9
+
10
+ test('Renders with custom class name when className prop is provided', () => {
11
+ render(<CompassPanel className="custom-class">Test</CompassPanel>);
12
+ expect(screen.getByText('Test')).toHaveClass('custom-class');
13
+ });
14
+
15
+ test(`Renders with default ${styles.compassPanel} class`, () => {
16
+ render(<CompassPanel>Test</CompassPanel>);
17
+ expect(screen.getByText('Test')).toHaveClass(styles.compassPanel);
18
+ });
19
+
20
+ test(`Renders with ${styles.modifiers.pill} when isPill is true`, () => {
21
+ render(<CompassPanel isPill>Test</CompassPanel>);
22
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.pill);
23
+ });
24
+
25
+ test(`Renders with ${styles.modifiers.noBorder} when hasNoBorder is true`, () => {
26
+ render(<CompassPanel hasNoBorder>Test</CompassPanel>);
27
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.noBorder);
28
+ });
29
+
30
+ test(`Renders with ${styles.modifiers.noPadding} when hasNoPadding is true`, () => {
31
+ render(<CompassPanel hasNoPadding>Test</CompassPanel>);
32
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.noPadding);
33
+ });
34
+
35
+ test('Renders with pf-v6-m-thinking when isThinking is true', () => {
36
+ render(<CompassPanel isThinking>Test</CompassPanel>);
37
+ expect(screen.getByText('Test')).toHaveClass('pf-v6-m-thinking');
38
+ });
39
+
40
+ test(`Renders with ${styles.modifiers.fullHeight} when isFullHeight is true`, () => {
41
+ render(<CompassPanel isFullHeight>Test</CompassPanel>);
42
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.fullHeight);
43
+ });
44
+
45
+ test(`Renders with ${styles.modifiers.scrollable} when isScrollable is true`, () => {
46
+ render(<CompassPanel isScrollable>Test</CompassPanel>);
47
+ expect(screen.getByText('Test')).toHaveClass(styles.modifiers.scrollable);
48
+ });
49
+
50
+ test('Renders with multiple modifier classes when multiple props are true', () => {
51
+ render(
52
+ <CompassPanel isPill hasNoBorder hasNoPadding isThinking isFullHeight isScrollable>
53
+ Test
54
+ </CompassPanel>
55
+ );
56
+ const panelElement = screen.getByText('Test');
57
+ expect(panelElement).toHaveClass(styles.modifiers.pill);
58
+ expect(panelElement).toHaveClass(styles.modifiers.noBorder);
59
+ expect(panelElement).toHaveClass(styles.modifiers.noPadding);
60
+ expect(panelElement).toHaveClass('pf-v6-m-thinking');
61
+ expect(panelElement).toHaveClass(styles.modifiers.fullHeight);
62
+ expect(panelElement).toHaveClass(styles.modifiers.scrollable);
63
+ });
64
+
65
+ test('Renders with additional props spread to the component', () => {
66
+ render(<CompassPanel aria-label="Test label">Test</CompassPanel>);
67
+ expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
68
+ });
69
+
70
+ test('Matches the snapshot with all modifiers', () => {
71
+ const { asFragment } = render(
72
+ <CompassPanel isPill hasNoBorder hasNoPadding isThinking isFullHeight isScrollable>
73
+ <div>Panel with all modifiers</div>
74
+ </CompassPanel>
75
+ );
76
+ expect(asFragment()).toMatchSnapshot();
77
+ });
78
+
79
+ test('Matches the snapshot with no modifiers', () => {
80
+ const { asFragment } = render(
81
+ <CompassPanel>
82
+ <div>Basic panel</div>
83
+ </CompassPanel>
84
+ );
85
+ expect(asFragment()).toMatchSnapshot();
86
+ });