Servicealternativ
Service-alternativ är de alternativ som kan ställas in när tjänsten instansieras och kommer att användas för varje metodanrop.
// wdio.conf.(js|ts)
export const config = {
// ...
// =====
// Setup
// =====
services: [
[
"visual",
{
// The options
},
],
],
// ...
};
Standardalternativ
addressBarShadowPadding
- Typ:
number - Obligatorisk: Nej
- Standard:
6 - Stödda applikationskontexter: Webb
Utfyllnaden som behöver läggas till adressfältet på iOS och Android för att göra en korrekt utskärning av visningsområdet.
autoElementScroll
- Typ:
boolean - Obligatorisk: Nej
- Standard:
true - Stödda applikationskontexter: Webb, Hybrid-app (Webview)
Detta alternativ låter dig inaktivera automatisk rullning av element in i vyn när en element-skärmdump skapas.
addIOSBezelCorners
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Lägg till ramhörn och notch/dynamic island till skärmdumpen för iOS-enheter.
Detta kan endast göras när enhetsnamnet KAN bestämmas automatiskt och matchar följande lista av normaliserade enhetsnamn. Normalisering kommer att utföras av denna modul. iPhone:
- iPhone X:
iphonex - iPhone XS:
iphonexs - iPhone XS Max:
iphonexsmax - iPhone XR:
iphonexr - iPhone 11:
iphone11 - iPhone 11 Pro:
iphone11pro - iPhone 11 Pro Max:
iphone11promax - iPhone 12:
iphone12 - iPhone 12 Mini:
iphone12mini - iPhone 12 Pro:
iphone12pro - iPhone 12 Pro Max:
iphone12promax - iPhone 13:
iphone13 - iPhone 13 Mini:
iphone13mini - iPhone 13 Pro:
iphone13pro - iPhone 13 Pro Max:
iphone13promax - iPhone 14:
iphone14 - iPhone 14 Plus:
iphone14plus - iPhone 14 Pro:
iphone14pro - iPhone 14 Pro Max:
iphone14promaxiPads: - iPad Mini 6th Generation:
ipadmini - iPad Air 4th Generation:
ipadair - iPad Air 5th Generation:
ipadair - iPad Pro (11-inch) 1st Generation:
ipadpro11 - iPad Pro (11-inch) 2nd Generation:
ipadpro11 - iPad Pro (11-inch) 3rd Generation:
ipadpro11 - iPad Pro (12.9-inch) 3rd Generation:
ipadpro129 - iPad Pro (12.9-inch) 4th Generation:
ipadpro129 - iPad Pro (12.9-inch) 5th Generation:
ipadpro129
autoSaveBaseline
- Typ:
boolean - Obligatorisk: Nej
- Standard:
true - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Om ingen baseline-bild hittas under jämförelsen kopieras bilden automatiskt till baseline-mappen.
alwaysSaveActualImage
- Typ:
boolean - Obligatorisk: Nej
- Standard:
true - Stödda applikationskontexter: Alla
När detta alternativ sätts till false kommer det att:
- inte spara den faktiska bilden när det inte finns någon skillnad
- inte lagra jsonrapport-filen när
createJsonReportFilesär satt tilltrue. Det kommer också visa en varning i loggarna attcreateJsonReportFilesär inaktiverat
Detta bör skapa bättre prestanda eftersom inga filer skrivs till systemet och bör säkerställa att det inte finns mycket brus i mappen actual.
baselineFolder
- Typ:
string|()=> string - Obligatorisk: Nej
- Standard:
.path/to/testfile/__snapshots__/ - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Katalogen som kommer att innehålla alla baseline-bilder som används under jämförelsen. Om den inte är inställd kommer standardvärdet att användas, vilket lagrar filerna i en __snapshots__/-mapp bredvid specifikationen som kör de visuella testerna. En funktion som returnerar en string kan också användas för att ställa in baselineFolder-värdet:
{
baselineFolder: path.join(process.cwd(), 'foo', 'bar', 'baseline')
},
// ELLER
{
baselineFolder: () => {
// Gör lite magi här
return path.join(process.cwd(), 'foo', 'bar', 'baseline');
}
}
clearRuntimeFolder
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Radera runtime-mappen (actual & diff) vid initialisering
Detta fungerar endast när screenshotPath är inställd via plugin-alternativen och KOMMER INTE ATT FUNGERA när du ställer in mapparna i metoderna
createJsonReportFiles (NY)
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false
Du har nu möjlighet att exportera jämförelseresultaten till en JSON-rapportfil. Genom att ange alternativet createJsonReportFiles: true kommer varje bild som jämförs att skapa en rapport som lagras i mappen actual, bredvid varje actual-bildresultat. Utskriften kommer att se ut så här:
{
"parent": "check methods",
"test": "should fail comparing with a baseline",
"tag": "examplePageFail",
"instanceData": {
"browser": {
"name": "chrome-headless-shell",
"version": "126.0.6478.183"
},
"platform": {
"name": "mac",
"version": "not-known"
}
},
"commandName": "checkScreen",
"boundingBoxes": {
"diffBoundingBoxes": [
{
"left": 1088,
"top": 717,
"right": 1186,
"bottom": 730
}
//....
],
"ignoredBoxes": [
{
"left": 159,
"top": 652,
"right": 356,
"bottom": 703
}
//...
]
},
"fileData": {
"actualFilePath": "/Users/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"baselineFilePath": "/Users/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"diffFilePath": "/Users/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
"fileName": "examplePageFail-local-chrome-latest-1366x768.png",
"size": {
"actual": {
"height": 768,
"width": 1366
},
"baseline": {
"height": 768,
"width": 1366
},
"diff": {
"height": 768,
"width": 1366
}
}
},
"misMatchPercentage": "12.90",
"rawMisMatchPercentage": 12.900729014153246
}
När alla tester är utförda kommer en ny JSON-fil med samlingen av jämförelserna att genereras och kan hittas i roten av din actual-mapp. Datan är grupperad efter:
describeför Jasmine/Mocha ellerFeatureför CucumberJSitför Jasmine/Mocha ellerScenarioför CucumberJS och sedan sorterad efter:commandName, vilket är jämförelsemetodnamnen som används för att jämföra bildernainstanceData, webbläsare först, sedan enhet, sedan plattform det kommer att se ut så här
[
{
"description": "check methods",
"data": [
{
"test": "should fail comparing with a baseline",
"data": [
{
"tag": "examplePageFail",
"instanceData": {},
"commandName": "checkScreen",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "14.34",
"rawMisMatchPercentage": 14.335403703025868
},
{
"tag": "exampleElementFail",
"instanceData": {},
"commandName": "checkElement",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "1.34",
"rawMisMatchPercentage": 1.335403703025868
}
]
}
]
}
]
Rapportdatan ger dig möjlighet att bygga din egen visuella rapport utan att göra all magi och datainsamling själv.
Du behöver använda @wdio/visual-testing version 5.2.0 eller högre
disableBlinkingCursor
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb, Hybrid-app (Webview)
Aktivera/inaktivera alla input, textarea, [contenteditable] markör "blinkningar" i applikationen. Om inställt till true kommer markören att sättas till transparent innan en skärmdump tas och återställas när det är klart
disableCSSAnimation
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb, Hybrid-app (Webview)
Aktivera/inaktivera alla CSS-animeringar i applikationen. Om inställt till true kommer alla animationer att inaktiveras innan en skärmdump tas och återställas när det är klart
enableLayoutTesting
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb
Detta kommer att dölja all text på en sida så att endast layouten används för jämförelse. Döljandet görs genom att lägga till stilen 'color': 'transparent !important' till varje element.
För utdata, se Test Output
Genom att använda denna flagga kommer varje element som innehåller text (alltså inte bara p, h1, h2, h3, h4, h5, h6, span, a, li, utan även div|button|..) att få denna egenskap. Det finns inget alternativ för att anpassa detta.
formatImageName
- Typ:
string - Obligatorisk: Nej
- Standard:
{tag}-{browserName}-{width}x{height}-dpr-{dpr} - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Namnet på de sparade bilderna kan anpassas genom att skicka parametern formatImageName med en formaterad sträng som:
{tag}-{browserName}-{width}x{height}-dpr-{dpr}
Följande variabler kan skickas för att formatera strängen och kommer automatiskt att läsas från instansens kapaciteter. Om de inte kan bestämmas kommer standardvärdena att användas.
browserName: Namnet på webbläsaren i de tillhandahållna kapaciteternabrowserVersion: Versionen av webbläsaren som anges i kapaciteternadeviceName: Enhetsnamnet från kapaciteternadpr: Enhetens pixelförhållandeheight: Höjden på skärmenlogName: LogName från kapaciteternamobile: Detta lägger till_app, eller webbläsarnamnet efterdeviceNameför att skilja app-skärmdumpar från webbläsarskärmdumparplatformName: Namnet på plattformen i de tillhandahållna kapaciteternaplatformVersion: Versionen av plattformen som anges i kapaciteternatag: Taggen som anges i metoderna som anropaswidth: Bredden på skärmen
Du kan inte ange anpassade sökvägar/mappar i formatImageName. Om du vill ändra sökvägen, kontrollera då följande alternativ:
baselineFolderscreenshotPathfolderOptionsper metod
fullPageScrollTimeout
- Typ:
number - Obligatorisk: Nej
- Standard:
1500 - Stödda applikationskontexter: Webb
Timeout i millisekunder att vänta efter en rullning. Detta kan hjälpa till att identifiera sidor med lat laddning.
Detta fungerar endast när service/metodalternativet userBasedFullPageScreenshot är satt till true, se även userBasedFullPageScreenshot
hideScrollBars
- Typ:
boolean - Obligatorisk: Nej
- Standard:
true - Stödda applikationskontexter: Webb, Hybrid-app (Webview)
Dölj rullningslister i applikationen. Om inställt till true kommer alla rullningslister att inaktiveras innan en skärmdump tas. Detta är inställt till standard true för att förhindra extra problem.
logLevel
- Typ:
string - Obligatorisk: Nej
- Standard:
info - Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Lägger till extra loggar, alternativ är debug | info | warn | silent
Fel loggas alltid till konsolen.
savePerInstance
- Typ:
boolean - Standard:
false - Obligatorisk: nej
- Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Spara bilderna per instans i en separat mapp så att till exempel alla Chrome-skärmdumpar sparas i en Chrome-mapp som desktop_chrome.
screenshotPath
- Typ:
string | () => string - Standard:
.tmp/ - Obligatorisk: nej
- Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app
Katalogen som kommer att innehålla alla faktiska/olika skärmdumpar. Om den inte är inställd kommer standardvärdet att användas. En funktion som returnerar en sträng kan också användas för att ställa in screenshotPath-värdet:
{
screenshotPath: path.join(process.cwd(), 'foo', 'bar', 'screenshotPath')
},
// ELLER
{
screenshotPath: () => {
// Gör lite magi här
return path.join(process.cwd(), 'foo', 'bar', 'screenshotPath');
}
}
toolBarShadowPadding
- Typ:
number - Obligatorisk: Nej
- Standard:
6för Android och15för iOS (6som standard och9läggs till automatiskt för den möjliga hemknappen på iPhone med en notch eller iPads som har en hemknapp) - Stödda applikationskontexter: Webb
Utfyllnaden som behöver läggas till verktygsfältet på iOS och Android för att göra en korrekt utskärning av visningsområdet.
userBasedFullPageScreenshot
- Typ:
boolean - Obligatorisk: Nej
- Standard:
false - Stödda applikationskontexter: Webb, Hybrid-app (Webview) Introducerad i visual-service@7.0.0
Som standard tas fullsidesbilder på desktop-webben med WebDriver BiDi-protokollet, vilket möjliggör snabba, stabila och konsekventa skärmbilder utan rullning. När userBasedFullPageScreenshot är inställt på true simulerar skärmbildsprocessen en verklig användare: den rullar genom sidan, tar skärmbilder i visningsområdets storlek och syr ihop dem. Denna metod är användbar för sidor med latladdat innehåll eller dynamisk rendering som beror på rullningsposition.
Använd detta alternativ om din sida förlitar sig på innehåll som laddas medan du rullar eller om du vill bevara beteendet hos äldre skärmdumpsmetoder.
waitForFontsLoaded
- Typ:
boolean - Obligatorisk: Nej
- Standard:
true - Stödda applikationskontexter: Webb, Hybrid-app (Webview)
Teckensnitt, inklusive tredjepartsteckensnitt, kan laddas synkront eller asynkront. Asynkron laddning betyder att teckensnitt kan laddas efter att WebdriverIO fastställer att en sida har laddats helt. För att förhindra problem med teckensnittåtergivning kommer denna modul som standard att vänta på att alla teckensnitt laddas innan en skärmdump tas.
Tabbable-alternativ
Denna modul stöder också att rita hur en användare skulle använda sitt tangentbord för att tabba genom webbplatsen genom att rita linjer och prickar från tabbable-element till tabbable-element.
Arbetet är inspirerat av Viv Richards hans blogginlägg om "AUTOMATING PAGE TABABILITY (IS THAT A WORD?) WITH VISUAL TESTING".
Sättet som tabbable-element väljs baseras på modulen tabbable. Om det finns några problem angående tabbningen, kontrollera README.md och särskilt More details-avsnittet.
tabbableOptions
- Typ:
object - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Alternativ som kan ändras för linjerna och prickarna om du använder {save|check}Tabbable-metoderna. Alternativen förklaras nedan.
tabbableOptions.circle
- Typ:
object - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Alternativen för att ändra cirkeln.
tabbableOptions.circle.backgroundColor
- Typ:
string - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Bakgrundsfärgen på cirkeln.
tabbableOptions.circle.borderColor
- Typ:
string - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Ramfärgen på cirkeln.
tabbableOptions.circle.borderWidth
- Typ:
number - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Rambredden på cirkeln.
tabbableOptions.circle.fontColor
- Typ:
string - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Färgen på teckensnittet för texten i cirkeln. Detta visas endast om showNumber är inställt på true.
tabbableOptions.circle.fontFamily
- Typ:
string - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Familjen av teckensnittet för texten i cirkeln. Detta visas endast om showNumber är inställt på true.
Se till att ställa in teckensnitt som stöds av webbläsarna.
tabbableOptions.circle.fontSize
- Typ:
number - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Storleken på teckensnittet för texten i cirkeln. Detta visas endast om showNumber är inställt på true.
tabbableOptions.circle.size
- Typ:
number - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Storleken på cirkeln.
tabbableOptions.circle.showNumber
- Typ:
showNumber - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Visa tabbsekvensens nummer i cirkeln.
tabbableOptions.line
- Typ:
object - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Alternativen för att ändra linjen.
tabbableOptions.line.color
- Typ:
string - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Färgen på linjen.
tabbableOptions.line.width
- Typ:
number - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb
Bredden på linjen.
Jämförelsealternativ
compareOptions
- Typ:
object - Obligatorisk: Nej
- Standard: Se här för alla standardvärden
- Stödda applikationskontexter: Webb, Hybrid-app (Webview), Native-app (Se Metod Jämförelsealternativ för mer information)
Jämförelsealternativen kan också ställas in som service-alternativ, de beskrivs i Metod Jämförelsealternativ