-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discussion: E2E 테스트 및 버그 리포트 자동화 #326
Comments
워크플로우는 크게 두가지 중에 선택할 수 있을 것 같아요.
|
@disjukr 방향성 생각하신거랑 대략 맞는지 피드백 부탁드려요. 괜찮다고 하시면 PR 올리겠습니다. (+ 혹시 CircleCI 로 툴링 바꾸실 의향 있으시면 CI 워크플로우까지 기여 가능할 것 같습니다.) |
저두 어제 대충 요런걸 만들고 있었어용: https://github.com/disjukr/just-news/blob/master/src/test/health-check/index.ts 뉴스기사마다 들어있는 내용이 달라서 (필드에 따라 애초에 기사에 해당 정보가 없을 수도 있고, 기사에 내용이 있는데 누락됐을 수도 있고) 케이스마다 관련된 이슈번호를 넣어놓을 건데, 나중에 이걸 활용해서 옛날 이슈를 다시 열어준다던가, 아니면 새 이슈를 만들고 관련 이슈를 언급한다던가 하는 처리를 할 수 있을 것 같아요. 이런 정보들을 좀 활용하려면 테스트 케이스는 크롤링 하는 것보다는 사람이 넣는게 나을 것 같습니당. e2e는 관심이 없어요. 말씀하신대로 삽을 좀 떠야하거니와, 유저스크립트와 관련된 부분은 잘 바뀌거나 깨지는 부분이 아니라 사람이 확인해도 충분할 거 같아요. jsdom은 당장은 생각이 없고 나중에 다른 이유로 도입할 수도 있을 거 같긴 해요 (테스트 성능 문제를 해결하기 위해서라거나 ㄹㄹ) circle ci보다는 github actions 먼저 검토해보고 싶어용 |
그리고 브라우저 프로세스에 올릴 테스트 스크립트는 따로 빌드해야할 것 같아용. |
GitHub Actions 관련:
|
일단 json 리포트 뽑는 것까지는 만들었네용. 그리고 노가다 거리가 생겼습니다 하핳 이제 해야할게
정도겠네요.. 도와주세용=3=3 |
https://github.com/vadimdemedes/ink 이거 써보고 싶었는데 여기 써봐도 되용? |
@cometkim 넹 근데 cli에 보여주는 내용이랑 별개로 이미지 리포트도 따로 만들어야할 것 같아용 |
"이미지 리포트"에서 기대하시는 내용들은 어떤것들인가요? 에러 케이스에서 실제 보이는 화면 등인가요? |
이미지로 넣으려는 이유는 말씀하신대로 매번 ci가 남기는 커밋이 안생겼으면 싶어서 그런게 맞아요. 저기 보여주고 싶은건 전체 사이트중 지금 몇%가 완벽하게 작동하는지, 각 테스트마다
이런걸 보여주고 싶고용, 지원 상태
요런 느낌으로 만들고 싶고용 위 처럼 그리려면 그리고 |
이미지면 근데 링크 클릭을 할 수 없네 엉엉 |
|
@yous 리포트 전체를 통이미지로 만들었을 경우를 생각했어요. 테스트 케이스마다 이미지를 따로 만들면 되긴 할텐데 |
크훔.... 원하시는 모양새는 이제 이해됐는데 좀 애매하긴 하네요. 당장 생각나는 건 두 방안을 적절히 섞어서 GitHub Issue Tag 를 사용하는 건데요.
해서 README에서는 전체적인 Status를 한눈에 보게 하고, 뱃지를 누르면 각 사이트별 남은 이슈 목록, 다시 이슈로 들어가면 더 상세한 리포트를 볼 수 있게 구성하는 거죠 @disjukr 어떤가요? |
@cometkim 좋은 것 같아요. 소요시간은 근데 이슈로 등록하기엔 애매할 것 같고(예를 들어 그냥 서버가 너무 느려서 5초를 넘기는 경우 해결하기 애매), 이건 README에 평균 소요시간을 이미지로 보여주면 좋을 것 같아요. 그리고 뱃지는 opened issue 숫자를 보여주기보다, 테스트 갯수만큼 네모를 보여주고, 실패랑 성공을 색깔로 구분해서 보여주면 좋을 것 같아요. ex)
그런데 봇이 이미 있는 이슈를 또 만들지 않도록 하려면 어떻게 처리할 수 있을까요? |
가닥이 좀 잡혔네요.
요건 단순하게 GitHub API 통해서 위에서 언급한 필터로 이슈 긁어서 하나라도 있으면 댓을 달도록 대체하면 될 것 같아요. |
@cometkim 음.. 이미 단 댓글을 또 달지 않으려면... |
어제 얘기 나눴던 테스팅 건을 Jest 가지고 간단하게 PoC 해봤습니다.
jest-puppeteer 환경 구성하고 페이지 로드 직후에 빌드된 유저스크립트를 inject 해주니 아주 잘 동작합니다.
이대로 진행한다면 다음과 같은 레이아웃으로 만들 수 있을 것 같습니다.
그리고 Jest 리포트를 파싱하거나 적절한 리포터를 만들어서 이슈 템플릿 입혀 이슈등록 시키면 될 것 같네요.
예상되는 워크플로우는: 일일 스케줄 -> 뉴스 크롤링/샘플링 -> E2E 테스트 실행 -> (실패 케이스가 있으면) 깃헙 이슈 등록 -> 사이트별 상태(성공, 실패, 미구현) 이미지 업데이트
배제한 것들
어제 얘기나눈 접근 방식이 크게 두개였는데요.
일단 1번은 Puppeteer 제약사항으로 헤드리스 모드에서는 동작하지 않는데다가 TM을 따로 로드해줘야 하는 번거로움까지 있습니다. 생각해보니 어찌됐건 유저스크립트만 실행하면 되니 불필요한 작업이더군요.
2번은 아무리 생각해도 유닛테스팅 성격이 강한 것 같습니다. 아직 구현되지 않는 파서를 구현할 때 도움을 줄 수는 있을 텐데 "실제로 잘 렌더링 되는지"는 검증이 안되기 때문에 배제했습니다.
여담
TM이 별도 태스크처럼 동작하는 것 같던데, 이게 우선순위가 낮아서 그런지 불러올거 다 불러온다음 just-news 가 실행되는 것으로 보이더라고요.
근데 테스트에선 스크립트를 직접 삽입하니까 엄청 빨리 도는 듯... 다른 최적화보다도 #200 만 해도 사용성 엄청 좋아질 것 같습니다.
The text was updated successfully, but these errors were encountered: