mcpField
E
experience-lwc-accessibility-jest-run

experience-lwc-accessibility-jest-run

github.com/forcedotcomテスト・品質1.1k931 回インストール1 日前に更新
リポジトリ

experience-lwc-accessibility-jest-run について

Lightning Web Components の Sa11y アクセシビリティテストを実行するスキルです。Salesforce Core では Bazel、それ以外では単独の Jest を使い、開発者が失敗テストの指定や修正のローカル確認を行えます。

主な機能

  1. 01Core 向け Bazel テスト手順
  2. 02単独 Jest テスト手順
  3. 03指定テストファイルの実行
  4. 04Sa11y 用 Jest 設定

活用シーン

  1. 01プッシュ前の LWC 修正確認
  2. 02既知の失敗 Sa11y テストの実行
  3. 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 環境を確認してください。

コメント