로그인을 Figma 2단계(로그인 → 간편 로그인)로 · 회원가입 · 약관 동의 · 가입 완료 화면

This commit is contained in:
Sn-Kinos
2026-09-27 21:22:02 +09:00
parent 388ea4227c
commit 735bdb76b3
14 changed files with 729 additions and 218 deletions
+17 -4
View File
@@ -7,6 +7,7 @@ import 'package:fancake/core/firebase/firebase_boot.dart';
import 'package:fancake/core/router/app_router.dart';
import 'package:fancake/features/auth/auth.dart';
import 'package:fancake/features/auth/auth_repository.dart';
import 'package:fancake/features/auth/login_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
@@ -24,11 +25,13 @@ void main() {
await tester.pumpAndSettle();
expect(tester.takeException(), isNull);
expect(find.text('FANUZU'), findsOneWidget);
// 별첨 B v1.4 확정 4종이 라벨 그대로 있다.
expect(find.byKey(loginLogoKey), findsOneWidget);
// Figma 2단계 — 「로그인」을 누르면 간편 로그인에 별첨 B v1.4 확정 4종이 있다.
await tester.tap(find.widgetWithText(FilledButton, '로그인'));
await tester.pumpAndSettle();
for (final provider in AuthRepository().providers) {
expect(
find.text(provider.provider.label),
find.text(providerButtonLabel(provider.provider)),
findsOneWidget,
reason: provider.provider.name,
);
@@ -189,7 +192,12 @@ void main() {
reason: '셸에 진입할 수 없어야 한다',
);
// 소셜 버튼은 그대로 있어야 한다 — 우회 입구만 막는 것이지 로그인을 막는 게 아니다.
expect(find.text(SocialProvider.google.label), findsOneWidget);
await tester.tap(find.widgetWithText(FilledButton, '로그인'));
await tester.pumpAndSettle();
expect(
find.text(providerButtonLabel(SocialProvider.google)),
findsOneWidget,
);
});
testWidgets('디버그 빌드에서는 목 세션 버튼이 있다 (가드가 과하게 잠그지 않았는지)', (tester) async {
@@ -197,6 +205,9 @@ void main() {
FancakeApp(auth: AuthRepository(releaseMode: false)),
);
await tester.pumpAndSettle();
// 목 세션 입구는 QA 폼과 같은 숨은 입구(로고 길게 누르기) 안에 있다.
await tester.longPress(find.byKey(loginLogoKey));
await tester.pumpAndSettle();
expect(find.text('목 세션으로 탭 둘러보기'), findsOneWidget);
});
@@ -288,6 +299,8 @@ void main() {
Future<void> _enterShell(WidgetTester tester) async {
await tester.pumpWidget(FancakeApp(auth: AuthRepository()));
await tester.pumpAndSettle();
await tester.longPress(find.byKey(loginLogoKey));
await tester.pumpAndSettle();
final enter = find.text('목 세션으로 탭 둘러보기');
await tester.ensureVisible(enter);