From e94e40427feecd2c216651b6fb6c774823e7f52a Mon Sep 17 00:00:00 2001 From: snughnu Date: Tue, 3 Feb 2026 22:51:25 +0900 Subject: [PATCH 1/5] =?UTF-8?q?remove:=20UI=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=ED=83=80=EA=B2=9F=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 120 ------------------ .../SkillViewUITests.swift | 45 ------- 2 files changed, 165 deletions(-) delete mode 100644 SoloDeveloperTraining/SoloDeveloperTrainingUITests/SkillViewUITests.swift diff --git a/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj b/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj index b99869b4..e4e59857 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj +++ b/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj @@ -14,20 +14,12 @@ remoteGlobalIDString = 08267F2A2F0D06BC005A0066; remoteInfo = SoloDeveloperTraining; }; - BCFC85502F32022C00447A9A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08267F232F0D06BC005A0066 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 08267F2A2F0D06BC005A0066; - remoteInfo = SoloDeveloperTraining; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 08267F2B2F0D06BC005A0066 /* SoloDeveloperTraining.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SoloDeveloperTraining.app; sourceTree = BUILT_PRODUCTS_DIR; }; 2896AE422F100CD600D38732 /* SoloDeveloperTraining-Dev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SoloDeveloperTraining-Dev.app"; sourceTree = BUILT_PRODUCTS_DIR; }; BCFC85392F31FED800447A9A /* SoloDeveloperTrainingTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SoloDeveloperTrainingTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - BCFC854A2F32022C00447A9A /* SoloDeveloperTrainingUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SoloDeveloperTrainingUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -96,11 +88,6 @@ path = SoloDeveloperTrainingTests; sourceTree = ""; }; - BCFC854B2F32022C00447A9A /* SoloDeveloperTrainingUITests */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = SoloDeveloperTrainingUITests; - sourceTree = ""; - }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -125,13 +112,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BCFC85472F32022C00447A9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -140,7 +120,6 @@ children = ( 08267F2D2F0D06BC005A0066 /* SoloDeveloperTraining */, BCFC853A2F31FED800447A9A /* SoloDeveloperTrainingTests */, - BCFC854B2F32022C00447A9A /* SoloDeveloperTrainingUITests */, 08267F2C2F0D06BC005A0066 /* Products */, ); sourceTree = ""; @@ -151,7 +130,6 @@ 08267F2B2F0D06BC005A0066 /* SoloDeveloperTraining.app */, 2896AE422F100CD600D38732 /* SoloDeveloperTraining-Dev.app */, BCFC85392F31FED800447A9A /* SoloDeveloperTrainingTests.xctest */, - BCFC854A2F32022C00447A9A /* SoloDeveloperTrainingUITests.xctest */, ); name = Products; sourceTree = ""; @@ -228,29 +206,6 @@ productReference = BCFC85392F31FED800447A9A /* SoloDeveloperTrainingTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - BCFC85492F32022C00447A9A /* SoloDeveloperTrainingUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = BCFC85522F32022C00447A9A /* Build configuration list for PBXNativeTarget "SoloDeveloperTrainingUITests" */; - buildPhases = ( - BCFC85462F32022C00447A9A /* Sources */, - BCFC85472F32022C00447A9A /* Frameworks */, - BCFC85482F32022C00447A9A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - BCFC85512F32022C00447A9A /* PBXTargetDependency */, - ); - fileSystemSynchronizedGroups = ( - BCFC854B2F32022C00447A9A /* SoloDeveloperTrainingUITests */, - ); - name = SoloDeveloperTrainingUITests; - packageProductDependencies = ( - ); - productName = SoloDeveloperTrainingUITests; - productReference = BCFC854A2F32022C00447A9A /* SoloDeveloperTrainingUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -268,10 +223,6 @@ CreatedOnToolsVersion = 26.2; TestTargetID = 08267F2A2F0D06BC005A0066; }; - BCFC85492F32022C00447A9A = { - CreatedOnToolsVersion = 26.2; - TestTargetID = 08267F2A2F0D06BC005A0066; - }; }; }; buildConfigurationList = 08267F262F0D06BC005A0066 /* Build configuration list for PBXProject "SoloDeveloperTraining" */; @@ -291,7 +242,6 @@ 08267F2A2F0D06BC005A0066 /* SoloDeveloperTraining */, 2896AE3A2F100CD600D38732 /* SoloDeveloperTraining-Dev */, BCFC85382F31FED800447A9A /* SoloDeveloperTrainingTests */, - BCFC85492F32022C00447A9A /* SoloDeveloperTrainingUITests */, ); }; /* End PBXProject section */ @@ -318,13 +268,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BCFC85482F32022C00447A9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -388,13 +331,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BCFC85462F32022C00447A9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -403,11 +339,6 @@ target = 08267F2A2F0D06BC005A0066 /* SoloDeveloperTraining */; targetProxy = BCFC853D2F31FED800447A9A /* PBXContainerItemProxy */; }; - BCFC85512F32022C00447A9A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 08267F2A2F0D06BC005A0066 /* SoloDeveloperTraining */; - targetProxy = BCFC85502F32022C00447A9A /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -748,48 +679,6 @@ }; name = Release; }; - BCFC85532F32022C00447A9A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = B3PWYBKFUK; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = sunghun.SoloDeveloperTrainingUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = SoloDeveloperTraining; - }; - name = Debug; - }; - BCFC85542F32022C00447A9A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = B3PWYBKFUK; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = sunghun.SoloDeveloperTrainingUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = SoloDeveloperTraining; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -829,15 +718,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BCFC85522F32022C00447A9A /* Build configuration list for PBXNativeTarget "SoloDeveloperTrainingUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BCFC85532F32022C00447A9A /* Debug */, - BCFC85542F32022C00447A9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 08267F232F0D06BC005A0066 /* Project object */; diff --git a/SoloDeveloperTraining/SoloDeveloperTrainingUITests/SkillViewUITests.swift b/SoloDeveloperTraining/SoloDeveloperTrainingUITests/SkillViewUITests.swift deleted file mode 100644 index 55acad97..00000000 --- a/SoloDeveloperTraining/SoloDeveloperTrainingUITests/SkillViewUITests.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// SoloDeveloperTrainingTests.swift -// SoloDeveloperTrainingTests -// -// Created by sunjae on 2/3/26. -// - -import XCTest - -final class SkillViewUITests: XCTestCase { - - override func setUpWithError() throws { - // 실패 시 바로 종료 - continueAfterFailure = false - } - - @MainActor - func test_스킬_최고레벨도달시_버튼상태가_올바른지() throws { - // TODO: 시나리오 수정 - let app = XCUIApplication() - app.launch() - app.tap() - app.buttons["스킬"].tap() - - let element = app.images.matching(identifier: "icon_coin_bag").element( - boundBy: 1 - ) - // 업그레이드 반복 (최고레벨까지) - var reachedMax = false - // 충분히 많이 탭한다고 가정 - for _ in 0..<100000 { - element.tap() - // 업그레이드 후 상태 확인 - let stateLabel = app.staticTexts.matching(identifier: "Max").element( - boundBy: 1 - ) - if stateLabel.exists { - reachedMax = true - break - } - } - // 검증 - XCTAssertTrue(reachedMax, "스킬이 최고 레벨에 도달해야 합니다") - } -} From 9a6eda3fd9b4d66c0dedce6ce8dfe08151b0b9a7 Mon Sep 17 00:00:00 2001 From: snughnu Date: Tue, 3 Feb 2026 22:52:20 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=EA=B0=80=EA=B2=A9=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=A0=95=EB=A0=AC=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignSystem/Components/ItemRow.swift | 2 +- .../DesignSystem/Components/PriceButton.swift | 45 ++++++++++--------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/ItemRow.swift b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/ItemRow.swift index 18cb7a7d..5e8be5ae 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/ItemRow.swift +++ b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/ItemRow.swift @@ -72,7 +72,7 @@ struct ItemRow: View { PriceButton( cost: cost, state: state, - axis: .horizontal, + axis: .vertical, width: Constant.priceButtonWidth, action: action, onLongPressRepeat: onLongPressAction diff --git a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/PriceButton.swift b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/PriceButton.swift index 629fb551..2ed3d5c1 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/PriceButton.swift +++ b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/PriceButton.swift @@ -10,7 +10,7 @@ import SwiftUI private enum Constant { enum Layout { static let cornerRadius: CGFloat = 5 - static let buttonHeight: CGFloat = 38 + static let buttonHeight: CGFloat = 44 static let contentSpacing: CGFloat = 3 static let horizontalPadding: CGFloat = 8 } @@ -133,31 +133,32 @@ struct PriceButton: View { @ViewBuilder var contentViews: some View { - HStack { + Group { if state == .reachedMax { Text("Max") .textStyle(.caption) .foregroundStyle(.white) - } - else if cost.gold > 0 { - CurrencyLabel( - axis: .horizontal, - icon: .gold, - textStyle: .caption, - value: cost.gold - ) - .foregroundStyle(.white) - .fixedSize() - } - else if cost.diamond > 0 { - CurrencyLabel( - axis: .horizontal, - icon: .diamond, - textStyle: .caption, - value: cost.diamond - ) - .foregroundStyle(.white) - .fixedSize() + } else { + if cost.gold > 0 { + CurrencyLabel( + axis: .horizontal, + icon: .gold, + textStyle: .caption, + value: cost.gold + ) + .foregroundStyle(.white) + .fixedSize() + } + if cost.diamond > 0 { + CurrencyLabel( + axis: .horizontal, + icon: .diamond, + textStyle: .caption, + value: cost.diamond + ) + .foregroundStyle(.white) + .fixedSize() + } } } .fixedSize() From dcf2afc2a8ee8af36137beb0881fb30cb1084e8a Mon Sep 17 00:00:00 2001 From: snughnu Date: Tue, 3 Feb 2026 22:52:37 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=ED=86=A0=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=B5=9C=EB=8C=80=20=ED=99=94=EB=A9=B4=20=EB=B9=84=EC=9C=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SoloDeveloperTraining/DesignSystem/Components/Toast.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/Toast.swift b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/Toast.swift index ad3dcdaf..e34a42dd 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/Toast.swift +++ b/SoloDeveloperTraining/SoloDeveloperTraining/DesignSystem/Components/Toast.swift @@ -17,7 +17,7 @@ private enum Constant { } enum Width { - static let maxRatio: CGFloat = 0.7 + static let maxRatio: CGFloat = 0.9 } enum Shadow { From d4f3234ee7944cb62ba37c47e566393c7efa372e Mon Sep 17 00:00:00 2001 From: snughnu Date: Tue, 3 Feb 2026 22:53:12 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=EB=A1=B1=ED=94=84=EB=A0=88=EC=8A=A4?= =?UTF-8?q?=20=EA=B0=84=EA=B2=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/LongPressRepeatModifier.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SoloDeveloperTraining/SoloDeveloperTraining/Extensions/LongPressRepeatModifier.swift b/SoloDeveloperTraining/SoloDeveloperTraining/Extensions/LongPressRepeatModifier.swift index b154e844..a5924221 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining/Extensions/LongPressRepeatModifier.swift +++ b/SoloDeveloperTraining/SoloDeveloperTraining/Extensions/LongPressRepeatModifier.swift @@ -6,8 +6,8 @@ import SwiftUI private enum Constant { - static let minimumDuration: Double = 1 - static let repeatInterval: TimeInterval = 0.2 + static let minimumDuration: Double = 0.5 + static let repeatInterval: TimeInterval = 0.1 } struct LongPressRepeatModifier: ViewModifier { From 99e47c95ea3a6c4365ba0d03459bac57ec528550 Mon Sep 17 00:00:00 2001 From: snughnu Date: Tue, 3 Feb 2026 22:55:32 +0900 Subject: [PATCH 5/5] =?UTF-8?q?chore:=20v1.1.2=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SoloDeveloperTraining.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj b/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj index e4e59857..01aa4309 100644 --- a/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj +++ b/SoloDeveloperTraining/SoloDeveloperTraining.xcodeproj/project.pbxproj @@ -490,7 +490,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp10.SoloDeveloperTraining; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -532,7 +532,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp10.SoloDeveloperTraining; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES;