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 [ライブラリ名]
でインストールしてください。