Skip to content

LoginActivity Compose 전환 및 테스트 추가#401

Merged
unam98 merged 1 commit into
developfrom
feature/login-compose-tdd-migration
Jun 27, 2026
Merged

LoginActivity Compose 전환 및 테스트 추가#401
unam98 merged 1 commit into
developfrom
feature/login-compose-tdd-migration

Conversation

@unam98

@unam98 unam98 commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

작업 배경

  • LoginActivity를 XML/DataBinding 기반 화면에서 Compose 화면으로 전환하고, 로그인 화면 상태/상호작용을 테스트로 고정했습니다.

변경 사항

영역 내용
LoginActivity BindingActivity/XML 바인딩 제거, setContent 기반 LoginScreen 렌더링으로 전환
LoginScreen 기존 배경, 구글/카카오 로그인 버튼, 방문자 모드, 로딩/스낵바 상태를 Compose UI로 구현
LoginViewModel Compose 스낵바 표시 후 에러를 소거할 수 있도록 clearErrorMessage() 추가
activity_login.xml Compose 전환에 따라 기존 XML 레이아웃 삭제
LoginUiStateTest, LoginViewModelTest, LoginScreenTest UI 상태 변환, 로그인 성공/실패 상태 전이, 버튼 노출/클릭/로딩 표시 테스트 추가

영향 범위

  • 로그인 화면의 UI 렌더링 계층이 XML/DataBinding에서 Compose로 변경됩니다.
  • 구글/카카오 로그인, 방문자 모드, 자동 로그인, 로그인 성공/회원가입 분기 네비게이션은 기존 Activity 흐름을 유지합니다.
  • 런타임 영향은 LoginActivity 화면 구성과 로딩/에러 표시 영역에 한정됩니다.

검증 매트릭스

영향 범위 테스트 코드
로그인 화면 버튼/방문자 모드 노출 로그인_버튼과_방문자_모드가_노출된다
구글/카카오/방문자 모드 클릭 콜백 연결 각_버튼을_누르면_대응하는_콜백이_호출된다
로그인 로딩 인디케이터 표시 loginState가_Loading이면_isLoading은_true다
로딩_상태면_인디케이터가_노출된다
로그인 성공 시 결과/상태 전이 postLogin 성공 시 loginResult와 Success 상태로 갱신된다
로그인 실패 시 에러 메시지/Failure 상태 전이 postLogin 실패 시 errorMessage와 Failure 상태로 갱신된다
errorMessage는_그대로_전달된다
스낵바 표시 후 에러 메시지 소거 clearErrorMessage는_errorMessage를_null로_초기화한다

Before / After 영상

Before After
login_before.mp4
login_after.mp4

Splash 진입 후 LoginActivity 화면이 노출되는 동일 플로우를 비교했습니다.

로그인 상호작용 검증 영상

구글 로그인 카카오 로그인 방문자 모드
login_after_google_click_proof.mp4
login_after_kakao_click_proof.mp4
login_after_visitor_mode.mp4
  • 구글: 로그인 화면에서 구글 버튼 탭 대상 확인 후 Google 계정 선택 화면 진입을 확인했습니다.
  • 카카오: 로그인 화면에서 카카오 버튼 탭 대상 확인 후 브라우저 기반 외부 인증 플로우 진입을 확인했습니다.
  • 방문자 모드: 버튼 클릭 후 MainActivity 진입 및 위치 권한 요청 화면 노출을 확인했습니다.

Test Plan

  • JAVA_HOME=/Users/unamkim/Library/Java/JavaVirtualMachines/temurin-19.0.2/Contents/Home ./gradlew testDebugUnitTest --tests 'com.runnect.runnect.presentation.login.*' — Login 유닛 테스트 6/6 통과
  • JAVA_HOME=/Users/unamkim/Library/Java/JavaVirtualMachines/temurin-19.0.2/Contents/Home ./gradlew clean assembleDebug — debug 빌드 성공
  • JAVA_HOME=/Users/unamkim/Library/Java/JavaVirtualMachines/temurin-19.0.2/Contents/Home ./gradlew connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.runnect.runnect.presentation.login.LoginScreenTest — Compose UI 테스트 3/3 통과

@unam98 unam98 self-assigned this Jun 26, 2026
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@unam98, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 37 minutes and 2 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 708dd3d1-6160-4904-a22d-d21471377a0a

📥 Commits

Reviewing files that changed from the base of the PR and between 8a0da8d and 01da605.

📒 Files selected for processing (7)
  • app/src/androidTest/java/com/runnect/runnect/presentation/login/LoginScreenTest.kt
  • app/src/main/java/com/runnect/runnect/presentation/login/LoginActivity.kt
  • app/src/main/java/com/runnect/runnect/presentation/login/LoginScreen.kt
  • app/src/main/java/com/runnect/runnect/presentation/login/LoginViewModel.kt
  • app/src/main/res/layout/activity_login.xml
  • app/src/test/java/com/runnect/runnect/presentation/login/LoginUiStateTest.kt
  • app/src/test/java/com/runnect/runnect/presentation/login/LoginViewModelTest.kt
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/login-compose-tdd-migration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@unam98 unam98 merged commit abeb1ca into develop Jun 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant