Help us understand the problem. What is going on with this article?

selenium/pythonだってAzure DevOps pipelineでヘッドレス実行したいよね?そうだよね?

本投稿はAzure DevOps Advent Calendar 2019の21日目の投稿になります。

DevOpsを推進するうえで重要な要素となる自動化ですが、様々な方法が考えられますし、組織に応じて導入を進めていく必要があります。組織のカルチャーを無視してコンセンサスが得られない状況で独自のツールが乱立してそれが運用に与える効果を測ることができればいいなと考えているsasukehです。皆様いかがお過ごしでしょうか?

巷では、seleniumを使って自動化という記事がかなりの数上がってくるようになりました。その効果もあり、WebのE2Eテストをseleniumで自動化するというかたも増えてきているように思えます。Test Driven Developmentもめちゃくちゃ重要でソフトウェアを検証、計測することで、その開発が正しい方向を向いているかの指標となります。なので、TDD始めましょう!というのは簡単だけど、じゃあどうすればいいの?という目的はわかったけど、手段がわからないという状況にいる方もいるのでは?と思います。とくにAzure DevOpsを使ってSeleniumでUIのテスト自動化したいけど、やっぱりagentにGUIが必要で、CLIは向いてないよね?みたいな解釈をしているかたがいらっしゃいますが、実は、seleniumには、headless実行と呼ばれる、GUIなしで実行する方法があります。また、Screenshotも取れるので、ZipでまとめてBlobでアップロードする方法もあります。

今年の初め頃に社内のチームメンバーとハッカソンしたときのコードなりtipsがあったのですが、なかなか公開できていなかったので、今日これをまとめようと思います。

はじめる前に

pythonでseleniumを動かすTipsについては、Qiitaの記事をいくつか参考にすれば実行できると思いますので、今回は、Azure DevOps Agent(Microsoftが提供するHosted Agent)に対してSeleniumを実行する環境を整えるという内容にします。
また、Windows/Linux Agentでの例については、はまりどころが少ないと思うので、Mac Agentを使った例を紹介したいと思います。

pipelineでのタスクについて

Agentに対していくつかのパッケージをインストールする場合には、Bashのスクリプトを経由し、brewでパッケージをインストールすることができます。また、caskを使うことでchrome driverなどをインストールすることができます。

実際のタスクは、下記の図のように、Agent jobにbash scriptを追加します。
image.png

Bash Scriptは、Fileを指定する方法とインラインでスクリプトを用意する方法があります。
Azure DevOpsをブラウザーから使うユーザーは、ブラウザから編集することができ、ソースコード管理をしている場合、リポジトリから、このスクリプトを参照させることができます。

実際のスクリプトについて

echo "=============== Install apps ===============" # 手順1
brew update
brew tap caskroom/cask 
brew cask upgrade
brew cask install chromedriver
brew cask install xquartz 
brew cask install google-chrome
brew cask upgrade
brew cask list 

echo "=============== load X process ===============" # 手順2
sudo launchctl load -w /Library/LaunchAgents/org.macosforge.xquartz.startx.plist

echo "=============== install python dependency ===============" # 手順3
pip3 install -r $(System.DefaultWorkingDirectory)/_work/s/requirements.txt

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした