Dowiedz si臋, jak zintegrowa膰 Lighthouse CI z procesem deweloperskim w celu automatycznego testowania wydajno艣ci frontendu. Popraw szybko艣膰, dost臋pno艣膰 i SEO strony z ka偶dym commitem.
Testowanie wydajno艣ci frontendu: Integracja Lighthouse CI w celu ci膮g艂ego doskonalenia
W dzisiejszym cyfrowym 艣wiecie wydajno艣膰 strony internetowej jest najwa偶niejsza. Wolne czasy 艂adowania, problemy z dost臋pno艣ci膮 i s艂abe SEO mog膮 znacz膮co wp艂yn膮膰 na do艣wiadczenie u偶ytkownika, a w konsekwencji na wyniki biznesowe. Testowanie wydajno艣ci frontendu sta艂o si臋 istotn膮 cz臋艣ci膮 nowoczesnego cyklu 偶ycia oprogramowania, zapewniaj膮c, 偶e strony i aplikacje internetowe s膮 szybkie, niezawodne i przyjazne dla u偶ytkownik贸w na ca艂ym 艣wiecie. W tym artykule om贸wimy integracj臋 Lighthouse CI, pot臋偶nego narz臋dzia open-source, z potokiem ci膮g艂ej integracji (CI) w celu zautomatyzowania testowania wydajno艣ci frontendu i nap臋dzania ci膮g艂ego doskonalenia.
Dlaczego testowanie wydajno艣ci frontendu jest wa偶ne?
Zanim zag艂臋bimy si臋 w Lighthouse CI, zrozummy, dlaczego testowanie wydajno艣ci frontendu jest kluczowe:
- Do艣wiadczenie u偶ytkownika: Szybka i responsywna strona internetowa zapewnia lepsze wra偶enia u偶ytkownika, co prowadzi do wi臋kszego zaanga偶owania i ni偶szych wska藕nik贸w odrzuce艅. Wyobra藕 sobie potencjalnego klienta w Tokio, w Japonii, pr贸buj膮cego kupi膰 produkt na wolno 艂aduj膮cej si臋 stronie e-commerce. Prawdopodobnie porzuci on stron臋 i poszuka alternatyw.
- Ranking SEO: Wyszukiwarki takie jak Google bior膮 pod uwag臋 szybko艣膰 i wydajno艣膰 strony jako czynniki rankingowe. Szybsze strony maj膮 tendencj臋 do zajmowania wy偶szych pozycji w wynikach wyszukiwania, co przyci膮ga wi臋cej ruchu organicznego. Inicjatywa Google Core Web Vitals podkre艣la znaczenie takich czynnik贸w jak Largest Contentful Paint (LCP), First Input Delay (FID) i Cumulative Layout Shift (CLS) dla SEO.
- Dost臋pno艣膰: Poprawa wydajno艣ci cz臋sto prowadzi do lepszej dost臋pno艣ci dla u偶ytkownik贸w z niepe艂nosprawno艣ciami. Zoptymalizowany kod i obrazy mog膮 poprawi膰 do艣wiadczenie u偶ytkownik贸w korzystaj膮cych z czytnik贸w ekranu lub tych z ograniczon膮 przepustowo艣ci膮.
- Wsp贸艂czynniki konwersji: Szybsza strona internetowa mo偶e bezpo艣rednio wp艂ywa膰 na wsp贸艂czynniki konwersji. Badania wykaza艂y, 偶e nawet jednosekundowe op贸藕nienie w czasie 艂adowania strony mo偶e prowadzi膰 do znacznego spadku konwersji. Pomy艣l o u偶ytkowniku w Mumbaju, w Indiach, pr贸buj膮cym zarezerwowa膰 lot. Wolny proces rezerwacji mo偶e spowodowa膰, 偶e porzuci on zakup i wybierze konkurencj臋.
- Optymalizacja zasob贸w: Testowanie wydajno艣ci pomaga zidentyfikowa膰 obszary, w kt贸rych zasoby mog膮 by膰 zoptymalizowane, co prowadzi do oszcz臋dno艣ci koszt贸w w zakresie infrastruktury serwerowej i zu偶ycia przepustowo艣ci.
Wprowadzenie do Lighthouse CI
Lighthouse CI to zautomatyzowane narz臋dzie open-source, zaprojektowane do bezproblemowej integracji z Twoim potokiem CI/CD. Uruchamia ono Lighthouse, popularne narz臋dzie audytowe opracowane przez Google, i dostarcza wgl膮du w wydajno艣膰, dost臋pno艣膰, SEO, najlepsze praktyki i zgodno艣膰 z Progressive Web App (PWA) Twojej strony internetowej. Lighthouse CI pomaga:
- Automatyzacja audyt贸w wydajno艣ci: Uruchamiaj audyty Lighthouse automatycznie z ka偶dym commitem lub pull requestem.
- 艢ledzenie wydajno艣ci w czasie: Monitoruj metryki wydajno艣ci w czasie i wcze艣nie wykrywaj regresje.
- Ustawianie bud偶et贸w wydajno艣ci: Definiuj bud偶ety wydajno艣ci i powoduj niepowodzenie kompilacji, je艣li zostan膮 przekroczone.
- Integracja z systemami CI/CD: Integruj z popularnymi systemami CI/CD, takimi jak GitHub Actions, GitLab CI, CircleCI i Jenkins.
- Wsp贸艂praca nad problemami z wydajno艣ci膮: Udost臋pniaj raporty Lighthouse i wsp贸艂pracuj z zespo艂em w celu rozwi膮zywania problem贸w z wydajno艣ci膮.
Konfiguracja Lighthouse CI
Oto przewodnik krok po kroku, jak skonfigurowa膰 Lighthouse CI w Twoim projekcie:
1. Instalacja Lighthouse CI
Zainstaluj Lighthouse CI CLI globalnie u偶ywaj膮c npm lub yarn:
npm install -g @lhci/cli
yarn global add @lhci/cli
2. Konfiguracja Lighthouse CI
Utw贸rz plik lighthouserc.js w g艂贸wnym katalogu projektu, aby skonfigurowa膰 Lighthouse CI. Oto przyk艂adowa konfiguracja:
module.exports = {
ci:
{
collect:
{
url: ['http://localhost:3000', 'http://localhost:3000/about'],
startServerCommand: 'npm start',
numberOfRuns: 3,
},
assert:
{
assertions:
{
'categories:performance': ['warn', { minScore: 0.9 }],
'categories:accessibility': ['error', { minScore: 1 }],
'categories:best-practices': ['warn', { minScore: 0.9 }],
'categories:seo': ['warn', { minScore: 0.9 }],
'categories:pwa': ['off'],
'first-contentful-paint': ['warn', { maxNumericValue: 2500 }],
'largest-contentful-paint': ['warn', { maxNumericValue: 4000 }],
'total-blocking-time': ['warn', { maxNumericValue: 200 }],
'cumulative-layout-shift': ['warn', { maxNumericValue: 0.1 }],
},
},
upload:
{
target: 'temporary-redirect',
},
},
};
Przeanalizujmy t臋 konfiguracj臋:
collect.url: Tablica adres贸w URL do audytu. Ten przyk艂ad audytuje stron臋 g艂贸wn膮 i stron臋 'o nas'. Powiniene艣 uwzgl臋dni膰 wszystkie krytyczne strony swojej witryny, bior膮c pod uwag臋 r贸偶ne przypadki u偶ycia. Na przyk艂ad, strona e-commerce mo偶e zawiera膰 stron臋 g艂贸wn膮, strony z list膮 produkt贸w, strony ze szczeg贸艂ami produkt贸w i proces realizacji zam贸wienia.collect.startServerCommand: Polecenie uruchamiaj膮ce serwer deweloperski. Jest to konieczne, je艣li Lighthouse CI ma dzia艂a膰 w lokalnym 艣rodowisku deweloperskim.collect.numberOfRuns: Liczba uruchomie艅 audyt贸w Lighthouse dla ka偶dego adresu URL. Uruchomienie wielu audyt贸w pomaga z艂agodzi膰 wahania warunk贸w sieciowych i innych czynnik贸w.assert.assertions: Zestaw asercji do walidacji wynik贸w audytu Lighthouse. Ka偶da asercja okre艣la metryk臋 lub kategori臋 oraz pr贸g. Je艣li pr贸g nie zostanie spe艂niony, kompilacja zako艅czy si臋 niepowodzeniem. Ten przyk艂ad ustawia progi dla kategorii wydajno艣ci, dost臋pno艣ci, najlepszych praktyk i SEO. Ustawia r贸wnie偶 progi dla konkretnych metryk, takich jak First Contentful Paint (FCP), Largest Contentful Paint (LCP), Total Blocking Time (TBT) i Cumulative Layout Shift (CLS).upload.target: Okre艣la, gdzie maj膮 by膰 przesy艂ane raporty Lighthouse.temporary-redirectprzesy艂a raporty do tymczasowej lokalizacji przechowywania i dostarcza adres URL do ich dost臋pu. Inne opcje obejmuj膮 u偶ycie serwera Lighthouse CI lub rozwi膮za艅 chmurowych, takich jak Google Cloud Storage lub Amazon S3.
3. Integracja z systemem CI/CD
Nast臋pnym krokiem jest integracja Lighthouse CI z Twoim potokiem CI/CD. Oto przyk艂ad integracji z GitHub Actions:
Utw贸rz plik .github/workflows/lighthouse.yml w swoim repozytorium:
name: Lighthouse CI
on:
push:
branches: [main]
pull_request:
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install Dependencies
run: npm ci
- name: Run Lighthouse CI
run: | npm run build
lhci autorun
Ten przep艂yw pracy wykonuje nast臋puj膮ce kroki:
- Pobiera kod.
- Konfiguruje Node.js.
- Instaluje zale偶no艣ci.
- Uruchamia Lighthouse CI. Ten krok najpierw buduje aplikacj臋 (
npm run build), a nast臋pnie uruchamialhci autorun, kt贸ry wykonuje audyty Lighthouse i por贸wnuje wyniki z skonfigurowanymi progami.
Dostosuj ten przep艂yw pracy do swojego konkretnego systemu CI/CD i wymaga艅 projektu. Na przyk艂ad, je艣li u偶ywasz GitLab CI, skonfigurujesz plik .gitlab-ci.yml z podobnymi krokami.
4. Uruchomienie Lighthouse CI
Zatwierd藕 swoje zmiany i wypchnij je do repozytorium. Potok CI/CD automatycznie uruchomi Lighthouse CI. Je艣li kt贸rakolwiek z asercji si臋 nie powiedzie, kompilacja zako艅czy si臋 niepowodzeniem, dostarczaj膮c cenne informacje zwrotne deweloperom. Raporty Lighthouse CI b臋d膮 dost臋pne pod adresem URL dostarczonym przez system CI/CD.
Zaawansowana konfiguracja i dostosowywanie
Lighthouse CI oferuje szeroki zakres opcji konfiguracyjnych i mo偶liwo艣ci dostosowywania. Oto niekt贸re z zaawansowanych funkcji:
1. U偶ywanie serwera Lighthouse CI
Serwer Lighthouse CI zapewnia scentralizowany pulpit nawigacyjny do 艣ledzenia metryk wydajno艣ci w czasie, zarz膮dzania projektami i wsp贸艂pracy nad problemami z wydajno艣ci膮. Aby u偶y膰 serwera Lighthouse CI, nale偶y skonfigurowa膰 instancj臋 i zaktualizowa膰 plik lighthouserc.js, aby przesy艂a膰 raporty na serwer.
Najpierw wdr贸偶 serwer. Dost臋pne s膮 r贸偶ne opcje wdro偶enia, w tym Docker, Heroku oraz dostawcy chmurowi, tacy jak AWS i Google Cloud. Szczeg贸艂owe instrukcje dotycz膮ce wdra偶ania serwera mo偶na znale藕膰 w dokumentacji Lighthouse CI.
Gdy serwer zostanie uruchomiony, zaktualizuj plik lighthouserc.js, aby wskazywa艂 na serwer:
module.exports = {
ci:
{
collect: {
url: ['http://localhost:3000'],
startServerCommand: 'npm start',
},
assert: {
assertions: {
'categories:performance': ['warn', { minScore: 0.9 }],
},
},
upload:
{
target: 'lhci',
serverBaseUrl: 'YOUR_LHCI_SERVER_URL',
token: 'YOUR_LHCI_SERVER_TOKEN',
},
},
};
Zast膮p YOUR_LHCI_SERVER_URL adresem URL swojego serwera Lighthouse CI i YOUR_LHCI_SERVER_TOKEN tokenem wygenerowanym przez serwer. Token uwierzytelnia Tw贸j potok CI na serwerze.
2. Ustawianie bud偶et贸w wydajno艣ci
Bud偶ety wydajno艣ci definiuj膮 akceptowalne progi dla okre艣lonych metryk. Lighthouse CI pozwala na ustawienie bud偶et贸w wydajno艣ci i powodowanie niepowodzenia kompilacji, je艣li te bud偶ety zostan膮 przekroczone. Pomaga to zapobiega膰 regresjom wydajno艣ci i zapewnia, 偶e Twoja strona internetowa utrzymuje si臋 w akceptowalnych granicach wydajno艣ci.
Mo偶esz zdefiniowa膰 bud偶ety wydajno艣ci w pliku lighthouserc.js za pomoc膮 w艂a艣ciwo艣ci assert.assertions. Na przyk艂ad, aby ustawi膰 bud偶et wydajno艣ci dla First Contentful Paint (FCP), mo偶esz doda膰 nast臋puj膮c膮 asercj臋:
'first-contentful-paint': ['warn', { maxNumericValue: 2500 }],
Ta asercja spowoduje niepowodzenie kompilacji, je艣li FCP b臋dzie wi臋ksze ni偶 2500 milisekund.
3. Dostosowywanie konfiguracji Lighthouse
Lighthouse CI pozwala na dostosowanie konfiguracji Lighthouse do Twoich specyficznych potrzeb. Mo偶esz skonfigurowa膰 r贸偶ne ustawienia Lighthouse, takie jak:
onlyAudits: Okre艣l list臋 audyt贸w do uruchomienia.skipAudits: Okre艣l list臋 audyt贸w do pomini臋cia.throttling: Skonfiguruj ustawienia ograniczania przepustowo艣ci sieci, aby symulowa膰 r贸偶ne warunki sieciowe.formFactor: Okre艣l format (desktop lub mobilny) do emulacji.screenEmulation: Skonfiguruj ustawienia emulacji ekranu.
Aby dostosowa膰 konfiguracj臋 Lighthouse, mo偶na przekaza膰 flag臋 --config-path do polecenia lhci autorun, wskazuj膮c na niestandardowy plik konfiguracyjny Lighthouse. Pe艂n膮 list臋 opcji konfiguracyjnych mo偶na znale藕膰 w dokumentacji Lighthouse.
4. Audytowanie stron wymagaj膮cych uwierzytelnienia
Audytowanie stron wymagaj膮cych uwierzytelnienia wymaga nieco innego podej艣cia. Musisz zapewni膰 Lighthouse CI spos贸b na uwierzytelnienie przed uruchomieniem audyt贸w. Mo偶na to osi膮gn膮膰 za pomoc膮 plik贸w cookie lub poprzez skryptowanie procesu logowania.
Jednym z popularnych podej艣膰 jest u偶ycie flagi --extra-headers do przekazania ciasteczek uwierzytelniaj膮cych do Lighthouse CI. Ciasteczka mo偶na uzyska膰 z narz臋dzi deweloperskich przegl膮darki po zalogowaniu si臋 na stron臋.
Alternatywnie, mo偶na u偶y膰 skryptu Puppeteer do zautomatyzowania procesu logowania, a nast臋pnie uruchomi膰 audyty Lighthouse na uwierzytelnionych stronach. Takie podej艣cie zapewnia wi臋ksz膮 elastyczno艣膰 i pozwala na obs艂ug臋 z艂o偶onych scenariuszy uwierzytelniania.Najlepsze praktyki w testowaniu wydajno艣ci frontendu z Lighthouse CI
Aby zmaksymalizowa膰 korzy艣ci p艂yn膮ce z Lighthouse CI, post臋puj zgodnie z poni偶szymi najlepszymi praktykami:
- Uruchamiaj Lighthouse CI regularnie: Zintegruj Lighthouse CI ze swoim potokiem CI/CD, aby audyty by艂y uruchamiane automatycznie z ka偶dym commitem lub pull requestem. Zapewni to wczesne wykrywanie i szybkie usuwanie regresji wydajno艣ci.
- Ustawiaj realistyczne bud偶ety wydajno艣ci: Definiuj bud偶ety wydajno艣ci, kt贸re s膮 ambitne, ale osi膮galne. Zacznij od konserwatywnych bud偶et贸w i stopniowo je zacie艣niaj w miar臋 poprawy wydajno艣ci witryny. Rozwa偶 ustawienie r贸偶nych bud偶et贸w dla r贸偶nych typ贸w stron, w zale偶no艣ci od ich z艂o偶ono艣ci i znaczenia.
- Skup si臋 na kluczowych metrykach: Priorytetyzuj kluczowe wska藕niki wydajno艣ci, kt贸re maj膮 najwi臋kszy wp艂yw na do艣wiadczenie u偶ytkownika i wyniki biznesowe. Core Web Vitals od Google (LCP, FID i CLS) to dobry punkt wyj艣cia.
- Badaj i rozwi膮zuj problemy z wydajno艣ci膮: Gdy Lighthouse CI zidentyfikuje problemy z wydajno艣ci膮, dok艂adnie je zbadaj i wdr贸偶 odpowiednie rozwi膮zania. U偶yj raport贸w Lighthouse, aby zidentyfikowa膰 przyczyny problem贸w i nada膰 priorytet najbardziej wp艂ywowym poprawkom.
- Monitoruj wydajno艣膰 w czasie: 艢led藕 metryki wydajno艣ci w czasie, aby zidentyfikowa膰 trendy i wzorce. U偶yj serwera Lighthouse CI lub innych narz臋dzi monitoruj膮cych do wizualizacji danych o wydajno艣ci i identyfikacji obszar贸w do poprawy.
- Edukuj sw贸j zesp贸艂: Upewnij si臋, 偶e Tw贸j zesp贸艂 rozumie znaczenie wydajno艣ci frontendu i wie, jak efektywnie korzysta膰 z Lighthouse CI. Zapewnij szkolenia i zasoby, aby pom贸c im rozwija膰 swoje umiej臋tno艣ci i wiedz臋.
- Uwzgl臋dnij globalne warunki sieciowe: Ustawiaj膮c bud偶ety wydajno艣ci, we藕 pod uwag臋 warunki sieciowe w r贸偶nych cz臋艣ciach 艣wiata. U偶ytkownicy w obszarach z wolniejszym internetem mog膮 mie膰 inne do艣wiadczenia ni偶 u偶ytkownicy w obszarach z szybszym po艂膮czeniem. U偶ywaj narz臋dzi do symulacji r贸偶nych warunk贸w sieciowych podczas testowania.
- Optymalizuj obrazy: Optymalizacja obraz贸w jest kluczowym aspektem wydajno艣ci frontendu. U偶ywaj narz臋dzi takich jak ImageOptim, TinyPNG lub konwerter贸w online do kompresji i optymalizacji obraz贸w bez utraty jako艣ci. U偶ywaj nowoczesnych format贸w obraz贸w, takich jak WebP, kt贸re oferuj膮 lepsz膮 kompresj臋 i jako艣膰 ni偶 tradycyjne formaty, takie jak JPEG i PNG. Wdr贸偶 leniwe 艂adowanie (lazy loading) dla obraz贸w, kt贸re nie s膮 od razu widoczne w oknie przegl膮darki.
- Minifikuj i kompresuj kod: Minifikuj sw贸j kod HTML, CSS i JavaScript, aby zmniejszy膰 rozmiar plik贸w. U偶ywaj narz臋dzi takich jak UglifyJS, Terser lub minifikator贸w online. W艂膮cz kompresj臋 Gzip lub Brotli na serwerze, aby jeszcze bardziej zmniejszy膰 rozmiar przesy艂anych plik贸w.
- Wykorzystaj pami臋膰 podr臋czn膮 przegl膮darki: Skonfiguruj sw贸j serwer tak, aby ustawia艂 odpowiednie nag艂贸wki cache dla zasob贸w statycznych, takich jak obrazy, pliki CSS i JavaScript. Pozwala to przegl膮darkom na przechowywanie tych zasob贸w w pami臋ci podr臋cznej i unikanie ich wielokrotnego pobierania.
Podsumowanie
Integracja Lighthouse CI z procesem deweloperskim jest kluczowym krokiem w kierunku tworzenia wydajnych, dost臋pnych i przyjaznych dla SEO stron internetowych. Automatyzuj膮c testowanie wydajno艣ci frontendu i 艣ledz膮c wydajno艣膰 w czasie, mo偶esz wcze艣nie identyfikowa膰 i rozwi膮zywa膰 problemy z wydajno艣ci膮, poprawia膰 do艣wiadczenie u偶ytkownika i osi膮ga膰 lepsze wyniki biznesowe. Wdr贸偶 Lighthouse CI i uczy艅 ci膮g艂e doskonalenie wydajno艣ci podstawow膮 warto艣ci膮 w swoim procesie deweloperskim. Pami臋taj, 偶e wydajno艣膰 strony internetowej to nie jednorazowy wysi艂ek, ale ci膮g艂y proces wymagaj膮cy sta艂ej uwagi i optymalizacji. Uwzgl臋dnij czynniki kulturowe i regionalne, aby zapewni膰 bezproblemowe do艣wiadczenie wszystkim u偶ytkownikom, niezale偶nie od ich lokalizacji czy urz膮dzenia. Post臋puj膮c zgodnie z najlepszymi praktykami opisanymi w tym artykule, mo偶esz zapewni膰, 偶e Twoja strona b臋dzie dzia艂a膰 szybko, niezawodnie i przyjemnie dla u偶ytkownik贸w na ca艂ym 艣wiecie.