docker container - Part 1 내에서 Selenium 테스트 실행



저는 제약 회사에서 수동 테스트로 경력을 시작했습니다. 애플리케이션 테스트 활동 외에는 제품 팀이 테스트 환경에서 배포하는 것을 도왔습니다. 테스트와 배포는 모두 수동이었습니다. 저는 항상 테스트를 자동화하고 테스트 지역에 제품을 배포하기 위해 여러 단계를 실행하는 데 소요되는 시간을 줄이고 싶었습니다.
Selenium은 2012년에 제가 알고 있던 유일한 자동화 프레임워크였기 때문에 작년에 Selenium과 Java로 테스트 자동화 여정을 시작했습니다.
다양한 버전과 유형의 브라우저를 끊임없이 다루어야 했습니다. 온라인에서 약간 조사한 후 docker가 내 로컬 테스트를 단순화하는 데 도움이 될 수 있음을 깨달았습니다(이 시점까지 docker가 무엇인지 전혀 알지 못함). docker를 배울 시간이었고 분명히 "docker run hello-world"로 시작해야 했습니다 :). docker-desktop을 설치했습니다.

유투브에서 수많은 영상을 본 후, 일주일 동안 꿈꿔왔던 것은 가상머신, 컨테이너, 도커뿐이었습니다!
Hello-World에서 Chrome 및 Firefox 종속성을 사용하여 나만의 이미지를 빌드하는 것으로 변경되었습니다(실제로 그렇죠!?).
Selenium 테스트를 실행하기 위해 저는 항상mvn test
따라서 maven은 기본 이미지여야 했습니다.FROM maven:3.8.6-jdk-11
Chrome 및 해당 드라이버와 함께 작동하도록 다음 종속성을 추가했습니다.

# Install Chrome.
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
RUN apt-get update
RUN apt-get install -y google-chrome-stable
# Install ChromeDriver.
RUN wget -N https://chromedriver.storage.googleapis.com/105.0.5195.19/chromedriver_linux64.zip -P ~/
RUN unzip ~/chromedriver_linux64.zip -d ~/
RUN rm ~/chromedriver_linux64.zip
RUN mv -f ~/chromedriver /usr/local/bin/chromedriver
RUN chmod +x /usr/local/bin/chromedriver


다음으로 (이 Dockerfile과 stackoverflow에서 이post 를 공유한 Selenium 팀 덕분에) 내 Dockerfile에 Firefox 종속성을 추가할 수 있었습니다.

# Install Firefox
ARG FIREFOX_VERSION=103.0.2
RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /etc/apt/sources.list.d/debian.list
RUN apt-get update -qqy \
&& apt-get -qqy --no-install-recommends install firefox \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
&& wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \
&& apt-get -y purge firefox \
&& rm -rf /opt/firefox \
&& tar -C /opt -xjf /tmp/firefox.tar.bz2 \
&& rm /tmp/firefox.tar.bz2 \
&& mv /opt/firefox /opt/firefox-$FIREFOX_VERSION \
&& ln -fs /opt/firefox-$FIREFOX_VERSION/firefox /usr/bin/firefox
# Install GeckoDriver
ARG GECKODRIVER_VERSION=0.31.0
RUN wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz \
&& rm -rf /opt/geckodriver \
&& tar -C /opt -zxf /tmp/geckodriver.tar.gz \
&& rm /tmp/geckodriver.tar.gz \
&& mv /opt/geckodriver /opt/geckodriver-$GECKODRIVER_VERSION \
&& chmod 755 /opt/geckodriver-$GECKODRIVER_VERSION \
&& ln -fs /opt/geckodriver-$GECKODRIVER_VERSION /usr/bin/geckodriver


자세한 내용은 여기Dockerfile 를 참조하십시오.
최종 Dockerfile을 테스트하기 위해 하나의 샘플/간단한 Google 검색project 을 만들었습니다.
이미지를 성공적으로 생성했습니다(22회 시도 후) :).
docker build -t seleniumtests-in-docker:1.0 .


(내가 가장 좋아하는) 컨테이너를 만들 시간입니다.docker run - rm - env "env_browser_param=Chrome" seleniumtests-in-docker:1.0
Chrome, Edge 및 Firefox 브라우저 중에서 선택하기 위해 환경 변수 "env_browser_param"을 사용하고 있습니다.

마지막으로 컨테이너 내부에서 "빌드 성공"메시지를 보고 흥분했습니다.



이미지 크기를 줄일 수 있다고 확신합니다. 다음 번에 할 수 있습니다.



이제 여러 컨테이너를 시작하여 여러 브라우저에서 내 앱을 테스트할 수 있습니다. 특정 브라우저 버전으로 테스트하려면 Dockerfile에서 해당 ARG를 변경하고 새 이미지를 만들고 컨테이너를 시작하십시오.
Docker와 그 사용 사례에 대해 많이 배운 후 이제 애플리케이션 개발자가 Docker를 사용하여 제품 배포를 단순화하는 방법을 이해합니다.


내 "첫 번째"게시물을 읽어 주셔서 감사합니다.
다음: Docker 모험은 계속됩니다…

이 블로그는 이전에 medium에 게시되었습니다.

좋은 웹페이지 즐겨찾기