axe-core(アックスコア)を利用したアクセシビリティ自動検証機能を提供します。
![]()
具体的には、PHPを実行すると URLモデルから MIMEタイプがtext/htmlであるURLを収集し、1URLずつ Node.jsのプログラムに渡します。
Node.jsのプログラムはヘッドレスブラウザを起動して指定 URLのレンダリングを行い、アクセシビリティ検証のためのスクリプトを実行します。
axe_core_resultモデル(A11Y検証結果)のオブジェクトとして保存されます。nvmやnodenvを利用して Node.jsをインストールしてください。
/usr/local/binなどログインユーザー以外(apacheユーザー等)でもアクセス可能なディレクトリにインストールしてくださいconfig.jsonに環境変数node_appを追加し、nodeへのパスを記述します。(パスはコマンドwhich nodeで確認します。)以下に記述例を示します。 axerunner_module_pathに指定したディレクトリにpowercmsx/plugins/AxeRunner/node_app/a11ycheckをコピー、ディレクトリへ移動し、npm iコマンドで依存モジュールのインストールを実施します。
"config_settings": {
"php_binary": "/usr/bin/php",
"axerunner_list_limit" : 10,
"axerunner_module_path" : "/var/www/powercmsx/support/a11ycheck",
"node_path": "/usr/local/nvm/versions/node/v16.15.1/bin/node"
}
※ axerunner_list_limitには、自動検証後のサマリレポートに表示する上位の項目の件数を指定します。初期値は 10です。
システムプラグイン設定で、以下の設定を行ってください。
スケジュールタスクとは別に cronで指定日時にアクセシビリティ検証を実行するように設定することもできます。以下に記述例を示します。
1 3 * * 6 apache cd /var/www/powercmsx && php ./plugins/AxeRunner/tools/axeRunner.php
--workspace_idsでスペースの IDを指定できます(カンマ区切りの数字)。--urlinfo_idsで URLオブジェクトのIDを指定できます(カンマ区切りの数字)。--only_newerで未検証の URLのみを対象にすることができます。--silenceで標準出力をストップします。1.1.1,1.2.1)。※ メールのテンプレートは、powercmsx/plugins/plugins/AxeRunner/tmpl/email/axe_core_result.tmplが使われます。
※ メールテンプレートのカスタマイズについては メールテンプレートのカスタマイズドキュメントを参照してください。
node_path required.エラーが出るPHP Fatal error: Uncaught Exception: App Property `node_path` required. in /var/www/powercmsx/plugins/AxeRunner/tools/axeRunner.php:121
Stack trace:
#0 /var/www/powercmsx/plugins/AxeRunner/tools/axeRunner.php(177): AxeRunnerWorker->exec_axe_core()
#1 /var/www/powercmsx/plugins/AxeRunner/tools/axeRunner.php(183): AxeRunnerWorker->run(Array)
#2 {main}
thrown in /var/www/powercmsx/plugins/AxeRunner/tools/axeRunner.php on line 121
本ドキュメント「準備」の中の「環境変数の設定」を参照し、環境変数の設定をしてください。
npm iで依存モジュールのインストールを行う際にエラーが出る# npm i npm ERR! code 127 npm ERR! path /var/www/powercmsx/plugins/AxeRunner/node_app/a11ycheck/node_modules/puppeteer npm ERR! command failed npm ERR! command sh -c node install.js npm ERR! sh: node: コマンドが見つかりません
インストールの途中でnodeへのパスが見つからないことが原因です。nodeのインストール・パス設定を見直してください。
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module 'puppeteer'
Require stack:
- /var/www/powercmsx/plugins/AxeRunner/node_app/a11ycheck/app.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object. (/var/www/powercmsx/plugins/AxeRunner/node_app/a11ycheck/app.js:1:19)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/var/www/powercmsx/plugins/AxeRunner/node_app/a11ycheck/app.js'
]
}
本ドキュメント「準備」の中の「依存モジュールのインストール」を参照し、インストールを実行してください。
Error: Failed to launch the browser process! var/www/powercmsx/plugins/AxeRunner/node_app/a11ycheck/node_modules/puppeteer/.local-chromium/linux-1002410/chrome-linux/chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory
OSにライブラリのインストールが必要です。yum whatprovides libatk-bridge-2.0.so.0等でどのライブラリが必要かを特定し、yum install [ライブラリ名]でインストールしてください。