@@ -11,6 +11,7 @@ import { NAVIGATION_MENU_SELECTABLE_ITEM_HIDDEN_TEXT } from "../../src/generated
1111import Title from "@ui5/webcomponents/dist/Title.js" ;
1212import Label from "@ui5/webcomponents/dist/Label.js" ;
1313import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js" ;
14+ import Tag from "@ui5/webcomponents/dist/Tag.js" ;
1415
1516describe ( "Side Navigation Rendering" , ( ) => {
1617 it ( "Tests rendering in collapsed mode" , ( ) => {
@@ -1225,9 +1226,18 @@ describe("Side Navigation Accessibility", () => {
12251226 . should ( "not.have.attr" , "aria-describedby" ) ;
12261227
12271228 cy . get ( "#item2" )
1228- . shadow ( )
1229- . find ( ".ui5-sn-item" )
1230- . should ( "have.attr" , "aria-describedby" , "To navigate to navigation item 2, press Spacebar or Enter." ) ;
1229+ . should ( "have.prop" , "__id" )
1230+ . then ( ( itemId ) => {
1231+ cy . get ( "#item2" )
1232+ . shadow ( )
1233+ . find ( ".ui5-sn-item" )
1234+ . should ( "have.attr" , "aria-describedby" , `${ itemId } -selectable-description` ) ;
1235+
1236+ cy . get ( "#item2" )
1237+ . shadow ( )
1238+ . find ( `#${ itemId } -selectable-description` )
1239+ . should ( "have.text" , "To navigate to navigation item 2, press Spacebar or Enter." ) ;
1240+ } ) ;
12311241
12321242 cy . get ( "#item1" )
12331243 . shadow ( )
@@ -1723,4 +1733,117 @@ describe("Focusable items", () => {
17231733 . find ( "ul.ui5-sn-item-ul[role='group']" )
17241734 . should ( "have.attr" , "aria-label" , "Products" ) ;
17251735 } ) ;
1736+
1737+ it ( "Tests SideNavigationItem with tag renders correctly" , ( ) => {
1738+ cy . mount (
1739+ < SideNavigation >
1740+ < SideNavigationItem id = "item1" text = "Without Tag" />
1741+ < SideNavigationItem id = "item2" text = "With Tag" >
1742+ < Tag slot = "tag" design = "Set2" colorScheme = "6" hideStateIcon > New</ Tag >
1743+ </ SideNavigationItem >
1744+ </ SideNavigation >
1745+ ) ;
1746+
1747+ cy . get ( "#item1" )
1748+ . shadow ( )
1749+ . find ( ".ui5-sn-item-tag-slot" )
1750+ . should ( "not.exist" ) ;
1751+
1752+ cy . get ( "#item2" )
1753+ . find ( "[ui5-tag]" )
1754+ . should ( "exist" )
1755+ . should ( "have.text" , "New" ) ;
1756+
1757+ cy . get ( "#item2" )
1758+ . shadow ( )
1759+ . find ( ".ui5-sn-item-tag-slot" )
1760+ . should ( "exist" ) ;
1761+ } ) ;
1762+
1763+ it ( "Tests SideNavigationItem tag accessibility" , ( ) => {
1764+ cy . mount (
1765+ < SideNavigation >
1766+ < SideNavigationItem id = "item1" text = "Item" >
1767+ < Tag slot = "tag" design = "Set2" colorScheme = "6" hideStateIcon > New</ Tag >
1768+ </ SideNavigationItem >
1769+ </ SideNavigation >
1770+ ) ;
1771+
1772+ cy . get ( "#item1" )
1773+ . should ( "have.prop" , "__id" )
1774+ . then ( ( itemId ) => {
1775+ cy . get ( "#item1" )
1776+ . shadow ( )
1777+ . find ( ".ui5-sn-item" )
1778+ . should ( "have.attr" , "aria-describedby" , `${ itemId } -tag` ) ;
1779+ } ) ;
1780+ } ) ;
1781+
1782+ it ( "Tests SideNavigationItem tag with subitems has both tag and description" , ( ) => {
1783+ cy . mount (
1784+ < SideNavigation >
1785+ < SideNavigationItem id = "item1" text = "Parent" expanded >
1786+ < Tag slot = "tag" design = "Set2" colorScheme = "8" hideStateIcon > Beta</ Tag >
1787+ < SideNavigationSubItem text = "Child" />
1788+ </ SideNavigationItem >
1789+ </ SideNavigation >
1790+ ) ;
1791+
1792+ cy . get ( "#item1" )
1793+ . should ( "have.prop" , "__id" )
1794+ . then ( ( itemId ) => {
1795+ cy . get ( "#item1" )
1796+ . shadow ( )
1797+ . find ( ".ui5-sn-item" )
1798+ . invoke ( "attr" , "aria-describedby" )
1799+ . should ( "contain" , `${ itemId } -tag` )
1800+ . should ( "contain" , `${ itemId } -selectable-description` ) ;
1801+ } ) ;
1802+ } ) ;
1803+
1804+ it ( "Tests SideNavigationSubItem with tag" , ( ) => {
1805+ cy . mount (
1806+ < SideNavigation >
1807+ < SideNavigationItem text = "Parent" expanded >
1808+ < SideNavigationSubItem id = "subItem1" text = "SubItem" >
1809+ < Tag slot = "tag" design = "Set2" colorScheme = "5" hideStateIcon > Dev</ Tag >
1810+ </ SideNavigationSubItem >
1811+ </ SideNavigationItem >
1812+ </ SideNavigation >
1813+ ) ;
1814+
1815+ cy . get ( "#subItem1" )
1816+ . find ( "[ui5-tag]" )
1817+ . should ( "exist" )
1818+ . should ( "have.text" , "Dev" ) ;
1819+
1820+ cy . get ( "#subItem1" )
1821+ . should ( "have.prop" , "__id" )
1822+ . then ( ( itemId ) => {
1823+ cy . get ( "#subItem1" )
1824+ . shadow ( )
1825+ . find ( ".ui5-sn-item" )
1826+ . should ( "have.attr" , "aria-describedby" , `${ itemId } -tag` ) ;
1827+ } ) ;
1828+ } ) ;
1829+
1830+ it ( "Tests tag in collapsed mode popover" , ( ) => {
1831+ cy . mount (
1832+ < SideNavigation id = "sideNav" collapsed >
1833+ < SideNavigationItem id = "item1" text = "Item" icon = "home" >
1834+ < Tag slot = "tag" design = "Set2" colorScheme = "6" hideStateIcon > New</ Tag >
1835+ < SideNavigationSubItem text = "SubItem" />
1836+ </ SideNavigationItem >
1837+ </ SideNavigation >
1838+ ) ;
1839+
1840+ cy . get ( "#item1" ) . realClick ( ) ;
1841+
1842+ cy . get ( "#sideNav" )
1843+ . shadow ( )
1844+ . find ( "[ui5-responsive-popover] [ui5-side-navigation-item]" )
1845+ . find ( "[ui5-tag]" )
1846+ . should ( "exist" )
1847+ . should ( "have.text" , "New" ) ;
1848+ } ) ;
17261849} ) ;
0 commit comments