dockpack.base_grid
ベースグリッド
Docker Compose で動作する Selenium Grid です。
目的は、ウェブ開発者が一般の人々のためにウェブサイトを機能させる手助けをすることです。
dockpack.base_grid
は Selenium グリッドをデプロイする Ansible ロールで、ローカルモードで様々なウェブブラウザをシミュレートできるようにいくつかの追加機能を提供します。
企業でよく見られる状況として、Windows 用の仮想デスクトップ(Citrix や VMWare Horizon)や、Red Hat Enterprise 7 を実行しているオンプレミスサーバーがあり、そこでは RedHat がサポートしている Docker バージョン(docker-latest 1.13)しか実行できません。
コンテナを実行するためには、Sonatype Nexus のような内部 Docker レジストリを利用し、すべてのインターネットトラフィックがプロキシされる必要があります。
クロスブラウザテストを自動化したい場合、仮想デスクトップや社内ビルドサーバー(Jenkins)から接続できる Selenium グリッドが必要です。この docker-compose グリッドは、古いバージョンと新しいバージョンの Firefox および Chrome を実行します。これらの古いバージョンは現代の企業ITシステムには存在しませんが、まだ使用している人もいます。Microsoft は、さまざまな古いバージョンの Internet Explorer の VM イメージを公開しており、Vagrant を使用してこれらをローカルグリッドに追加できます。
CentOS 7.5
この Ansible ロールは、私の redesign/centos7 Vagrant ボックスでテストされました。Packer のソースは こちら で入手できます。
vagrant init redesign/centos7
ロール変数
defaults/main.yml
ファイルには、主に異なるバージョン用に変更できる変数があります。サポートされているブラウザバージョンについては、こちら を参照してください。このロールは、vars および defaults に記載されたイメージを持つ Docker と Sonatype Nexus のような(ローカル)レジストリの存在を前提としています。このレジストリは、必要に応じて group_vars で selenium_registry
として設定できます。
テスト
このようなテストインフラストラクチャを維持することは複雑な作業であるため、このリポジトリには、今後(2019年)対処する必要があるさまざまなことをシミュレートするためのツールがあります。以下の問題に対応できます:
- Python 2.7 から Python 3 への移行
- Ansible 2.6 から 2.7 への移行など
要件
Python pip が利用可能である必要があります。Tox と Molecule を使って複数の Ansible バージョンをテストします。
pip install requirements.txt
オンプレミス Docker レジストリ
これらのオリジナルをダウンロードし、タグを付けてローカルレジストリにプッシュできます。
docker pull selenium/node-firefox:3.141.59-iron
docker pull selenium/node-firefox:3.12.0-cobalt
docker pull selenium/node-chrome:3.141.59-iron
docker pull selenium/node-chrome:3.8.1-erbium
docker pull selenium/hub:3.141.59-iron
docker images
docker tag ...
docker push ...
Vagrant テスト
Microsoft の VM をダウンロードすることで、7 バージョンの Internet Explorer を使用できます。このスクリプトはダウンロード、解凍、vagrant box add
を行い、Vagrantfile
を使用できるようにします。
cd vagrant
./windows_boxes.py
vagrant up IE8Win7
vagrant up IE9Win7
vagrant up IE10Win7
vagrant up IE11Win7
vagrant up IE11Win81
vagrant up MSEdgeWin10
Mac ツール
私は Mac 上で Vagrant と VirtualBox を使ってこれをテストしています。Brewfile
に含まれるすべての Mac ツールを以下のコマンドでインストールします。
brew bundle
このロールと相性の良いロール
- dockpack.base_goss
- dockpack.base.docker
Tox テスト
Tox が使用されているため、全体がテストされます。
tox
例のプレイブック
ユーザーにとって便利なように、ロールの使い方の例(例えば、変数をパラメータとして渡す方法)を含めると良いでしょう。
- name: selenium のプロビジョニング
hosts: testsystem
become: yes
roles:
- { role: dockpack.base_grid, tags: 'selenium' }
ライセンス
MIT
作者情報
Bas Meijer
@bbaassssiiee