2016-10-16 64 views
6

Web paketi ile birlikte gelen bir React + Redux web oluşturdum. Paketleme hatasından dolayı, web sitem FUOC davranışını göstermeye başladı (bazı bileşenler CSS'yi sunucu yanıtına enjekte etmediler, bu nedenle son CSS yüklenmeden önce uygulamanın uygulama dışı bölümlerinde bir "flaş" oluştu). Diğer hatalar, üçüncü parti bileşenler için FUOC'u (yapılması gereken manuel iş için gerekli) içeriyordu.Webpack paketli web sitemi FUOC'a karşı otomatik olarak nasıl test edilir?

Web sitemin ve farklı bölümlerinin otomatik testini yaptım. Fakat FOUC'u nasıl otomatik olarak test ederim (node.js toolchain'imle)? Selenyum ve phantomjileri öğrendim, ama bu bir aşırı sıkıcı gibi görünüyor ve hala nasıl algılayabileceğimi bilmiyorum.

+0

Hata neydi? Çözmeyi denediniz mi? – Thaadikkaaran

+0

@JaganathanBantheswaran hiçbir hata, Ben sadece makul bir yaklaşım hakkında emin değilim. Buna ek olarak, bir bütün (başsız) tarayıcıyı çalıştırmadan "kolay" ve "hafif" bir çözümü tercih ederim, bunun yerine basit JS tabanlı testler tercih ediyorum. – muffel

+0

Web paketi yapılandırmanızı paylaşın – Thaadikkaaran

cevap

0

FOUC'lu kaplama elemanlarını uygulayarak FOUC'u önlerim, sadece CSS'si dolu olduğunda görünürler. Bunu basitleştirmek için tüm vücuda uygularım. Örneğin:

Sonra
body { 
    opacity: 0; 
} 

, daha sonra CCS dosyasında veya yüklenen bazı bileşenle ...

body { 
    opacity:1; 
} 

Bu etkin hala çekiliyor yaparken elemanları sırasında zaman işlemek gizler. Bundan geriye doğru çalışarak, görünürlüğün veya öğenin görünür hale gelmesinden önce yüklenmesi gereken diğer CSS özelliklerinin test edilmesi için eleman/bileşeniniz için CSS'nin yüklenmesinden önce çalışacak bir birim testi oluşturabilirsiniz. Hile, bu testlerin, elemanın işlenişinin her aşamasında uygun zamanda yürütüldüğünden emin olmaktır.

// Test for FOUC load component then verify for no visiblity ...  
expect($('#testElement').is(':visible')).toBe(false) 

/** 
* load component/elemnt css here then ... 
*/ 

// then test for visibility or other css properties ... 
expect($('#testElement').is(':visible')).toBe(true)