Okej, to nie jest sensowna porada poparta doświadczeniem, to jest luźny pomysł, który wysnułem na podsatwie doświadczenia w innych dziedzinach wytwarzania oprogramowania.
Jakby nie patrzeć, CSS/layout to nie jest język programowania, więć nie specjalnie masz go jak przetestować - to trochę tak jakbyś chciał testować config webpacka. CSS jest wynikiem sam w sobie (tak, ludzie o tym myślą jak o programowaniu, bo pisze się kodem, ale to nie jest język programowania). Jak popatrzysz na to ogólnym okiem, to dostrzerzesz że CSS to tak naprawdę zbiór deklaracji, niektóre z nich są skomplikowane, niektóre wymagają zmiany dla różnych rozdzielczości, etc. A wiemy że wizualna regresja to zły pomysł, ponieważ nie zwraca uwagi na żadne konkretne rzeczy (jak unit testy) - tylko jest albo tak, albo tak.
Moim zdaniem, jedynym sensownym rozwiazaniem, dla kogoś kto przejmuje się utrzymywalnością layout'ów, to żeby uprościć CSS w jego implementacji - zdeklaratyzować go jeszcze bardziej (mniej więcej jak bootstrap/flex
zdeklaratyzował float'y). Np, jeśli tworzysz apkę w progresywnych frameworkach (ng, react, vue), to możesz robić komponenty odpowiedzialne tylko za layout - najlepiej z małą ilością parametrów. I nie mam na myśli NavBar
, Header
, Footer
, bo one są zbyt związane z domeną biznesową.
Mam na myśli np CollapsibleDiv
, albo DesktopContainer
/MobileContainer
, ButtonWideOnMobile
, MarginNoSmallerThan
, CssBaseLine
, etc. Np. taki Carousel
wszystkie CSS z absolutami i kręceniem jest schowane w komponencie, i nie trzeba ich testować osobno. Ich jedyną. odpowiedzialnością byłoby budowanie latoutu, (tego o który chcesz dbać). Zawsze tam gdzie chciałbyś zbudować layout CSS'ami, używasz tych komponentów. Jeśli nie ma takiego którego chciałbyś użyć - tworzysz go. Takie poszczególne komponenty możesz unit testować np karmą/jest, a zbudowane z nich aplikacje nie będą wymagały testowania (wydaje mi się), bo i tak będą zbyt wysokopoziomowe na takie testy. Coś podnego robi np material-ui
do React'a, ze swoimi GridBlock
, Box
, etc.
Ale again, to jest tylko sugestia, z mózgu, nie poparta niczym. Tylko moim osądem.