WordPressは世界的に利用されているCMSですが、テーマやプラグインを開発する際には「動作確認」を手動で行っているケースが多いのではないでしょうか。
しかし、規模が大きくなるとテスト漏れやヒューマンエラーのリスクが増大します。
そこで役立つのが 自動テスト環境 です。Docker上のWordPress環境にテスト機能を組み込むことで、効率的かつ確実に品質を担保できます。この記事では、PHPUnitやWP-CLIを使った自動テスト環境を構築する手順を紹介します。
手動テストの問題点は以下の通りです。
- テストの再現性が低い
- 環境依存の不具合を見逃しやすい
- 開発スピードが落ちる
自動テストを導入すれば、開発フローの中でコード変更ごとに即座に検証でき、安心してリリースできます。
Docker ComposeでWordPress環境を構築している場合、phpunit
をPHPコンテナに追加します。
docker-compose.yml
の例:
services:
wordpress:
image: wordpress:latest
volumes:
- ./wp-content:/var/www/html/wp-content
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: pass
MYSQL_ROOT_PASSWORD: root
phpunit:
image: php:7.4-cli
volumes:
- ./wp-content:/var/www/html/wp-content
working_dir: /var/www/html/wp-content
これで docker-compose run phpunit vendor/bin/phpunit
のように実行可能になります。
WordPressには便利なコマンドラインツール WP-CLI があります。これを使うと、テーマやプラグインに対するテストコードを効率的に実行できます。
例:テーマの有効化と単体テストの実行
wp theme activate my-theme
wp scaffold plugin-tests my-plugin
テスト環境がセットアップされたら、以下のようにテストを走らせられます。
docker-compose run phpunit vendor/bin/phpunit --testsuite=my-plugin
さらに一歩進めて、CI/CDに組み込むことで開発効率が大幅に向上します。
GitHub Actionsを利用すると、プルリクエストのたびに自動的にテストが実行されるようにできます。
.github/workflows/test.yml
の例:
name: WordPress Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
steps:
- uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
- run: composer install
- run: vendor/bin/phpunit
この設定を入れておけば、開発チーム全員が同じテスト環境で安心して開発を進められます。
この記事では、Docker上のWordPress環境に自動テスト機能を導入する方法を紹介しました。
テーマやプラグイン開発においては、テスト環境を整えることでバグの早期発見と開発効率の向上が期待できます。
今後はE2Eテスト(SeleniumやPlaywright)と組み合わせることで、より幅広い自動化が可能になります。
また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!