Skip to content

Latest commit

 

History

History
49 lines (38 loc) · 2.99 KB

TESTING.md

File metadata and controls

49 lines (38 loc) · 2.99 KB

Мы используем три вида тестов:

Юнит-тесты на jest в файлах moduleName.test.ts пример

Компонентные тесты на jest + react-testing-library + jest-dom в ComponentName.test.tsx пример

Скриншотные тесты на jest + playwright + jest-playwright в ComponentName.e2e.tsx пример.

Чтобы запускать скриншотные тесты локально, нужно установить:

  • git-lfs — чтобы от эталонных скриншотов не раздувало репозиторий
  • докер — чтобы платформа не влияла на рендеринг шрифтов. На линуксе докер не нужен.

Команды

  • yarn test:unit — только быстрые юниты + компонентные;
  • yarn test:unit:quick — только юниты + компонентные тесты на незакоммиченные изменения;
  • yarn test:e2e — только браузерные тесты;
  • yarn test:code — все тесты.

Все команды работают в интерактивном режиме с опцией --watch (yarn test:unit --watch).

Чтобы обновить скриншоты, установите докер и git-lfs и запустите yarn test:e2e -u.

describeScreenshotFuzz

Функция describeScreenshotFuzz из /testing/utils помогает быстро заскриншотить все состояния компонента в разных темах и на разных платформах:

describe('Button', () => {
  describeScreenshotFuzz(
    // Можем передать компонент или вот так добавить дефолтные пропы для скриншотов
    (props: ButtonProps) => <Button {...props}>Кнопка</Button>,
    // Описание комбинаций пропов — по элементу массива на независимый набор
    [
      // mode и disabled влияют на цвет, но не на размер
      { mode: ['primary', 'secondary'], disabled: [undefined, true] },
      // size влияет на размер, но не на цвет
      { size: ['s', 'm', 'l'] }
    ]);
    // всего 2 * 2 + 3 = 7 состояний:
    // mode="primary"
    // mode="primary" disabled
    // mode="secondary"
    // mode="secondary" disabled
    // size="s"
    // size="m"
    // size="l"
});