QA 중니어 Log
[QA] 웹 서비스 자동화 Pipeline 구축 3 - Playwright 설치 및 Jenkins에서 실행하기 본문
다른 업무들을 처리하고 오느라 자동화 작업이 좀 늦어졌다. 😅
이번 글에서는 Jenkins에서 Playwright 테스트 자동화가 목표!
Playwright를 Jenkins 파이프라인에서 자동 실행하려면, 테스트 대상 서버에 실행 환경을 먼저 구성해야 한다.
테스트 서버에 Playwright를 설치하고, 웹 서버 로그인 정도의 간단한 스크립트를 추가할 예정이다.
그리고 Jenkins에서 실행했을 때, 패키지 패치부터 웹 로그인 작업까지 잘 되는지 확인해보면 될 것 같다.
아래 그림에서는 4번이 되겠다!

이번 글의 목표
- 테스트 대상 서버에 Playwright 설치
- Jenkins를 통해 Playwright 스크립트를 실행하는 자동화 환경 구성
필요한 작업 정리
- Playwright 설치
- Playwright 스크립트 작성
- Jenkins에서 Playwright 실행 구성
- 전체 흐름 테스트
- 나는 Python으로 Playwright를 사용할 예정이다!
- JavaScript / TypeScript를 사용할 사람들은 아래 글을 참고해서 설치하면 된다.
[Playwright] JavaScript, TypeScript 환경에서 Playwright 설치하기
나는 Python을 선호해서 pip install로만 설치해봤는데,Playwright는 Node.js 기반으로 먼저 나왔고 나중에 Pyhon, Java, .NET 버전이 추가된 것이라고 한다. JavaScript, TypeScript를 사용할 환경에서는 아래 방법을
qu0kka.tistory.com
1. Python 환경에서 Playwright 설치 방법 ⭐
# Python 기반 Playwright 설치
pip install playwright
# 브라우저 설치
playwright install
# 의존성 패키지 설치 (Ubuntu / Debian 계열)
playwright install-deps
# 의존성 패키지 수동 설치 (Rocky / CentOS / RHEL 계열)
dnf install -y \
libXcomposite libXcursor libXdamage libXext libXfixes libXi libXrandr libXScrnSaver libXtst \
gtk3 alsa-lib atk at-spi2-atk at-spi2-core cups-libs libdrm mesa-libgbm libxkbcommon nss \
libxcb libxshmfence xorg-x11-server-Xvfb
# 브라우저 바이너리 설치
npx playwright install

