WordPressのBDDテストをWindows7で実行する方法

WordPressでBDDテストを行う仕組みをvccwの作者である宮内さんが紹介されていました。 WordPressに対してBDDなテストを行うためのボイラープレートをつくった
早速やってみようとしたところ、Windows7だと動作させるまでに数々の罠がありました。なんとか動作させることができたのでご紹介します。
かなり自己流ですので、自己責任でお願いします。公式なやり方知ってる方、コメント等で教えてください。
ハマったポイント
- 最初、vagrant sshした中で作業していて、スクショに日本語が映らなかった
- git cloneできない
- Composer installエラーで止まる
- npm install動かない
- npm testでspawn ENOENTエラー
- ようやく動いたと思ったらスクリーンショットが撮影できない
数々の罠にハマりましたが、以下の手順で解消できました。
事前準備
PCに以下の環境が必要です。
- vccw3
- PHP5.6以上
- Composer1.2以上
- git
- node
- npm
動作確認環境
- Windows7 Pro 64bit
- vccw 3.13.0
- PHP 7.0.27
- Composer 1.6.2
- node 8.9.4
- npm 4.0.5
- GitBashにてコマンド操作
公式インストール手順
まずは公式の手順をご紹介します。vccwの環境を起動(vagrant up)しておいてください。また、各作業は(vagrant sshしないで)ホストPCにて作業してください。
bash等のコマンドプロンプトで、vccwのvagrantfileがあるディレクトリに移動し、
- git clone git@github.com:vccw-team/boilerplate-behat-wordpress.git
- cd boilerplate-behat-wordpress
- composer install
- npm install
と、順にコマンドを実行します。うまくいけば、npm testコマンドでサンプルのテストが実行されます。Macの場合、これだけでいけました。
非公式インストール手順
公式手順との差異を交えながら説明します。
git clone
これは公式どおりです。ただし、githubにアカウント登録し、SSHキーの設定が済んでいることが前提です。済んでいない場合、gitがインストールされていれば、
git clone https://github.com/vccw-team/boilerplate-behat-wordpress.git
でいけます。
cd boilerplate-behat-wordpress
これも公式どおりです。
composer install
composer installの前に、phpのcurlを有効にしておく必要があります。
php.iniの以下部分のコメントアウト(先頭;)を外してください。
;extension=php_curl.dll
その後、composer installを実行してください。
npm install
npm installの前に、boilerplate-behat-wordpress/package.jsonを編集する必要があります。
以下のプロパティを、
"test": "/usr/bin/env node bin/run-tests.js"
このように書き換えてください。
"test": "set NODE_ENV=production&&node bin/run-tests.js"
その後、npm installを実行してください。
npm test
npm testの前に、以下2つのファイルを編集する必要があります。
- boilerplate-behat-wordpress/bin/run-tests.js
- boilerplate-behat-wordpress/vendor/vccw-team/wordpress-extension/src/Context/WordPressContext.php
run-tests.jsの以下部分を、
const behat = spawn( 'vendor/bin/behat', argv, { stdio: "inherit" } )
このようにフルパス+.batに書き換えてください。
const behat = spawn( 'C:/Users/user/dev/vccw/boilerplate-behat-wordpress/vendor/bin/behat.bat', argv, { stdio: "inherit" })
WordPressContext.phpの493行目辺りの以下部分を、
$path = str_replace( "~", posix_getpwuid(posix_geteuid())['dir'], $path );
このように書き換えてください。
$path = realpath( '' ) . '/' . $path ;
最後に、behat.yml.distをコピーしてbehat.ymlにリネーム。中身のbase_urlをvccwのURL(デフォルトはhttp://vccw.test)に書き換えてください。
その後、npm testでテストが実行されるはずです。初回テスト時はWindowsのファイアーウォールを許可する必要があるかもしれません。

その他ハマりどころ
npm installでエラーが発生する場合、node環境の入れ直し等、試してみてください。
BDDテストとは?
ビヘイビア駆動開発(振る舞い駆動開発)のことで、WEBの場合、主にブラウザで実行するシナリオを定義し、テスト・開発を進めるものです。 かんたんな記述でブラウザの動作を規定できて、コマンドを実行するだけでブラウザが動いて、コマンド上でテスト結果が確認できます。
さらにスクショも取ることができます。ブラウザをリロードしてフォームに手入力してボタンをクリックして、というめんどくさい作業から解放される素晴らしい仕組みです。
まとめ
動作させるまでに丸1日かかりました。Windows用のbatファイルが用意されている辺り、Windowsにも対応してそうなのですが、結果的に用意されている設定やソースを書き換えるハメになりました。
書き換えた部分は主にMacやLinux向けの文法である部分です。(会社のPCがMacだったらな~)
私のようなWindowsユーザーにもWordPressのBDDテストが導入できますように。宮内さん、素敵な仕組みの提供ありがとうございます。