WordPressに対してBDDテストを実行するコードを試してみた

前回公開したGitHubから自動デプロイできるようになったWordPressプラグインにPHPUnitテストをかませてみたから早くも新たなテストを宮内さんが作成してらしたので試してみました。

A boilerplate for Testing WordPress with Behat

宮内さんの記事はこちら→WordPressに対してBDDなテストを行うためのボイラープレートをつくった

ウインドウのサイズを1440pxにする→WordPressにログインする→トップページに行く→スクショ撮る→wp-admitnに行く→スクショ撮る→ウインドウサイズを320pxにする→・・・というテストだそうです。

composer install でコケた

手順通りにgit cloneはしたんですが、composer installを叩いたらこんなエラーがでました。

[text]
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Installation request for doctrine/instantiator 1.1.0 -> satisfiable by doctrine/instantiator[1.1.0].
– doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (5.6.30) does not satisfy that requirement.
Problem 2
– Installation request for phpunit/php-token-stream 2.0.0 -> satisfiable by phpunit/php-token-stream[2.0.0].
– phpunit/php-token-stream 2.0.0 requires php ^7.0 -> your PHP version (5.6.30) does not satisfy that requirement.
Problem 3
– doctrine/instantiator 1.1.0 requires php ^7.1 -> your PHP version (5.6.30) does not satisfy that requirement.
– phpunit/phpunit-mock-objects 3.4.4 requires doctrine/instantiator ^1.0.2 -> satisfiable by doctrine/instantiator[1.1.0].
– Installation request for phpunit/phpunit-mock-objects 3.4.4 -> satisfiable by phpunit/phpunit-mock-objects[3.4.4].
[/text]

インストールされてるPHPのバージョンが低い・・・ような気がしますね!というわけで、内蔵しているPHPのバージョンをアップしてみます。

この記事を参考にしてPHPのバージョンアップをしました。

今回インストールしたのはPHP7.1なので、homebrew/php/php70のところをhomebrew/php/php71にしました。

これでcomposer installを改めて叩くと、ちゃんとインストール完了しました!

(追記)PHP5.6でも動くようにしてくださったそうです!なので今からトライする人はきっとコケない!

npm test でテストを走らせる

npm installもすればあとはテスト!npm testを叩くと、ちゃんとテストが走り始めました・・・!!

[text]
> wordpress-behat@1.0.0 test /path-to-vccw/boilerplate-behat-wordpress
> /usr/bin/env node bin/run-tests.js

Feature: Example Features

Scenario: Login as the "administrator" role # features/sample.feature:3
When I login as the "administrator" role # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::login_as_the_role()
And I am on "/wp-admin/" # Behat\MinkExtension\Context\MinkContext::visit()
Then I should see "Dashboard" # Behat\MinkExtension\Context\MinkContext::assertPageContainsText()

Scenario: Take a screenshot # features/sample.feature:9
Given the screen size is 1440×900 # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::set_window_size()
And I login as the "administrator" role # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::login_as_the_role()
When I am on "/" # Behat\MinkExtension\Context\MinkContext::visit()
Then take a screenshot and save it to "_out/1440×900.png" # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::take_a_screenshot()
When I am on "/wp-admin/" # Behat\MinkExtension\Context\MinkContext::visit()
Then take a screenshot and save it to "_out/1440×900-wp-admin.png" # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::take_a_screenshot()
Given the screen size is 320×400 # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::set_window_size()
When I am on "/" # Behat\MinkExtension\Context\MinkContext::visit()
Then take a screenshot and save it to "_out/320×400.png" # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::take_a_screenshot()
When I am on "/wp-admin/" # Behat\MinkExtension\Context\MinkContext::visit()
Then take a screenshot and save it to "_out/320×400-wp-admin.png" # VCCW\Behat\Mink\WordPressExtension\Context\WordPressContext::take_a_screenshot()

2 個のシナリオ (2 個成功)
14 個のステップ (14 個成功)
0m11.83s (10.85Mb)
[/text]

ちゃんと_outディレクトリの中にスクリーンショット入ってました!!
次の目標はこれでWP view login onlyのテストだな・・・!

boilerplate-behat-wordpress/features/sample.feature にあるbehatのファイルは私でも書けそうだなって気持ちがする・・・( ˘ω˘ )