- Playwright에서 제공하는 install-deps는 Ubuntu / Debian 계열 전용이다.
- 나 같이 Rocky / CentOS / RHEL 계열에서 의존성 패키지를 설치하려면 가장 아래 명령어와 같이 수동으로 설치해야 한다.
> dnf 명령어가 없고 yum만 있으면, dnf만 yum으로 변경해서 실행해주면 된다.
- 의존성 패키지는 Chromium, Firefox, WebKit 실행에 필요한 라이브러리로, GUI 환경 없이도 브라우저 실행을 가능하게 해주는 가상 디스플레이 서버 등을 포함한다.
2) Playwright Test Script 작성 (Login 작업)
- 자동화 테스트케이스는 계속해서 추가, 보완해나가야겠지만 우선 동작 확인을 위해 간단한 Login 작업을 진행하려고 한다.
- 아래는 예시로 만든 로그인 작업에 대한 테스트 케이스로, 나는 Python이 편해서 Python으로 적었다.
- 생각해보니, 나중에 다른 환경들에서도 편하게 작업하려면 테스트 서버 IP 및 ID, PW는 Jenkins Pipeline에서 환경변수로 받아오는게 좋을 것 같아 그 부분도 수정했다.
- 초반에는 GUI로 확인하고 싶어서, Windows 로컬에서 디버깅한 뒤 코드만 리눅스로 옮겨 실행했다.
> browser = p.chromium.launch(headless=False)로 변경하면 화면 보임
> p.chromium.launch 대신 p.firefox.launch로 변경하면 다른 브라우저로도 테스트가 가능하다.
import os
from datetime import datetime
from playwright.sync_api import sync_playwright
def timestamp():
return datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
def get_env_or_default(key, default):
val = os.getenv(key)
return val if val else default
# 환경변수에서 값 불러오기
TARGET_URL = get_env_or_default("TARGET_URL", "https://[테스트 할 서버 IP]")
USERNAME = get_env_or_default("LOGIN_USERNAME", "[ID]")
PASSWORD = get_env_or_default("LOGIN_PASSWORD", "[PW]")
HEADLESS_MODE = get_env_or_default("HEADLESS", "true").lower() == "true"
def login(page):
print(f"[{timestamp()}] 🌐 접속 시도: {TARGET_URL}")
page.goto(TARGET_URL, wait_until="domcontentloaded", timeout=60000)
page.wait_for_selector('#input-3', timeout=10000)
page.fill('#input-3', USERNAME)
page.fill('#input-5', PASSWORD)
page.get_by_role("button", name="로그인").click()
page.wait_for_selector("text=[리다이렉트 되는 페이지 내 문구]", timeout=10000)
print(f"[{timestamp()}] ✅ 로그인 완료")
def main():
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
context = browser.new_context(ignore_https_errors=True)
page = context.new_page()
login(page)
browser.close()
if __name__ == "__main__":
main()
3) 로컬 환경에서 실행해보기
python login_test.py
- 실행이 잘 되면 이제 Jenkins에서 자동 실행할 수 있도록 연동하면 된다.
4) Jenkins Pipeline에 추가할 값들 예시
- environments에 아래 값들 추가
environments {
TARGET_URL="https://[로그인 페이지 주소]"
LOGIN_USERNAME="[ID]"
LOGIN_PASSWORD="[PW]"
}
- Jenkins에서 해당 Python 스크립트를 실행하도록 pipeline에 아래 단계 추가
stage('테스트 서버에서 Playwright 테스트 실행') {
steps {
sh '''
ssh -o StrictHostKeyChecking=no -p ${SSH_PORT} ${REMOTE_USER}@${TARGET_SERVER} '
set -e
export TARGET_URL="${TARGET_URL}"
export LOGIN_USERNAME="${LOGIN_USERNAME}"
export LOGIN_PASSWORD="${LOGIN_PASSWORD}"
cd /tmp/playwright-tests
python login_test.py
'
'''
}
}
5) Jenkins에서 실행해보기!
- 본인의 환경에 맞게 수많은 시행착오를 거치다보면, 성공하게 되어있다 ㅎㅎ 파이팅!

- Windows 환경에서 실행 잘 되던 Playwright 코드를 Rocky로 가져오니까 권한 설정이나 dependencies 등 만져줘야 할 것들이 많았다. 한 개의 테스트 서버에서 해결하려고 Rocky를 그대로 설정했는데, Playwright 친화적인 Ubuntu가 나았을 수도 있었을 거라는 생각도 든다만, 이렇게 배워가는 것 아니겠습니까!!
자, 이렇게 Playwright 설치부터 Jenkins에서 스크립트 실행하는 자동화 환경을 만들어봤다!
이번 글의 목표
✔️ 테스트 대상 서버에 Playwright 설치
✔️ Jenkins를 통해 Playwright 스크립트를 실행하는 자동화 환경 구성
필요한 작업 정리
✔️ Playwright 설치
✔️ Playwright 스크립트 작성
✔️ Jenkins에서 Playwright 실행 구성
✔️ 전체 흐름 테스트
다른 업무들이 들어와서 진도가 빠르지는 않지만,,,
이런 필요한 작업들을 해둬야 편하고, 나중에 반복적인 리소스를 들이지 않을 수 있다.
똑똑하게 일하자 ~
다음 글은 '결과 리포트'가 되겠다. ㅎㅎ
'QA' 카테고리의 다른 글
| [Ubuntu] 우분투 24.04 Realtek LAN 드라이버 변경 방법 (r8125) (0) | 2025.09.03 |
|---|---|
| [QA] 웹 서비스 자동화 Pipeline 구축 4 - 테스트 결과 보고서 (5) | 2025.07.30 |
| [Playwright] JavaScript, TypeScript 환경에서 Playwright 설치하기 (3) | 2025.07.25 |
| [QA] 웹 서비스 자동화 Pipeline 구축 2 - 대상 서버에 패키지 다운로드 및 설치 (2) | 2025.07.24 |
| [QA] 웹 서비스 자동화 Pipeline 구축 1 - Jenkins 설치 (4) | 2025.07.23 |