diff --git a/src/components/user/theme-picker.cy.tsx b/src/components/user/theme-picker.cy.tsx new file mode 100644 index 0000000..23dc01b --- /dev/null +++ b/src/components/user/theme-picker.cy.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { ThemePicker } from '@/components/user/theme-picker'; +import { ThemeProvider } from '../theme-provider'; + +describe('', () => { + it('renders', () => { + cy.mount(); + }); + + it('toggle open and close', () => { + cy.mount(); + cy.getBySel('theme-picker').click(); + cy.getBySel('theme-picker-content').should('exist'); + cy.get('html').click(); + cy.getBySel('theme-picker-content').should('not.exist'); + }); + + it('enable dark mode', () => { + cy.mount( + + + , + ); + + cy.getBySel('theme-picker').click(); + cy.getBySel('dark-theme').click(); + cy.get('html').should('have.attr', 'data-theme', 'dark'); + }); + + it('enable light mode', () => { + cy.mount( + + + , + ); + + cy.getBySel('theme-picker').click(); + cy.getBySel('light-theme').click(); + cy.get('html').should('have.attr', 'data-theme', 'light'); + }); +}); diff --git a/src/components/user/theme-picker.tsx b/src/components/user/theme-picker.tsx index 5341c3c..3ceca4c 100644 --- a/src/components/user/theme-picker.tsx +++ b/src/components/user/theme-picker.tsx @@ -18,20 +18,26 @@ export function ThemePicker() { return ( - - - setTheme('light')}> + + setTheme('light')} + data-cy='light-theme' + > Light - setTheme('dark')}> + setTheme('dark')} data-cy='dark-theme'> Dark - setTheme('system')}> + setTheme('system')} + data-cy='system-theme' + > System