Generaliserade testfall

Den ena webbsidan är den andra lik. Alla är de uppbyggda på samma kodstandard, HTML, och har vissa ”best practices” (ja, faktiskt!). Det här går ju faktiskt att utnyttja om man vill skapa generella testfall i den automatiska genren. Min tanke var att slippa manuellt gå igenom alla formulär som byggs på många av de webbsidor jag jobbar med. Så jag började fundera på vad de har för likheter..

De är samtliga uppbyggda kring taggarna input och select och i vissa fall textarea. De har samtliga någon form av validering och minst ett tvingande fält.

Till ”best practices”, eller riktlinjerna för tillgänglig webb, hör en sådan sak som att varje inputfält bör ha en label-tagg.

Så, där har jag mitt första generella testfall, något som ska testas på alla formulär: Har alla input-fält en label-tagg? Nästa testfall som kan generaliseras till alla formulär är en kontroll om alla textfält har en maxlängd satt. Kanske inget krav i alla fall, men när jag kört testet vet jag i alla fall vilka som har maxlängd och vilka som inte har det. Det är alltid bättre att veta än att missa att kontrollera det.

Så med hjälp av mitt hemmasnickrade ramverk för Selenium2/Webdriver tog det inte lång tid att få till en klass som kör testerna och bara behöver anropas från det testfallet som behöver kontrollera det. Så här ser det andra testet ut:

public void AllTextInputsHaveMaxLength() {
     ReadOnlyCollection<IWebElement> inputs = driver.FindElements(
          By.CssSelector(this.cssContext + " input[type = 'text']"));
     foreach(IWebElement input in inputs) {
           ah.isTrue(input.GetAttribute("maxlength") != null,
             "No maxlength found for element: " + input.GetAttribute("id"));
     }
}