-
Notifications
You must be signed in to change notification settings - Fork 1
TestFlight 릴리스 노트 자동 회전과 E2E 플로우 안정화 #97
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
Changes from all commits
075076d
e2f0703
1c87b88
ac4f93f
734528c
32329ab
dee162c
d5030d2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,14 @@ | ||
| # Maestro 워크스페이스 설정. 이 디렉토리(.maestro)를 워크스페이스로 연다. | ||
| # ** 는 중간 디렉토리가 있어야 매칭되므로 flows 바로 아래 파일용 패턴을 함께 둔다. | ||
| # | ||
| # 워크스페이스 실행 대상은 엔트리포인트 두 개뿐이다. | ||
| # flows/full_test.yaml — 스플래시·로그인부터 전체 순회 | ||
| # flows/smoke_test.yaml — 짧은 확인용 | ||
| # | ||
| # 하위 디렉토리 플로우(member/home_smoke.yaml, member/vote_team_select.yaml, | ||
| # login/google_management.yaml, _shared/switch_section.yaml 등)는 단독으로 돌 수 없다. | ||
| # 로그인된 상태를 전제하거나(clearState: false) env 로 ID 를 받는 헬퍼이기 때문이다. | ||
| # flows/**/*.yaml 로 싸잡으면 이것들이 워크스페이스 플로우 목록에 떠서 | ||
| # 로그인 없이 실행되고 member.home.root 를 기다리다 타임아웃으로 죽는다. | ||
| # 그래서 글롭을 flows 바로 아래로 제한하고, 나머지는 runFlow: file: 로만 부른다. | ||
| flows: | ||
| - "flows/*.yaml" | ||
| - "flows/**/*.yaml" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # 하위 플로우의 로그인 선행조건. | ||
| # Maestro Studio 는 워크스페이스 config 의 flows 패턴과 무관하게 모든 플로우 파일을 | ||
| # 목록에 띄우므로, 각 플로우가 단독 실행돼도 스스로 로그인 상태를 만들 수 있어야 한다. | ||
| # | ||
| # 이미 홈이면 로그인을 건너뛰므로 full_test 처럼 앞서 로그인한 경우엔 비용이 거의 없다. | ||
| appId: io.DDD.Attendance | ||
| name: 운영진 홈 보장 | ||
| tags: | ||
| - e2e | ||
| - shared | ||
| --- | ||
| - launchApp: | ||
| clearState: false | ||
|
|
||
| # 스플래시가 끝나 홈이든 로그인 화면이든 확정될 때까지 기다린다. | ||
| # id 는 정규식으로 매칭되므로 둘 중 먼저 뜨는 쪽에서 풀린다. | ||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "management.staff.root|auth.login.root" | ||
| timeout: 60000 | ||
|
|
||
| - runFlow: | ||
| when: | ||
| notVisible: | ||
| id: "management.staff.root" | ||
| file: ../management/login_to_home.yaml | ||
|
|
||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "management.staff.root" | ||
| timeout: 60000 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # 하위 플로우의 로그인 선행조건. | ||
| # Maestro Studio 는 워크스페이스 config 의 flows 패턴과 무관하게 모든 플로우 파일을 | ||
| # 목록에 띄우므로, 각 플로우가 단독 실행돼도 스스로 로그인 상태를 만들 수 있어야 한다. | ||
| # | ||
| # 이미 홈이면 로그인을 건너뛰므로 full_test 처럼 앞서 로그인한 경우엔 비용이 거의 없다. | ||
| appId: io.DDD.Attendance | ||
| name: 멤버 홈 보장 | ||
| tags: | ||
| - e2e | ||
| - shared | ||
| --- | ||
| - launchApp: | ||
| clearState: false | ||
|
|
||
| # 스플래시가 끝나 홈이든 로그인 화면이든 확정될 때까지 기다린다. | ||
| # id 는 정규식으로 매칭되므로 둘 중 먼저 뜨는 쪽에서 풀린다. | ||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "member.home.root|auth.login.root" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When this flow runs after an operations flow, Useful? React with 👍 / 👎. |
||
| timeout: 60000 | ||
|
|
||
| - runFlow: | ||
| when: | ||
| notVisible: | ||
| id: "member.home.root" | ||
| file: ../member/login_to_home.yaml | ||
|
|
||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "member.home.root" | ||
| timeout: 60000 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # 프로필 화면 선행조건. | ||
| # profile/* 와 onboarding/invite_code 는 프로필 화면이 열려 있어야 도는데, | ||
| # Maestro Studio 는 모든 플로우 파일을 단독 실행할 수 있게 띄우므로 | ||
| # 각 플로우가 스스로 이 상태를 만들 수 있어야 한다. | ||
| # | ||
| # 이미 프로필 화면이면 아무것도 하지 않는다. | ||
| appId: io.DDD.Attendance | ||
| name: 프로필 화면 보장 | ||
| tags: | ||
| - e2e | ||
| - shared | ||
| --- | ||
| - runFlow: | ||
| when: | ||
| notVisible: | ||
| id: "profile.main.root" | ||
| commands: | ||
| # 운영진 홈까지 확보한 뒤 우측 상단 프로필 버튼으로 들어간다. | ||
| - runFlow: | ||
| file: ensure_management_home.yaml | ||
| - tapOn: | ||
| id: "management.staff.profilebutton" | ||
|
|
||
| - extendedWaitUntil: | ||
| visible: | ||
| id: "profile.main.root" | ||
| timeout: 30000 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,3 +10,15 @@ name: Google 로그인 시작 | |
| - tapOn: | ||
| text: "Continue|계속" | ||
| optional: true | ||
|
|
||
| # 여기부터는 앱이 아니라 SafariViewService 위다. | ||
| # accounts.google.com 콜드 로딩이 30초를 넘기는 일이 있다. | ||
| # (실패 녹화 30.7초 지점에 "잠시만 기다려 주세요..." 스피너가 아직 떠 있었고 | ||
| # 32초에 타임아웃으로 웹뷰가 닫혔다.) | ||
| # 그래서 로딩이 끝나는 것을 먼저 기다린 뒤 계정 화면을 확인한다. | ||
| - extendedWaitUntil: | ||
| notVisible: ".*잠시만 기다려 주세요.*|.*Just a moment.*" | ||
| timeout: 90000 | ||
|
Comment on lines
+19
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When SafariViewService initially displays a blank page or has not yet inserted the loading text after the optional Continue tap, this Useful? React with 👍 / 👎. |
||
| # 계정 선택 화면의 제목("계정을 선택하세요.")은 Google 이 여러 요소로 쪼개 렌더할 수 있어 | ||
| # 통째로 매칭되지 않는다. 그래서 제목이 아니라 실제로 탭할 계정 행을 호출 측에서 기다린다. | ||
| - takeScreenshot: .maestro/artifacts/login/google-auth-page | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When
build-test-shardsfails before the Tuist command writes itsmatrixoutput—for example during setup, dependency installation, or compilation—this job still runs because its job-level condition accepts failed builds, but this expression evaluatesfromJSON('')and fails beforeios-test-report.jscan execute. Consequently, the PR receives no diagnostic report for the build failures the reporter is intended to render; default an absent matrix to an empty shard list before parsing it.Useful? React with 👍 / 👎.