Cucumberテストを書く
Java用のAxe DevTools for Webを使用してCucumberでアクセシビリティテストを書く
Axe DevToolsを用いたCucumberの使用
前提条件
アクセシビリティテストを書いて結果を生成するには、Axe DevToolsでテストファイルを作成し、選択したSelenium WebDriverを事前にインポートおよび初期化しておく必要があります。まだこれを行っていない場合は、このガイドを読んで方法を確認してください。
設定
まず最初に、Axe DevToolsを設定に追加します
public class AppConfiguration {
@Bean
public static AxeWorld axeWorld() {
return new AxeWorld();
}
}次に、Axe DevToolsを使用するための必要なステップを追加します
public class StepDefinitions {
private AxeWorld axeWorld;
public StepDefinitions(AxeWorld axeWorld) {
this.axeWorld = axeWorld;
}
private WebDriver webDriver;
@Before
public void setup() throws IOException {
webDriver = new ChromeDriver();
axeWorld.setPage(new AxeDriver(webDriver));
}
@After
public void tearDown() throws Exception {
webDriver.quit();
}
@When("^I visit \"([^\"]*)\"$")
public void iVisit(String url) throws Throwable {
webDriver.get(url);
}
}テストの作成
ページをテストする前に、まずアクセスする必要があります。最初のステップは、Selenium WebDriverをインスタンス化してページにアクセスすることです
WebDriver webDriver = new ChromeDriver();
webDriver.get("'https://broken-workshop.dequelabs.com'");次に、Axe DevToolsのスキャンドライバオブジェクトを作成し、WebDriverを渡します
AxeDriver axeDriver = new AxeDriver(webDriver);最後に、ステップ定義にaxeDriverを含めます
// Inject AxeWorld into your step definitions.
public StepDefinitions(AxeWorld axeWorld) {
this.axeWorld = axeWorld;
}
// Provide the page to the Axe World
axeWorld.setPage(new axeDriver(webDriver));その後、ページのアクセシビリティをテストできます。現在、Axe DevToolsはCucumberを通じてPicoとSpringのテストをサポートしています。
使用方法
アクセシビリティCucumberステップ
The example accessibility checks below use Then the page should be axe clean, but all checks work interchangeably with Then the page should be audited for accessibility. The difference between these two is whether testing will fail on accessibility violations with Then the page should be axe clean, versus not fail with Then the page should be audited for accessibility.
axeのアクセシビリティCucumberステップを構築するには、基本ステップから始め、必要な句を追加します。以下の句はすべて組み合わせて使用できますが、指定された順序でなければなりません。
Then the page should be axe clean [including] [excluding] [according-to] [checking-rules/checking-only-rules] [skipping-rules]基本ステップ
基本ステップはCucumberステップの核心部分です。単体で完結しており、現在ロードされているページがアクセシブルであることを確認します。ページのアクセシビリティについて監査を行います。監査はアクセシビリティの問題をtarget/axe-report/accessibility-check.logに記録し、結果のJSON出力をtarget/axe-report/accessibility-check.jsonに作成します。
Then the page should be axe cleanThis step will cause test suite failures if accessibility violations are foundThen the page should be audited for accessibilityThis step will require handling of violations outside of test suite failures, as this step does not trigger the suite to fail if violations are found.スコープ設定
Axe DevToolsでは、アクセシビリティスキャンを包括的および排他的に設定できます。さらに、これらのスコープは相互に作用して、複雑なスコープのエンクレーブとエクスクレーブを作成できます。これらのスコープはCSSセレクタを基に動作します。
包含句
包含句within "#selector"はページ上でチェックする要素を指定します。選択されたスコープ内の要素のみがスキャンされます。包含句にはダブルクォートで囲まれた有効なCSSセレクタを含める必要があります。複合セレクタを使用して複数の要素を選択します。例:within "#header, .footer"
Then the page should be axe clean within "#selector"排除句
排除句excluding "#selector"は無視する要素を指定します。選択されたスコープ内の要素はスキャンされません。排除句にはダブルクォートで囲まれた有効なCSSセレクタを含める必要があります。複合セレクタを使用して複数の要素を選択します。例:excluding "#widget, .ad"
Then the page should be axe clean excluding "#selector"包含および排除の連鎖
包含句と排除句を連鎖させるには、セミコロン(;)または単語「しかし」を使用してそれらを分けます。
Then the page should be axe clean within "main"; excluding "aside"
Then the page should be axe clean within "main" but excluding "aside"ルール設定
Cucumber APIを使用することで、標準のルール設定を変更する方法は何通りかあります。タグを使用してグループごとにルールを選択したり、ルールIDごとにルールを個別に選択したりできます。
ルールタグ句
タグ句はページチェックで使用するアクセシビリティ標準(または標準群)を指定します。アクセシビリティ標準を名前(タグ)で指定します。複数の標準を指定する場合はカンマで区切ります。例:according to: wcag2a, section508
すべてのタグ名は文書化されていますに加えて、各タグに対応するルールの説明の完全なリスト
Then the page should be axe clean according to: best-practice追加ルール確認句
この句を使うことで、既存のルールに追加のルールを付け加えることができます。ルールIDによって単一のルールを指定するか、カンマで区切ってルールのリストを指定します。ルールとそのルールIDのリストについてはルールの文書を参照してください。セミコロン(;)または単語andを使用して、前の句からチェックルール句を分離します。
Then the page should be axe clean checking: color-contrastThen the page should be axe clean according to: wcag2a; checking: color-contrast
Then the page should be axe clean according to: wcag2a and checking: color-contrast特定のルールのみの確認句
チェックルール句に単語onlyを追加することで、ステップの意味を変えることができます。前述の通り、チェックルール句は実行する追加ルールを指定します。単語onlyを使用する場合は、指定されたルールのみがチェックされます。ルールとそのルールIDのリストについてはルールの文書を参照してください。セミコロン(;)または単語andを使用して、前の句からチェックルール句を分離します。
Then the page should be axe clean checking only: color-contrastルールスキッピング句
ルールスキッピング句は、既存のルール設定からスキップするルールを指定します。スキップするルールはカンマで区切られたルールIDで指定されます。ルールとそのルールIDのリストについてはルールの文書を参照してください。セミコロン(;)または単語andを使用して、前の句からチェックルール句を分離します。
Then the page should be axe clean skipping: color-contrastThen the page should be axe clean according to: wcag2a; skipping: color-contrast
Then the page should be axe clean according to: wcag2a but skipping: color-contrastルールセット選択句
Cucumber句を通してaxeDriver内のタグ付けされたルールセットにアクセスします。この機能を使用すると、ページのアクセシビリティを監査するためのルールセット (例: 508, wcag2, wcag2.1) を指定できます。
Then the page should be axe clean according to ruleset: wcag2.1使用量サービス
組織内でのAxe DevToolsの使用トレンドについての洞察を得る
デフォルトでは使用量サービスは無効化されており、デフォルトのURLはhttps://usage.deque.comです。
環境変数
これらの環境変数を使用すると、使用サービスの設定や報告イベントのプロパティを変更できます。
| 名前 | タイプ | 上書き可能 | 説明 |
|---|---|---|---|
AXE_DISTINCT_ID |
文字列 | — | ログイン中のユーザーに対して同一であるUUID識別子(再生成されない限り) |
AXE_METRICS_URL |
文字列 | — | REST使用エンドポイントのURL |
AXE_TRACK_USAGE |
ブール値 | — | 使用サービスのレポートを有効にします(デフォルトはfalseです) |
AXE_APPLICATION |
文字列 | false | アクセシビリティエラーのチェックに使用されたアプリケーション |
AXE_DEV_INSTANCE |
ブール値 | true | このイベントがソフトウェア開発者の行動によるものかを示します。開発またはテスト中に記録されたイベントをマークし、後で削除するのに便利です。 |
AXE_DEPARTMENT |
文字列 | true | 組織内でのユーザーの部署 |
AXE_KEYCLOAK_ID |
文字列 | false | ユーザーのKeycloak ID |
AXE_LOGGED_IN |
ブール値 | false | テスト対象アプリケーションにユーザーがログインしているかどうかを記録します |
AXE_ORGANIZATION |
文字列 | true | ユーザーの組織 |
AXE_SESSION_ID |
文字列 | false | ユーザーのセッションを識別するUUID |
AXE_USER_ID |
文字列 | false | 特定のユーザーの名前やログインIDなどのアイデンティティ |
AXE_USER_JOB_ROLE |
文字列 | false | ユーザーの役割 |
AXE_USER_STATUS |
文字列 | false | ユーザーに紐づけたいステータス情報 |
次のステップ
Axe DevTools のスキャン結果をさらに活用するには、レポート作成などのAxe DevTools Java Selenium パッケージドキュメントを参照してください。
トラブルシューティング
アクセシビリティテストの設定に関して問題が発生した場合は、直接 Deque 担当者に連絡するか、サポートデスク、またはメールでのお問い合わせでお問い合わせください。お客様のアクセシビリティテストをスムーズに始めるお手伝いをいたします。
