GitHub Actions、GitLab CI、Jenkins での自動実行

SeleniumのテストをCI/CDパイプラインに統合することで、コードの変更に伴う回帰テストや動作確認を自動化し、開発効率と品質の向上を図ることができます。以下では、代表的なCI/CDツールであるGitHub Actions、GitLab CI、JenkinsでSeleniumテストを自動実行する方法について詳しく説明します。


1. GitHub Actions による Selenium テストの自動実行

GitHub ActionsはGitHub上でCI/CDワークフローを構築できる仕組みです。以下のようにYAMLファイルで設定を記述します。

主な特徴

  • GitHub上で完結する

  • Linux/Windows/macOS環境に対応

  • matrixによる複数ブラウザや複数Python/Javaバージョンでの並列実行が容易

例:Python+Selenium のワークフロー定義

yaml
name: Selenium Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest services: selenium: image: selenium/standalone-chrome ports: - 4444:4444 steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: pip install -r requirements.txt - name: Run Selenium tests run: pytest tests/ env: SELENIUM_REMOTE_URL: http://localhost:4444/wd/hub

2. GitLab CI による Selenium テストの自動実行

GitLab CI/CD.gitlab-ci.ymlファイルでパイプラインを定義します。DockerイメージとSeleniumコンテナを組み合わせることで簡単に実行可能です。

主な特徴

  • GitLabリポジトリと統合

  • GitLab Runnerによる柔軟な実行環境設定

  • Docker Composeでのブラウザ環境構築も可能

例:Java+JUnit+Selenium のCI設定

yaml
stages: - test selenium_tests: stage: test image: maven:3.9-eclipse-temurin-17 services: - name: selenium/standalone-chrome alias: selenium script: - mvn test -Dselenium.remote.url=http://selenium:4444/wd/hub

3. Jenkins による Selenium テストの自動実行

Jenkinsは自動化に特化したサーバ型CI/CDツールで、プラグインによる拡張性が高く、Seleniumとも高い親和性があります。

主な特徴

  • ローカル/クラウド両対応

  • Selenium Gridと連携して分散ブラウザテストが可能

  • Jenkinsfile によるパイプライン定義で柔軟な制御

例:Jenkinsfile を使ったパイプライン(Gradle + Selenium)

groovy
pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/example/selenium-tests.git' } } stage('Build & Test') { steps { sh './gradlew clean test -Dselenium.remote.url=http://localhost:4444/wd/hub' } } } }

JenkinsではSeleniumサーバを別途起動する必要があるため、以下のような方法があります:

  • JenkinsノードにSelenium Gridを常駐させる

  • Docker PluginやKubernetes PluginでSeleniumコンテナを動的に起動


まとめ

CIツール メリット 特記事項
GitHub Actions GitHubとの連携が容易、マトリクス実行に強い .github/workflows/でYAML記述
GitLab CI Dockerベースでの実行に強い .gitlab-ci.ymlで定義
Jenkins 高い柔軟性と拡張性 Jenkinsfileでパイプライン制御

CI/CDツールを適切に活用することで、Seleniumテストを自動化・高速化し、品質保証のプロセスを効率化できます。テスト対象やインフラ環境に応じて、最適なCI/CDソリューションを選択することが重要です。

ChatGPT4o 生成日:2025/06/21