C#でAxe DevTools for Webのテストを書く方法
Axe DevTools for Webを使用したアクセシビリティの効果的なテストの書き方
Not for use with personal data
このガイドはNUnitとMSTestの両方のテスト例を提供します。すべてのテストはAxeReportingクラスを使用して初期レポート結果を生成します。Axe DevToolsのテストクラスについての詳細は、C# APIリファレンスを訪れてください。
基本的なデフォルトテスト
以下のテストは、ページを解析するためにaxe.Analyze()を呼び出し、その結果をアサーションと比較し、AxeReportingクラスを使用して初期レポートを出力します。
NUnit構文
[Test]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.That(results.Findings.Violations.Count, Is.EqualTo(0));
}MSTest構文
[TestMethod]
public void AccessibilityAnalyzeAsync()
{
var results = axe.Analyze();
AxeReporting.CreateResultsOutput(results, "basic analyze");
Assert.IsTrue(results.Findings.Violations.Count == 0);
}ページの状態とフローのテスト
このテストケースは、ページの異なる状態またはフローをスキャンするためにaxe.Analyze()を呼び出し、その結果をアサーションと比較し、初期レポートを出力します。
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));
}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);
}特定のルールのみでのテスト
このテストは、指定されたルールでページをスキャンするためにaxe.Analyze()を呼び出します。
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));
}特定のルールを無効にしたテスト
このテストは、特定のルールを無効にしてページをスキャンするためにaxe.Analyze()を呼び出します。
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));
}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);
}特定のルールセットでのテスト
このテストは、指定されたルールセット、つまり508でページをスキャンするためにaxe.Analyze()を呼び出します。
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));
}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);
}ページの特定部分のテスト(スコープされたテスト)
以下のテストは、#headerIDに関連するコンテンツをテストから除外し、#homecontentIDを持つコンテンツがテストされることを確認するためにaxe.Analyze();を呼び出します。
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));
}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);
}