Как протестировать стили css при изменении размера окна?

#css #jestjs #react-testing-library

#css #jestjs #реагировать-тестирование-библиотека

Вопрос:

Я пытаюсь протестировать границу, которая будет иметь display:none место при изменении размера окна. Для этой цели я использую jest и react-testing-library.

У меня есть эти простые правила css для моего класса border

 .built-with .border{
  position: absolute;
  justify-self: center;
  height: 50%;
  border-left: 1px solid black;
  opacity: 0.5;
}
@media (max-width: 590px){
  .built-with .border{
    display: none;
  }
}
 

Я пытаюсь утверждать, что когда window.innerWidth значение меньше 500, тогда .border display должно быть none.
Вот что я пытаюсь сделать:

 import {render} from '@testing-library/react';
it("should have styles on different viewports", () => {
        const { container } = render(<Footer />);
        const border = container.querySelector('.border');

        const style1 = window.getComputedStyle(border);
        window = { ...window, innerWidth: 500, innerHeight: 700 };

        console.log(window.innerWidth); // 500

        const style2 = window.getComputedStyle(border);

        expect(style1.display).not.toMatch(style2.display); 
        /*expected - to not match
          during test - it matches
        */
    });
 

Здесь : style1 имеет значение по умолчанию window.innerWidth 1024 и style2 имеет window.innerWidth

Ответ №1:

Кажется, что таблицы стилей не отображаются в jsDOM .

Кент (автор библиотеки тестирования) обсудил эту проблему здесь

Вот почему для тестирования стилей CSS необходима настоящая браузерная среда. Тестирование стилей css во время сквозных тестов может быть наилучшим возможным способом.

Однако есть несколько способов протестировать библиотеки css-in-js или стилизованные компоненты.