a11y.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { minimum } from '../data/html';
  2. import Splide from '../../src/js/splide';
  3. import { sprintf } from '../../src/js/utils/utils';
  4. import { COMPLETE } from '../../src/js/components';
  5. describe( 'The A11y', () => {
  6. beforeEach( () => {
  7. document.body.innerHTML = minimum;
  8. } );
  9. test( 'should update aria labels of arrows properly.', done => {
  10. const splide = new Splide( '#splide', { arrows: true, rewind: true }, COMPLETE );
  11. splide.mount();
  12. const Arrows = splide.Components.Arrows;
  13. const i18n = splide.i18n;
  14. const prev = Arrows.arrows.prev;
  15. const next = Arrows.arrows.next;
  16. expect( prev.getAttribute( 'aria-label' ) ).toBe( i18n.last );
  17. expect( next.getAttribute( 'aria-label' ) ).toBe( i18n.next );
  18. splide.on( 'moved', () => {
  19. expect( prev.getAttribute( 'aria-label' ) ).toBe( i18n.prev );
  20. expect( next.getAttribute( 'aria-label' ) ).toBe( i18n.first );
  21. done();
  22. } );
  23. splide.go( splide.length - 1 );
  24. } );
  25. describe( 'should initialize aria labels of pagination properly', () => {
  26. function confirm( splide, labelFormat ) {
  27. const items = splide.Components.Pagination.data.items;
  28. items.forEach( ( { button, page } ) => {
  29. const label = sprintf( labelFormat, page + 1 );
  30. expect( button.getAttribute( 'aria-label' ) ).toBe( label );
  31. } );
  32. }
  33. test( 'with "go to slide X" when perPage is 1.', () => {
  34. const splide = new Splide( '#splide', { pagination: true }, COMPLETE );
  35. splide.mount();
  36. confirm( splide, splide.i18n.slideX );
  37. } );
  38. test( 'with "go to page X" when perPage is not 1.', () => {
  39. const splide = new Splide( '#splide', { pagination: true, perPage: 2 }, COMPLETE );
  40. splide.mount();
  41. confirm( splide, splide.i18n.pageX );
  42. } );
  43. } );
  44. test( 'should add tabindex to slides when slideFocus is true.', () => {
  45. const splide = new Splide( '#splide', {}, COMPLETE );
  46. splide.mount();
  47. expect( splide.Components.Elements.slides[0].getAttribute( 'tabindex' ) ).toBe( '0' );
  48. } );
  49. test( 'should not add tabindex to slides when slideFocus is false.', () => {
  50. const splide = new Splide( '#splide', { slideFocus: false }, COMPLETE );
  51. splide.mount();
  52. expect( splide.Components.Elements.slides[0].getAttribute( 'tabindex' ) ).toBeNull();
  53. } );
  54. } );