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があるディレクトリに移動し、

  1. git clone git@github.com:vccw-team/boilerplate-behat-wordpress.git
  2. cd boilerplate-behat-wordpress
  3. composer install
  4. 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テストが導入できますように。宮内さん、素敵な仕組みの提供ありがとうございます。

参考サイト

スポンサーリンク

この記事が気に入っていただけたらシェアお願いします。励みになります。
prev WordPressのアーカイブページで表示件数を絞りページングさせない方法 next WordPressエンジニア向け入門その1、ページが表示されるまでの仕組み

スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です