Tests für Axe DevTools for Web in C# schreiben
Wie man effektive Tests für Barrierefreiheit mit Axe DevTools for Web für C# schreibt
Dieser Leitfaden bietet Beispieltests für sowohl NUnit als auch MSTest. Alle Tests verwenden die AxeReporting-Klasse, um anfängliche Berichterstattungsergebnisse zu erstellen. Für weitere Informationen über die Axe DevTools-Testklassen besuchen Sie die C# API-Referenz.
Ein grundlegender Standardtest
Der folgende Test ruft axe.Analyze() auf, um die Seite zu analysieren, vergleicht die Ergebnisse mit der Assertion und erstellt anfängliche Berichtsausgaben unter Verwendung der AxeReporting-Klasse.
NUnit-Syntax
[Test]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}MSTest-Syntax
[TestMethod]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}Seitenzustände und -abläufe testen
Dieser Testfall ruft axe.Analyze() auf, um die Seite in verschiedenen Zuständen oder verschiedenen Abläufen der Seite zu scannen, vergleicht die Ergebnisse mit der Assertion und erstellt anfängliche Berichtsausgaben:
NUnit-Syntax
[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));
}MSTest-Syntax
[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);
}Testen mit nur spezifischen Regeln
Dieser Test ruft axe.Analyze() auf, um die Seite mit angegebenen Regeln zu scannen:
NUnit-Syntax
[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));
}Testen mit deaktivierten spezifischen Regeln
Dieser Test ruft axe.Analyze() auf, um die mit deaktivierten spezifischen Regeln zu scannen:
NUnit-Syntax
[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));
}MSTest-Syntax
[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);
}Testen mit einem spezifischen Regelset
Dieser Test ruft axe.Analyze() auf, um die Seite mit einem angegebenen Regelset zu scannen, in diesem Fall 508:
NUnit-Syntax
[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));
}MSTest-Syntax
[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);
}Testen eines spezifischen Seitenbereichs (abgegrenzter Test)
Der folgende Test ruft axe.Analyze(); auf, um den mit der #header ID verbundenen Inhalt vom Test auszuschließen und stellt sicher, dass der Inhalt mit der #homecontent ID getestet wird:
NUnit-Syntax
[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));
}MSTest-Syntax
[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);
}