【WordPress】Docker上のWordPressで自動テスト環境を構築する方法

はじめに

WordPressは世界的に利用されているCMSですが、テーマやプラグインを開発する際には「動作確認」を手動で行っているケースが多いのではないでしょうか。
しかし、規模が大きくなるとテスト漏れやヒューマンエラーのリスクが増大します。

そこで役立つのが 自動テスト環境 です。Docker上のWordPress環境にテスト機能を組み込むことで、効率的かつ確実に品質を担保できます。この記事では、PHPUnitやWP-CLIを使った自動テスト環境を構築する手順を紹介します。

なぜWordPressに自動テストが必要か

手動テストの問題点は以下の通りです。

  • テストの再現性が低い
  • 環境依存の不具合を見逃しやすい
  • 開発スピードが落ちる

自動テストを導入すれば、開発フローの中でコード変更ごとに即座に検証でき、安心してリリースできます。

Docker環境にPHPUnitを導入する

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 のように実行可能になります。

WP-CLIを使ったテーマ・プラグインのテスト実行

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ツール(GitHub Actions)との連携

さらに一歩進めて、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の仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!

コメントを残す

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