experience-lwc-accessibility-jest-run について
Lightning Web Components の Sa11y アクセシビリティテストを実行するスキルです。Salesforce Core では Bazel、それ以外では単独の Jest を使い、開発者が失敗テストの指定や修正のローカル確認を行えます。
主な機能
- 01Core 向け Bazel テスト手順
- 02単独 Jest テスト手順
- 03指定テストファイルの実行
- 04Sa11y 用 Jest 設定
活用シーン
- 01プッシュ前の LWC 修正確認
- 02既知の失敗 Sa11y テストの実行
- 03単独アクセシビリティテストの設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill experience-lwc-accessibility-jest-runインストール後、Claude Code で/experience-lwc-accessibility-jest-runを入力して読み込まれたか確認します。
同梱ファイルassets/jest.config.jsassets/sa11y-jest-setup.js
詳細
LWC アクセシビリティ Jest テストの実行
Lightning Web Components で Sa11y アクセシビリティユニットテストを、次のいずれかの方法で実行します。
- Core(Bazel) —
WORKSPACEファイルが存在する場合。 - スタンドアロン(Jest) —
WORKSPACEファイルが存在しない場合。
Selenium レベルの再現、GUS A11yBug の取り込み、その他の Salesforce 内部専用フローは、このスキルの対象外です。テストを実行せずにソースコードレベルで WCAG をレビューする方法については、experience-accessibility-validate を参照してください。
このスキルを使用する場面
- 修正をプッシュする前に、ローカルでアクセシビリティユニットテスト(Sa11y Jest)を実行したい場合。
- 失敗するテストファイルのパス(A11yBug の
Test_Names__cなど)が分かっており、そのファイルを直接指定したい場合。 - アクセシビリティの修正を反復しており、できるだけ早く合否を確認したい場合。
前提条件
- Bazel Jest テストの場合:Salesforce Core のビルド環境(
WORKSPACEファイルが存在すること)。 - スタンドアロン Jest テストの場合:
@sa11y/jestがインストールされ、設定されていること。
ワークフロー
環境に応じて方法を選択してください。Salesforce Core のビルド環境ではない場合は、Core ワークフローに言及しないでください。
Core(Bazel)
WORKSPACE ファイルが存在する場合は、このモードを使用してください。基本コマンドは次のとおりです。
{coreRootPath}/tools/bazel test [TARGET] --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
{coreRootPath} を Core リポジトリのルートに、{moduleName} をモジュール名に、{relativePath} を .test.js 拡張子を除いたテストファイルのパスに置き換えてください。
ターゲットとパスを確認するには、次を実行します。
find {coreRootPath}/{moduleName} -name "*.test.js" -type f
{coreRootPath}/tools/bazel query "tests(//{moduleName}:*)"
コンポーネントテストは通常、modules/{componentDir}/{componentName}/__tests__/ の下にあります。
失敗するテストパスが分かっている場合は、単一ファイルのターゲットを優先してください。
{coreRootPath}/tools/bazel test //{moduleName}:{relativePath} --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
特定のテストが分からない場合は、モジュール内のすべての Sa11y Jest テストを実行します。
{coreRootPath}/tools/bazel test //{moduleName}:sa11y_jest_test --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
同じコマンドに複数のモジュールターゲットを指定できます。モジュール内のテストを絞り込むには、--test_arg=--testMatch="**/{modulePath}/**" を追加してください。
便利なオプション:
- スナップショットを更新する:
--test_arg="--updateSnapshot" - テスト結果のキャッシュを無効にする:
--cache_test_results=no - レンダリング済み HTML を保存する:
--test_env=SA11Y_ENABLE_RENDERED_DOM_SAVE=1 --test_env=SA11Y_RENDERED_DOM_SAVE_PATH=sfdc-test/unit/javascript/htdocs/sa11y/jest
EPERM エラーを避けるため、レンダリング済み DOM の保存先には sfdc-test/unit/javascript/htdocs/sa11y/jest を使用してください。
スタンドアロン(Jest)
WORKSPACE ファイルが存在しない場合は、このモードを使用してください。すべてのアクセシビリティテストを実行します。
スタンドアロンモードでは、SA11Y_* 環境変数を前置しないでください。@sa11y/jest はプロジェクトの Jest セットアップを通じて有効になります。
npm test -- --testMatch="**/*.accessibility.test.js"
または、特定のファイルを指定します。
npm test -- src/components/MyComponent/__tests__/MyComponent.accessibility.test.js
ユーザーが指定したファイル名またはパスを使用してください。指定されたテストが現在のディレクトリにある場合は、パスを作り出さず、ファイル名のみをそのまま使用してください。
その他の便利なオプションには、--coverage、--updateSnapshot、--watch、--verbose があります。名前付きのテストを指定するには、npm test -- --testNamePattern="MyComponent accessibility" を使用してください。
Jest が jsdom 環境を使用し、プロジェクトの @sa11y/jest セットアップファイルを読み込むようにしてください。バンドルされている assets/jest.config.js テンプレートをプロジェクトの Jest 設定にコピーまたは適用し、assets/sa11y-jest-setup.js を test/setup/sa11y-setup.js にコピーしてください。プロジェクトに Jest 設定がすでにある場合は、関係のない設定を上書きせず、関連する設定を統合してください。
上記の SA11Y_* 変数は Core/Bazel 専用です。Bazel コマンドにはすでに含まれています。
回答の範囲
ユーザーが求めた内容だけに回答してください。要求されたコマンドと、関連する終了コードの意味を提示してください。ユーザーが求めていない限り、ウォッチ、カバレッジ、スナップショット更新、HTML 保存などの別の方法を追加しないでください。
想定される終了コード
- Bazel:
0はすべてのテストに合格、3はテスト失敗、1はビルドまたはコマンドの失敗を意味します。 - Jest:
0はすべてのテストに合格、1はテスト失敗またはエラー発生を意味します。
検証チェックリスト
- Sa11y Jest の実行が完了し、合否が明確に示されていること(Bazel の場合は終了コード 0 または 3、Jest の場合は終了コード 0 または 1)。
- スナップショットを意図的に更新した場合、新しいスナップショットが修正とともにコミットされていること。
トラブルシューティング
- Bazel テストが「not found」になる — ターゲットのパスが間違っています。
{relativePath}から.test.js拡張子を削除してください。 - HTML の保存が EPERM で失敗する — 指定された保存先
sfdc-test/unit/javascript/htdocs/sa11y/jestを使用してください。 - スタンドアロンテストが実行されない — テストの命名パターン、Jest の設定、
@sa11y/jest依存関係、およびjsdom環境を確認してください。