Lær hvordan du implementerer robust frontend visuel test med Chromatic og Percy. Denne guide giver en omfattende oversigt for udviklere verden over.
Frontend Visuel Test: En Dybdegående Undersøgelse af Chromatic og Percy Integration
I dagens hurtigt udviklende webudviklingslandskab er det afgørende at sikre en ensartet og visuelt tiltalende brugergrænseflade (UI) på tværs af forskellige browsere, enheder og skærmstørrelser. Manuel UI-test er imidlertid tidskrævende, fejlbehæftet og undlader ofte at fange subtile visuelle regressioner. Det er her, frontend visuel test kommer ind og tilbyder en effektiv løsning til at automatisere UI-kontroller og opretholde visuel integritet gennem hele udviklingslivscyklussen. Denne omfattende guide udforsker to førende visuelle testplatforme: Chromatic og Percy, og beskriver deres integration, fordele og bedste praksis for udviklere verden over.
Forståelse af Frontend Visuel Test
Frontend visuel test, også kendt som visuel regressionstest eller skærmbilledetest, automatiserer processen med at sammenligne UI-skærmbilleder med en baseline for at opdage visuelle ændringer. Det giver udviklere mulighed for at identificere uventede ændringer i UI'en forårsaget af kodeændringer, designopdateringer eller browseropdateringer. Denne tilgang reducerer risikoen for at frigive visuelt ødelagte eller inkonsistente brugergrænseflader til brugere betydeligt, hvilket i sidste ende forbedrer brugeroplevelsen.
Fordelene ved Visuel Test
- Tidlig Fejldetektering: Fanger visuelle fejl tidligt i udviklingscyklussen, før de når produktionen.
- Forbedret Kodekvalitet: Opfordrer udviklere til at skrive renere, mere vedligeholdelsesvenlig kode.
- Hurtigere Udviklingscyklusser: Automatiserer testprocesser, hvilket sparer tid og ressourcer.
- Forbedret Brugeroplevelse: Sikrer en ensartet og visuelt tiltalende UI på tværs af alle platforme.
- Reducerede Manuelle Testindsatser: Frigør QA-teams til at fokusere på mere komplekse testscenarier.
- Øget Tillid til Udgivelser: Giver større sikkerhed for, at UI'en fungerer som forventet.
Introduktion til Chromatic og Percy
Chromatic og Percy er førende skybaserede visuelle testplatforme, der strømliner den visuelle testproces. Begge platforme tilbyder lignende funktionaliteter, herunder generering af skærmbilleder, visuel sammenligning og integration med populære CI/CD-pipelines. De har dog også unikke funktioner og styrker. Lad os dykke ned i hver platform.
Chromatic
Chromatic, udviklet af Storybook, er dybt integreret med Storybook-økosystemet. Storybook er et kraftfuldt værktøj til at bygge og dokumentere UI-komponenter isoleret. Chromatic udvider Storybooks kapaciteter ved at tilbyde visuelle test- og gennemgangsfunktioner. Det forenkler processen med at teste UI-komponenter ved at lade udviklere tage skærmbilleder af komponenter i forskellige tilstande og konfigurationer. Chromatic sammenligner derefter disse skærmbilleder med en baseline og fremhæver eventuelle visuelle forskelle.
Nøglefunktioner i Chromatic:
- Tæt Storybook Integration: Integreres problemfrit med Storybook til komponentdrevet udvikling og test.
- Automatisk Generering af Skærmbilleder: Genererer automatisk skærmbilleder af UI-komponenter i forskellige tilstande.
- Visuel Sammenligning: Sammenligner skærmbilleder med en baseline og fremhæver visuelle ændringer.
- Gennemgang og Samarbejde: Leverer en samarbejdsgrænseflade til gennemgang og godkendelse af visuelle ændringer.
- CI/CD Integration: Integreres med populære CI/CD-pipelines, såsom Jenkins, CircleCI og GitHub Actions.
- Tilgængelighedstest: Leverer grundlæggende tilgængelighedskontroller.
Percy
Percy, erhvervet af BrowserStack, er en alsidig visuel testplatform, der understøtter forskellige testrammer og udviklingsworkflows. Den giver udviklere mulighed for at tage skærmbilleder af hele sider, specifikke komponenter eller endda dynamisk indhold. Percys sofistikerede visuelle sammenligningsalgoritmer kan registrere selv de mindste visuelle uoverensstemmelser. Den tilbyder en omfattende platform til styring af visuelle regressioner og sikring af UI-konsistens.
Nøglefunktioner i Percy:
- Understøttelse af Flere Platforme: Understøtter forskellige testrammer, herunder Jest, Cypress og Selenium.
- Generering af Skærmbilleder: Tager skærmbilleder af hele sider, specifikke komponenter og dynamisk indhold.
- Visuel Sammenligning: Sammenligner skærmbilleder ved hjælp af avancerede visuelle sammenligningsalgoritmer.
- Samarbejde og Gennemgang: Leverer en samarbejdsgrænseflade til gennemgang og godkendelse af visuelle ændringer.
- CI/CD Integration: Integreres med populære CI/CD-pipelines.
- Test af Responsivt Design: Understøtter test af responsivt design på tværs af forskellige skærmstørrelser og enheder.
- Browserkompatibilitetstest: Tester mod forskellige browsere og versioner.
Opsætning af Visuel Test med Chromatic
Lad os gennemgå processen med at opsætte visuel test ved hjælp af Chromatic, forudsat at du har et Storybook-projekt konfigureret. Følgende trin giver en generel oversigt; se den officielle Chromatic-dokumentation for de mest opdaterede instruktioner. Eksemplet er baseret på en React- og Storybook-opsætning; lignende koncepter gælder for andre rammer.
Forudsætninger
- Et Storybook-projekt opsat med komponenter.
- En Chromatic-konto (gratis eller betalt).
- Node.js og npm eller yarn installeret.
Installation og Konfiguration
- Installer Chromatic CLI:
npm install -g chromatic - Godkend med Chromatic:
Dette vil bede dig om at logge ind på din Chromatic-konto. Det vil derefter opsætte den nødvendige konfiguration.
chromatic login - Kør Chromatic:
Chromatic vil bygge din Storybook og uploade den til Chromatic-platformen. Den vil derefter tage skærmbilleder af dine komponenter og sammenligne dem med en baseline.
chromatic - Gennemgå og Godkend Ændringer: Chromatic vil levere et link til Chromatic-grænsefladen, hvor du kan gennemgå eventuelle visuelle ændringer, der er registreret. Du kan derefter godkende eller afvise ændringerne.
- Integrer med CI/CD: Integrer Chromatic i din CI/CD-pipeline (f.eks. GitHub Actions, GitLab CI) for automatiseret test på hver pull-anmodning. Trinnene varierer afhængigt af den CI/CD-tjeneste, du bruger; se Chromatic-dokumentationen for detaljerede instruktioner. For eksempel kan du ved hjælp af GitHub actions tilføje et job til din workflow-fil, der kører Chromatic, efter at din build og enhedstest er bestået.
Eksempel: Integrering af Chromatic med GitHub Actions
Opret en ny workflow-fil (f.eks. .github/workflows/chromatic.yml) med følgende indhold (juster CHROMATIC_PROJECT_TOKEN til din projekttoken):
name: Chromatic
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
chromatic-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Publish to Chromatic
run: |
npx chromatic --project-token=$CHROMATIC_PROJECT_TOKEN
env:
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} # Brug en hemmelighed til at gemme token
Dette workflow vil udløse Chromatic på hver push og pull-anmodning til main-grenen. Husk at erstatte CHROMATIC_PROJECT_TOKEN med din faktiske Chromatic-projekttoken gemt som en GitHub-hemmelighed.
Opsætning af Visuel Test med Percy
Opsætning af visuel test med Percy involverer lignende trin som Chromatic, men fokuserer på integration med din eksisterende testramme. Her er en generel guide, med specifikke instruktioner afhængigt af din ramme (f.eks. React med Jest, Vue med Cypress).
Forudsætninger
- En Percy-konto (gratis eller betalt).
- En testramme (f.eks. Jest, Cypress, Selenium).
- Node.js og npm eller yarn installeret.
Installation og Konfiguration
- Installer Percy CLI:
npm install -D @percy/cli - Godkend med Percy:
Opret et Percy-projekt i Percy-platformen, og få dit projekts token. Du vil indstille denne token som en miljøvariabel (f.eks.
PERCY_TOKEN) i din CI/CD-konfiguration. - Integrer Percy med din testramme:
Dette indebærer at tilføje Percy-kommandoer til dine testscripts. De nøjagtige trin varierer afhængigt af din testramme. For eksempel, med Cypress, ville du installere pakken
@percy/cypressog tilføje en kommando for at tage Percy-snapshots. Med Jest vil du sandsynligvis bruge Percy API'en direkte eller en dedikeret adapter.Eksempel ved hjælp af Cypress (i dine Cypress-tests - f.eks.
cypress/integration/my_spec.js):it('should render the homepage', () => { cy.visit('/'); cy.percySnapshot('Homepage'); });I det ovenstående Cypress-eksempel tager
cy.percySnapshot('Homepage')et skærmbillede af den aktuelle tilstand af siden og uploader det til Percy. - Konfigurer CI/CD Integration:
Inden for din CI/CD-konfiguration skal du sikre dig, at Percy kører, efter at dine tests er fuldført. Du vil typisk indstille miljøvariablen
PERCY_TOKENog derefter køre Percy CLI-kommandoen.Eksempel ved hjælp af en GitHub Actions (i din workflow-fil):
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Install dependencies run: npm ci - name: Run tests run: npm test # Erstat med din testkommando - name: Percy Snapshot if: github.event_name == 'pull_request' # Kør kun Percy på pull-anmodninger run: | npx percy snapshot --token $PERCY_TOKEN env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} # Brug en GitHub-hemmelighed - Gennemgå og Godkend Ændringer:
Percy vil levere et link til sin platform, hvor du kan gennemgå de visuelle forskelle og godkende eller afvise ændringerne.
Bedste Praksis for Visuel Test
Effektiv visuel test kræver en gennemtænkt tilgang. Her er nogle bedste praksis for at maksimere dens fordele:
1. Definer Klare Baselines
Etabler en veldefineret baseline. Dette er den indledende tilstand af din UI, som alle fremtidige skærmbilleder vil blive sammenlignet med. Sørg for, at denne baseline nøjagtigt afspejler det ønskede visuelle udseende af din applikation. Gennemgå og opdater regelmæssigt dine baselines for at sikre, at de er aktuelle og afspejler løbende designændringer.
2. Fokuser på Kritiske UI-elementer
Prioriter test af de mest kritiske UI-elementer og brugerflows. Dette inkluderer elementer, der bruges hyppigt, har en væsentlig indvirkning på brugeroplevelsen, eller er tilbøjelige til at ændre sig. Føl ikke behovet for at teste hver eneste pixel; fokuser på områder, der betyder mest for dine brugere.
3. Test På Tværs af Forskellige Miljøer
Test din UI på tværs af en række forskellige miljøer, herunder forskellige browsere (Chrome, Firefox, Safari, Edge osv.), enheder (desktops, tablets, smartphones) og skærmstørrelser. Dette vil hjælpe med at sikre, at din UI gengives konsekvent på tværs af alle platforme.
4. Håndter Dynamisk Indhold
Hvis din UI indeholder dynamisk indhold (f.eks. data hentet fra API'er), skal du håndtere dette omhyggeligt. Overvej teknikker som at mocke API-svar for at skabe forudsigelige testdata eller bruge deterministiske datasæt. Sørg for, at du har en strategi for konsekvent styring af dynamisk indhold på tværs af forskellige builds.
5. Adresser Flaky Tests
Flaky tests er tests, der nogle gange består og andre gange mislykkes. Disse kan være en stor kilde til frustration. Identificer og adressér de grundlæggende årsager til flaky tests. Dette kan involvere justering af dine testkonfigurationer, forøgelse af timeouts eller forbedring af pålideligheden af dine testdata. Hvis en test konsekvent ikke består, skal du investere tid i at debugge og løse problemet. Ignorer ikke blot fejl.
6. Integrer med CI/CD
Integrer din visuelle testproces i din CI/CD-pipeline. Dette giver dig mulighed for automatisk at køre visuelle tests på hver kodeændring, hvilket sikrer, at eventuelle visuelle regressioner fanges tidligt i udviklingscyklussen. Automatisering er nøglen til at spare tid og reducere risikoen for menneskelige fejl.
7. Brug et Konsistent Testmiljø
Sørg for, at dit testmiljø er så konsistent som muligt med dit produktionsmiljø. Dette inkluderer brug af de samme browsere, operativsystemer og skrifttyper. Et konsistent miljø vil forbedre nøjagtigheden af dine visuelle sammenligninger.
8. Dokumentér Din Teststrategi
Dokumentér din visuelle teststrategi, herunder hvilke komponenter der testes, testmiljøerne og de forventede resultater. Denne dokumentation vil hjælpe med at sikre, at din testproces er konsistent og vedligeholdelsesvenlig over tid. Dette er især afgørende for onboarding af nye teammedlemmer eller når du foretager væsentlige ændringer af din UI.
9. Prioritér Tilgængelighed
Selvom Chromatic og Percy tilbyder en vis grad af tilgængelighedskontrol, skal du prioritere tilgængelighedstest. Integrer tilgængelighedskontroller i dine visuelle tests for at sikre, at din UI er tilgængelig for alle brugere. Se WCAG-retningslinjer.
10. Gennemgå og Opdatér Regelmæssigt Tests
Efterhånden som din UI udvikler sig, skal du regelmæssigt gennemgå og opdatere dine visuelle tests. Dette inkluderer opdatering af baselines, tilføjelse af nye tests for nye funktioner og fjernelse af tests for forældede komponenter. Dette sikrer, at dine tests fortsat giver værdi.
Valg af den Rigtige Platform: Chromatic vs. Percy
Det bedste valg mellem Chromatic og Percy afhænger af dine specifikke behov og projektopsætning:
Overvej Chromatic hvis:
- Du allerede bruger Storybook til komponentdrevet udvikling.
- Du ønsker en tæt integration med Storybooks funktioner.
- Du foretrækker en strømlinet opsætning og brugervenlighed, især hvis du har en eksisterende Storybook-opsætning.
- Du ønsker indbyggede tilgængelighedskontroller.
Overvej Percy hvis:
- Du bruger en anden testramme end Storybook, såsom Jest, Cypress eller Selenium.
- Du har brug for understøttelse af en bredere vifte af testscenarier.
- Du har brug for avancerede funktioner som responsivt design-test eller browserkompatibilitetstest.
- Du foretrækker en mere rammefri løsning.
Både Chromatic og Percy er fremragende valg til visuel test. Evaluer platformene baseret på dine eksisterende værktøjer, projektkrav og teampræferencer. Overvej at starte med en gratis prøveperiode eller en gratis plan for at evaluere funktionerne og mulighederne. Mange teams bruger endda begge værktøjer til forskellige dele af projektet.
Avancerede Teknikker og Integrationer
Ud over det grundlæggende tilbyder visuelle testplatforme avancerede teknikker til at imødekomme mere komplekse UI-scenarier og integrationer med andre udviklingsværktøjer.
1. Test af Dynamisk Indhold: Mocking af API'er
En af de største udfordringer ved visuel test er styring af dynamisk indhold. For at håndtere dette skal du overveje at mocke API-svar for at sikre, at testdataene er forudsigelige. Dette giver dig mulighed for at tage ensartede skærmbilleder og forhindre falske positive eller negative forårsaget af konstant ændrende data. Udnyt værktøjer som Mock Service Worker (MSW) eller Jests mock-funktionalitet til at mocke API-kald.
2. Test af Interaktive UI-komponenter
For test af interaktive UI-komponenter (f.eks. dropdown-menuer, modalvinduer) skal du ofte simulere brugerinteraktioner. Dette kan involvere programmatisk udløsning af hændelser (f.eks. klik, hover, tastaturindgange) ved hjælp af din testramme. Værktøjer som Cypress kan simulere brugeradfærd mere direkte.
3. Integration af Tilgængelighedstest
Integrer tilgængelighedstestværktøjer (f.eks. axe-core) i dine visuelle tests. Chrome og Percy kan levere grundlæggende tilgængelighedskontroller; for mere avanceret test skal du overveje at køre en tilgængelighedsrevision som en del af din testpipeline og integrere disse resultater med dine visuelle testresultater. Ved at gøre dette vil du hjælpe med at sikre, at din UI er tilgængelig for alle brugere. Tilgængelighed handler ikke kun om at gøre UI'en tilgængelig, men om at sikre inkluderende design for brugere med forskellige behov.
4. UI-komponentbiblioteker
Visuel test er især nyttigt, når du arbejder med UI-komponentbiblioteker (f.eks. Material UI, Ant Design). Opret visuelle tests for hver komponent i dit bibliotek for at sikre konsistens og forhindre visuelle regressioner, når du opdaterer biblioteket eller integrerer det i dine projekter.
5. Integration med Designsystemer
Hvis du bruger et designsystem, skal du linke dine visuelle tests til din designsystemdokumentation. Dette giver dig mulighed for hurtigt at identificere eventuelle visuelle uoverensstemmelser mellem din UI og dit designsystems specifikationer. Synkroniser UI-komponenterne med designsystemkomponenter. Dette vil hjælpe med at opretholde designkonsistens på tværs af dine produkter.
Tilgængelighedsbetragtninger
Tilgængelighed bør være en kernekomponent i din visuelle teststrategi. Selvom Chromatic og Percy tilbyder nogle grundlæggende tilgængelighedskontroller, bør du implementere omfattende tilgængelighedsrevisioner som en del af din testproces.
1. Automatiserede Tilgængelighedstestværktøjer
Brug automatiserede tilgængelighedstestværktøjer som Axe, Lighthouse eller Pa11y i din CI/CD-pipeline. Disse værktøjer scanner din UI for tilgængelighedsbrud og giver detaljerede rapporter om eventuelle fundne problemer.
2. Manuel Tilgængelighedstest
Suppler automatiseret test med manuel test. Udfør manuelle kontroller ved hjælp af skærmlæsere (f.eks. JAWS, NVDA, VoiceOver), tastaturnavigation og farvekontrastanalysatorer for at identificere eventuelle problemer, som automatiserede værktøjer muligvis overser. Overvej at hyre tilgængelighedskonsulenter til at udføre fulde revisioner.
3. Kodeanmeldelser
Inkorporér tilgængelighedsgennemgange i din kodegennemgangsproces. Få udviklere til at gennemgå hinandens kode for tilgængelighedsproblemer. Uddan dit team i bedste praksis for tilgængelighed, og opfordr dem til at være opmærksomme på tilgængelighed gennem hele udviklingsprocessen.
Konklusion: Fremtiden for Frontend Visuel Test
Frontend visuel test er ikke længere en luksus, men en nødvendighed for moderne webudvikling. Ved at integrere platforme som Chromatic og Percy i din arbejdsgang kan du forbedre kvaliteten, konsistensen og vedligeholdelsen af din UI betydeligt. Brugen af visuelle testplatforme er indstillet til at vokse, efterhånden som UI-kompleksiteten øges, og efterspørgslen efter brugervenlige, responsive og tilgængelige webapplikationer fortsætter. Efterhånden som internettet fortsat udvikler sig, vil visuel test blive endnu mere kritisk i udviklingsprocessen.
Ved at følge den bedste praksis, der er beskrevet i denne guide, og holde dig opdateret med de seneste fremskridt inden for visuel test, kan du opbygge en mere robust, pålidelig og visuelt tiltalende brugeroplevelse for dine brugere verden over. Vurder regelmæssigt din teststrategi, hold dig ajour med nye værktøjer og teknikker, og tilpas dig de stadigt skiftende krav i frontend-udviklingslandskabet. Løbende forbedring er afgørende for fortsat succes i visuel test.