Dopo che ci è scappato un errore nell'html del sito su cui stiamo lavorando, abbiamo deciso di scrivere un test
che validi l'html prodotto.
Per raggiungere l'obiettivo utilizziamo l'utility Tidy che si puo' scaricare da
qui
È un piccolo eseguibile a cui si puo' passare un html e verificare che non contenga errori.
Il codice del test è piuttosto semplice:
[Test]
public void ValidateHtml()
{
var html = new WebClient().DownloadString(@"http://someurl.com");
process = new Process();
process.StartInfo.FileName = "tidy.exe";
process.StartInfo.Arguments = "-e";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.StandardInput.Write(html);
process.StandardInput.Close();
process.WaitForExit();
Assert.That(_process.ExitCode, Is.EqualTo(0), _process.StandardError.ReadToEnd());
}
Il processo viene creato redirigendo lo standard input e lo standard error, il primo usato per inviare l'html, mentre il secondo
come messaggio di errore nel caso l'Assert fallisca. L'output di tidy è piuttosto esplicativo e ci permette di correggere velocemente gli errori individuati.
l'opzione -e indica di mostrare solo gli errori, altrimenti tidy puo' anche provare a correggerli, opzione che non utilizziamo.
La documentazione sulle opzioni supportate da tidy la trovate
qui.