import '@testing-library/jest-dom' import { fireEvent, render, screen } from '@testing-library/react' import { axe, toHaveNoViolations } from 'jest-axe' import { PktTextarea } from './Textarea' expect.extend(toHaveNoViolations) describe('PktTextarea', () => { test('renders input field with correct props', async () => { const { getByLabelText } = render() const inputElement = getByLabelText('Input Label') expect(inputElement).toBeInTheDocument() expect(inputElement.tagName).toBe('TEXTAREA') expect(inputElement.id).toBe('inputId-input') }) test('renders error message when hasError prop is true', async () => { render() const errorMessageId = 'inputId-input-error' // når https://github.com/oslokommune/punkt/issues/3093 er fiksa: screen.getByRole('textbox').getAttribute('aria-errormessage') const alertContainer = screen.getByRole('alert') expect(alertContainer).toHaveAttribute('id', errorMessageId) expect(alertContainer).toHaveTextContent('Input error') }) describe('PktTextarea', () => { test('toggles helptext class', async () => { const { getByText, container } = render( , ) const expandButton = getByText('Les mer').closest('button') as HTMLButtonElement const helptextElement = container.querySelector('.pkt-inputwrapper__helptext-expandable-closed') await fireEvent.click(expandButton) expect(helptextElement).toHaveClass('pkt-inputwrapper__helptext-expandable-open') await fireEvent.click(expandButton) expect(helptextElement).toHaveClass('pkt-inputwrapper__helptext-expandable-closed') }) }) describe('accessibility', () => { it('renders with no wcag errors with axe', async () => { const { container } = render() await window.customElements.whenDefined('pkt-textarea') const results = await axe(container) expect(results).toHaveNoViolations() }) }) })