selenium/python도 Azure DevOps pipeline에서 헤드리스를 실행하고 싶습니까? 맞지?

이 게시물은 Azure DevOps Advent Calendar 2019의 21 일째 게시물입니다.

DevOps를 추진하는데 있어서 중요한 요소가 되는 자동화입니다만, 여러가지 방법이 생각될 수 있고, 조직에 따라 도입을 진행해 나갈 필요가 있습니다. 조직의 문화를 무시하고 컨센서스를 얻을 수 없는 상황에서 독자적인 툴이 난립해 그것이 운용에 주는 효과를 측정할 수 있으면 좋다고 생각하고 있는 sasukeh입니다. 여러분 어떻게 지내십니까?

글쎄, selenium을 사용하여 자동화라는 기사가 상당히 많이 올라 왔습니다. 그 효과도 있어 웹의 E2E 테스트를 selenium으로 자동화한다는 분도 늘어나고 있는 것 같습니다. Test Driven Development도 엄청 중요하고 소프트웨어를 검증, 계측하는 것으로, 그 개발이 올바른 방향을 향하고 있는지의 지표가 됩니다. 그래서 TDD를 시작합시다! 그렇게 간단하지만, 그럼 어떻게해야합니까? 라고 하는 목적은 알았지만, 수단을 모르는 상황에 있는 분도 있는 것은 아닌가? 라고 생각합니다. 특히 Azure DevOps를 사용하여 Selenium에서 UI 테스트를 자동화하고 싶지만 역시 agent에 GUI가 필요하고 CLI는 적합하지 않습니다. 같은 해석을 하고 있는 분이 계십니다만, 실은, selenum에는, headless 실행이라고 불리는, GUI 없이 실행하는 방법이 있습니다. 또, Screenshot도 취할 수 있으므로, Zip로 정리해 Blob로 업로드하는 방법도 있습니다.

올해 초에 사내 팀 멤버와 해커슨했을 때의 코드가 tips가 있었습니다만, 좀처럼 공개할 수 없었기 때문에, 오늘 이것을 정리하려고 생각합니다.

시작하기 전에



파이썬에서 selenum을 움직이는 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를 추가합니다.


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

좋은 웹페이지 즐겨찾기