반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MLflow
- Kopf
- mlops
- argo rollout
- CI/CD
- 카오스 엔지니어링
- seldon core
- keda
- serving
- 오퍼레이터
- opensearch
- nginx ingress
- tekton
- Model Serving
- Kubernetes
- argocd
- gitea
- knative
- Pulumi
- blue/green
- CANARY
- gitops
- Litmus
- operator
- Continuous Deployment
- kubernetes operator
- Kubeflow
- opentelemetry
- Kubernetes 인증
- Argo
Archives
- Today
- Total
Kubernetes 이야기
playwright를 활용한 e2e 테스트 본문
반응형
Playwright는 최신 웹 앱에 대한 신뢰할 수 있는 종단 간 테스트를 지원하는 테스트 자동화 도구이다. Playwright는 Chromium, WebKit 및 Firefox를 포함한 모든 최신 렌더링 엔진을 지원한다.
설치
설치는 npm 또는 pip, .net, java, VS Code Extension 설치 방법이 있다. pip 로 설치를 진행해 보자.
pipenv --python 3.11
pipenv shell
pipenv install pytest-playwright
playwright install
샘플코드
import re
from playwright.sync_api import Page, expect
def test_homepage_has_Playwright_in_title_and_get_started_link_linking_to_the_intro_page(page: Page):
page.goto("https://playwright.dev/")
# Expect a title "to contain" a substring.
expect(page).to_have_title(re.compile("Playwright"))
# create a locator
get_started = page.get_by_role("link", name="Get started")
# Expect an attribute "to be strictly equal" to the value.
expect(get_started).to_have_attribute("href", "/docs/intro")
# Click the get started link.
get_started.click()
# Expects the URL to contain intro.
expect(page).to_have_url(re.compile(".*intro"))
[실행]
# pytest
======================================================= test session starts =======================================================
platform linux -- Python 3.11.1, pytest-7.2.1, pluggy-1.0.0
rootdir: /root/playwright
plugins: playwright-0.3.0, base-url-2.0.0
collected 1 item
test_my_application.py . [100%]
======================================================== 1 passed in 1.77s ========================================================
액션녹화
record 기능을 쓰기 위해서는 다음과 같이 실행한다.
# playwright codegen demo.playwright.dev/todomvc
실행 시 timezone을 다음과 같이 옵션을 추가 할 수 있다.
--timezone="Asia/Seoul" --lang="ko-KR"
WSL 모드 또는 X11 모드 오류가 발생하는 경우 다음과 같이 실행한다.
[pid=5640][err] [5640:5654:0214/203111.458552:ERROR:bus.cc(399)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[pid=5640][err] [5640:5640:0214/203111.462146:ERROR:ozone_platform_x11.cc(238)] Missing X server or $DISPLAY
[pid=5640][err] [5640:5640:0214/203111.462179:ERROR:env.cc(255)] The platform failed to initialize. Exiting.
# sudo apt install x11-apps
# sudo /etc/init.d/dbus start
# sudo apt install language-selector-gnome
# sudo gnome-language-selector -> 한글추가
# export DISPLAY=$(ip route list default | awk '{print $3}'):0
# export LIBGL_ALWAYS_INDIRECT=1
https 호출 시 Error: net::ERR_CERT_AUTHORITY_INVALID ... 오류가 발생하는 경우에는--ignore-https-errors 옵션을 추가한다.
WSL 모드 (Ubuntu) 에서 브라우저에 한글이 깨지는 경우에는 다음을 참고한다.
https://velog.io/@hephaistos53/%EC%9A%B0%EB%B6%84%ED%88%AC-%ED%81%AC%EB%A1%AC%EC%84%A4%EC%B9%98-%ED%95%9C%EA%B8%80%EC%84%A4%EC%A0%95
* 참고
codegen으로 녹화를 생성하면 text박스에는 fill("text") 로 자동호출된다. 하지만, fill 함수로 textbox입력 시 javascript에서 event를 발생하거나, 문자열 비교등 처리에서 값을 못 불러오는 현상이 있다.
이때는 type 함수를 써서 값을 입력받도록 한다.
page.get_by_placeholder("text").type("myvalue")
Trace
playwright에서는 실행한 결과를 스크린샷으로 저장해 주는 기능이 있다.
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
context.tracing.start(name="trace", screenshots=True, snapshots=True)
...
# ---------------------
context.tracing.stop(path = "trace.zip")
context.close()
browser.close()
실행후에는 trace.zip파일이 생성된다.
playwright show-trace trace.zip
스크린샷 결과를 다음과 같이 조회할 수 있다.
상세한 설명은 다음을 참고한다.
https://playwright.dev/python/docs/intro
반응형
'개발 > python' 카테고리의 다른 글
mitmproxy을 사용하여 K8S API Server Reverse Proxy 설정하기 (0) | 2023.02.22 |
---|---|
Playwright와 Python 사용 방법 (0) | 2023.02.22 |
Python에서 gRPC 구현 (0) | 2023.02.13 |
Kopf ( 예제 ) (1) | 2023.02.05 |
Kopf (소개) (0) | 2023.02.03 |
Comments