Scrittura di test per axe DevTools per Web in C#
Come scrivere test efficaci per l'accessibilità utilizzando axe DevTools per Web per C#
Questa guida fornisce test di esempio sia per NUnit che per MSTest. Tutti i test utilizzano la AxeReporting
classe per creare i risultati del reporting iniziali. Per ulteriori informazioni sulle classi di test di axe DevTools, visitare C# API Reference.
Un test predefinito di base
Il seguente test chiama axe.Analyze()
per analizzare la pagina, confronta i risultati con l'affermazione e crea un output di report iniziale utilizzando la classe AxeReporting
.
Sintassi NUnit
[Test]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}
Sintassi MSTest
[TestMethod]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}
Test degli stati e dei flussi delle pagine
Questo caso di test chiama axe.Analyze()
per scansionare la pagina in diversi stati o diversi flussi della pagina, confronta i risultati con l'affermazione e crea un output di report iniziale:
Sintassi NUnit
[Test]
public void AccessibilityAnalyzeWithPageFlow()
{
var homeResults = axe.Analyze();
AxeReporting.CreateResultsOutput(homeResults, "home-page");
driver.FindElementByName("q").SendKeys("csun 2019 accepting new papers for presentations");
driver.FindElementById("go").Click();
var searchResults = axe.Analyze();
AxeReporting.CreateResultsOutput(searchResults,"search-results-page");
Assert.That(searchResults.Findings.Violations.Count, Is.EqualTo(0));
}
Sintassi MSTest
[TestMethod]
public void AccessibilityAnalyzeWithPageFlow()
{
var homeResults = axe.Analyze();
AxeReporting.CreateResultsOutput(homeResults, "home-page");
driver.FindElementByName("q").SendKeys("csun 2019 accepting new papers for presentations");
driver.FindElementById("go").Click();
var searchResults = axe.Analyze();
AxeReporting.CreateResultsOutput(searchResults, "search-results-page");
Assert.IsTrue(searchResults.Findings.Violations.Count == 0);
}
Test solo con regole specifiche
Questo test chiama axe.Analyze()
per scansionare la pagina con le regole specificate:
Sintassi NUnit
[Test]
public void AccessibilityAnalyzeWithSpecificRules()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("specifc rules")).WithRules("heading-order", "link-name");
var results = axe.Analyze();
System.Console.WriteLine(results);
AxeReporting.CreateResultsOutput(results, "specific-rules");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}
Test con regole specifiche disabilitate
Questo test richiede di eseguire la scansione con regole specifiche disabilitate: axe.Analyze()
Sintassi NUnit
[Test]
public void AccessibilityAnalyzeWithDisabledRules()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("disabled rules")).DisablingRules("heading-order", "link-name");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "disabled-rules");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}
Sintassi MSTest
[TestMethod]
public void AccessibilityAnalyzeWithDisabledRules()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("disabled rules")).DisablingRules("heading-order", "link-name");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "disabled-rules");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}
Test con un set di regole specifico
Questo test invoca axe.Analyze()
per scansionare la pagina con un set di regole specificato, in questo caso 508
:
Sintassi NUnit
[Test]
public void AccessibilityAnalyzeWith508Ruleset()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("specific ruleset")).WithRuleset("508");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "508-rules");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}
Sintassi MSTest
[TestMethod]
public void AccessibilityAnalyzeWith508Ruleset()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("specific ruleset")).WithRuleset("508");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "508-rules");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}
Testing a specific portion of the page (scoped test)
Il seguente test richiede axe.Analyze();
di escludere il contenuto associato all' #header
ID dal test e garantisce che il contenuto con l' #homecontent
ID venga testato:
Sintassi NUnit
[Test]
public void IncludingAndExcludingElements()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("excluding and including ruleset")).Excluding("#header").Including("#homecontent");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "Including-Excluding rules");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}
Sintassi MSTest
[TestMethod]
public void IncludingAndExcludingElements()
{
var axe = new AxeSelenium(driver, ReportConfiguration.GetDefault().UserAgent("chrome").UIState("excluding and including ruleset")).Excluding("#header").Including("#homecontent");
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "Including-Excluding rules");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}
Esempi scaricabili
Scarica ed esegui entrambi gli esempi di axe DevTools C# NUnit e MSTest:
Fare riferimento ai README.md
file presenti nelle cartelle del pacchetto scaricato attestCSharpNUnit/attestCSharpExample
e del pacchetto attestCSharpMSTest/attestMSTestExample
per i prerequisiti, le informazioni sull'integrazione, i casi di test inclusi e la configurazione dei report in ciascun pacchetto di esempio.