docs(recommendation): 서브 배너 리뷰와 QA 증거를 보존한다

This commit is contained in:
Yu Sung
2026-10-30 12:19:58 +09:00
parent 7a42db66bc
commit 32ab7797e0
206 changed files with 21989 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

@@ -0,0 +1,470 @@
[
{
"file" : "0000.png",
"time" : 913495.54207174003
},
{
"file" : "0001.png",
"time" : 913495.5738208961
},
{
"file" : "0002.png",
"time" : 913495.61067922611
},
{
"time" : 913495.64156974305,
"file" : "0003.png"
},
{
"time" : 913495.6749411471,
"file" : "0004.png"
},
{
"file" : "0005.png",
"time" : 913495.70521654701
},
{
"time" : 913495.73877406307,
"file" : "0006.png"
},
{
"file" : "0007.png",
"time" : 913495.7714096501
},
{
"time" : 913495.80537242105,
"file" : "0008.png"
},
{
"time" : 913495.84002024506,
"file" : "0009.png"
},
{
"file" : "0010.png",
"time" : 913495.87342155003
},
{
"file" : "0011.png",
"time" : 913495.91759019205
},
{
"time" : 913495.93913621211,
"file" : "0012.png"
},
{
"file" : "0013.png",
"time" : 913495.9718883941
},
{
"time" : 913496.01687527308,
"file" : "0014.png"
},
{
"file" : "0015.png",
"time" : 913496.04254880711
},
{
"file" : "0016.png",
"time" : 913496.07467698609
},
{
"file" : "0017.png",
"time" : 913496.10751351411
},
{
"file" : "0018.png",
"time" : 913496.14147810102
},
{
"time" : 913496.172093114,
"file" : "0019.png"
},
{
"file" : "0020.png",
"time" : 913496.20843185706
},
{
"time" : 913496.2405724331,
"file" : "0021.png"
},
{
"time" : 913496.27334535203,
"file" : "0022.png"
},
{
"time" : 913496.30913038005,
"file" : "0023.png"
},
{
"file" : "0024.png",
"time" : 913496.34009797906
},
{
"file" : "0025.png",
"time" : 913496.37281471805
},
{
"file" : "0026.png",
"time" : 913496.455701945
},
{
"time" : 913496.50706537208,
"file" : "0027.png"
},
{
"file" : "0028.png",
"time" : 913496.54125389305
},
{
"file" : "0029.png",
"time" : 913496.5738092541
},
{
"file" : "0030.png",
"time" : 913496.6069761751
},
{
"file" : "0031.png",
"time" : 913496.64345990401
},
{
"file" : "0032.png",
"time" : 913496.67478215508
},
{
"file" : "0033.png",
"time" : 913496.70709522709
},
{
"file" : "0034.png",
"time" : 913496.74192454701
},
{
"file" : "0035.png",
"time" : 913496.77307740704
},
{
"time" : 913496.80924846802,
"file" : "0036.png"
},
{
"file" : "0037.png",
"time" : 913496.84352450003
},
{
"file" : "0038.png",
"time" : 913496.87277250108
},
{
"file" : "0039.png",
"time" : 913496.9077881251
},
{
"file" : "0040.png",
"time" : 913496.95619421406
},
{
"file" : "0041.png",
"time" : 913496.9842686241
},
{
"time" : 913497.00723700109,
"file" : "0042.png"
},
{
"time" : 913497.041060513,
"file" : "0043.png"
},
{
"time" : 913497.07430782309,
"file" : "0044.png"
},
{
"file" : "0045.png",
"time" : 913497.10735687101
},
{
"file" : "0046.png",
"time" : 913497.14334790211
},
{
"time" : 913497.17468008504,
"file" : "0047.png"
},
{
"time" : 913497.2073035331,
"file" : "0048.png"
},
{
"file" : "0049.png",
"time" : 913497.2407012051
},
{
"file" : "0050.png",
"time" : 913497.27261283004
},
{
"file" : "0051.png",
"time" : 913497.30841093604
},
{
"time" : 913497.36005954805,
"file" : "0052.png"
},
{
"file" : "0053.png",
"time" : 913497.37658144103
},
{
"file" : "0054.png",
"time" : 913497.40616276604
},
{
"file" : "0055.png",
"time" : 913497.44372079405
},
{
"time" : 913497.47105816507,
"file" : "0056.png"
},
{
"file" : "0057.png",
"time" : 913497.50395031006
},
{
"time" : 913497.54083171708,
"file" : "0058.png"
},
{
"file" : "0059.png",
"time" : 913497.573211696
},
{
"file" : "0060.png",
"time" : 913497.60865372606
},
{
"time" : 913497.64094713808,
"file" : "0061.png"
},
{
"time" : 913497.67296079407,
"file" : "0062.png"
},
{
"file" : "0063.png",
"time" : 913497.70777579001
},
{
"time" : 913497.74030354002,
"file" : "0064.png"
},
{
"file" : "0065.png",
"time" : 913497.77367360005
},
{
"file" : "0066.png",
"time" : 913497.80816427805
},
{
"file" : "0067.png",
"time" : 913497.85291612009
},
{
"time" : 913497.8853847651,
"file" : "0068.png"
},
{
"time" : 913497.9067391901,
"file" : "0069.png"
},
{
"time" : 913497.95591217605,
"file" : "0070.png"
},
{
"time" : 913497.98578011105,
"file" : "0071.png"
},
{
"file" : "0072.png",
"time" : 913498.00512788806
},
{
"file" : "0073.png",
"time" : 913498.05205323
},
{
"file" : "0074.png",
"time" : 913498.08894538402
},
{
"time" : 913498.11515654309,
"file" : "0075.png"
},
{
"file" : "0076.png",
"time" : 913498.15184456704
},
{
"file" : "0077.png",
"time" : 913498.17095839209
},
{
"file" : "0078.png",
"time" : 913498.21903711604
},
{
"file" : "0079.png",
"time" : 913498.25633848202
},
{
"time" : 913498.28123657801,
"file" : "0080.png"
},
{
"time" : 913498.31629434205,
"file" : "0081.png"
},
{
"file" : "0082.png",
"time" : 913498.339072
},
{
"file" : "0083.png",
"time" : 913498.38532137405
},
{
"time" : 913498.41876535304,
"file" : "0084.png"
},
{
"time" : 913498.4510205501,
"file" : "0085.png"
},
{
"time" : 913498.48649811209,
"file" : "0086.png"
},
{
"file" : "0087.png",
"time" : 913498.51935760211
},
{
"time" : 913498.55137622508,
"file" : "0088.png"
},
{
"time" : 913498.58565475,
"file" : "0089.png"
},
{
"time" : 913498.61504772911,
"file" : "0090.png"
},
{
"file" : "0091.png",
"time" : 913498.65260026406
},
{
"file" : "0092.png",
"time" : 913498.68563959002
},
{
"time" : 913498.71734139905,
"file" : "0093.png"
},
{
"time" : 913498.75264153909,
"file" : "0094.png"
},
{
"file" : "0095.png",
"time" : 913498.78606353805
},
{
"time" : 913498.81542745605,
"file" : "0096.png"
},
{
"file" : "0097.png",
"time" : 913498.85264388402
},
{
"file" : "0098.png",
"time" : 913498.88223846711
},
{
"time" : 913498.9185269681,
"file" : "0099.png"
},
{
"file" : "0100.png",
"time" : 913498.938407565
},
{
"time" : 913498.9707252091,
"file" : "0101.png"
},
{
"time" : 913499.00930571207,
"file" : "0102.png"
},
{
"time" : 913499.0412945631,
"file" : "0103.png"
},
{
"file" : "0104.png",
"time" : 913499.07240307203
},
{
"time" : 913499.10760145809,
"file" : "0105.png"
},
{
"file" : "0106.png",
"time" : 913499.14348651504
},
{
"file" : "0107.png",
"time" : 913499.17313443404
},
{
"file" : "0108.png",
"time" : 913499.20785826608
},
{
"time" : 913499.24082741106,
"file" : "0109.png"
},
{
"time" : 913499.27446252503,
"file" : "0110.png"
},
{
"file" : "0111.png",
"time" : 913499.3080595911
},
{
"time" : 913499.34256857308,
"file" : "0112.png"
},
{
"file" : "0113.png",
"time" : 913499.37193783605
},
{
"time" : 913499.41522673611,
"file" : "0114.png"
},
{
"time" : 913499.44977159204,
"file" : "0115.png"
},
{
"time" : 913499.48206619604,
"file" : "0116.png"
}
]
@@ -0,0 +1,18 @@
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' started.
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' passed (17.427 seconds).
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames]' started.
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:/Users/klaus/Develop/sodalive/iOS/SodaLive/work/tests/SubBannerGestureUITests.swift:21: error: -[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames] : XCTAssertEqual failed: ("taps=1;last=1") is not equal to ("taps=0;last=0")
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames]' failed (8.351 seconds).
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap]' started.
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:/Users/klaus/Develop/sodalive/iOS/SodaLive/work/tests/SubBannerGestureUITests.swift:21: error: -[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap] : XCTAssertEqual failed: ("taps=1;last=1") is not equal to ("taps=0;last=0")
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:Test Case '-[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap]' failed (7.549 seconds).
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log: Executed 3 tests, with 2 failures (0 unexpected) in 33.327 (33.331) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log: Executed 3 tests, with 2 failures (0 unexpected) in 33.327 (33.332) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log: Executed 3 tests, with 2 failures (0 unexpected) in 33.327 (33.334) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-boundary.log:** TEST FAILED **
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log:Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' started.
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log:Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' passed (16.185 seconds).
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log: Executed 1 test, with 0 failures (0 unexpected) in 16.185 (16.187) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log: Executed 1 test, with 0 failures (0 unexpected) in 16.185 (16.188) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log: Executed 1 test, with 0 failures (0 unexpected) in 16.185 (16.190) seconds
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/sub-banner-touch.n2JrMa/red-wide-window.log:** TEST SUCCEEDED **
@@ -0,0 +1,18 @@
Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' started.
t = 16.64s Synthesize event
Test Case '-[GestureUITests.SubBannerGestureUITests testAutomaticFiveSecondWrapFrames]' passed (17.854 seconds).
Test Case '-[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames]' started.
t = 8.72s Synthesize event
t = 9.15s Press "1 / 3" Button[0.20, 0.50] for 0.1 seconds, then drag to "1 / 3" Button[0.80, 0.50] with velocity of 500.00 pixels per second, and then hold for 0.0 seconds
t = 9.46s Synthesize event
/Users/klaus/Develop/sodalive/iOS/SodaLive/work/tests/SubBannerGestureUITests.swift:20: error: -[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames] : XCTAssertEqual failed: ("taps=1;last=1") is not equal to ("taps=0;last=0")
Test Case '-[GestureUITests.SubBannerGestureUITests testManualBoundaryFrames]' failed (12.351 seconds).
Test Case '-[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap]' started.
t = 9.09s Press "1 / 3" Button[0.80, 0.50] for 0.1 seconds, then drag to "1 / 3" Button[0.20, 0.50] with velocity of 500.00 pixels per second, and then hold for 0.0 seconds
t = 9.32s Synthesize event
/Users/klaus/Develop/sodalive/iOS/SodaLive/work/tests/SubBannerGestureUITests.swift:20: error: -[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap] : XCTAssertEqual failed: ("taps=1;last=1") is not equal to ("taps=0;last=0")
Test Case '-[GestureUITests.SubBannerGestureUITests testSwipeDoesNotTap]' failed (11.294 seconds).
Executed 3 tests, with 2 failures (0 unexpected) in 41.500 (41.508) seconds
Executed 3 tests, with 2 failures (0 unexpected) in 41.500 (41.513) seconds
Executed 3 tests, with 2 failures (0 unexpected) in 41.500 (41.517) seconds
** TEST FAILED **
@@ -0,0 +1 @@
b3e4c5333cf8249ccd7773b5cabd372efb5a5565323bd7778034e110386151fd /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift
@@ -0,0 +1 @@
b3e4c5333cf8249ccd7773b5cabd372efb5a5565323bd7778034e110386151fd /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift
@@ -0,0 +1 @@
7e25db3076d545ffc61ea3a1c5585e7b8a617964ef406d7570286d75a75e010a /Users/klaus/Develop/sodalive/iOS/SodaLive/docs/20261029_추천_서브_배너/reviews/evidence/native-final/production-source-snapshot/SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift
@@ -0,0 +1,61 @@
{
"devicesAndConfigurations" : [
{
"device" : {
"architecture" : "x86_64",
"deviceId" : "B5F2BA0D-327C-4EE3-94EE-39710A0E1ACC",
"deviceName" : "SubBannerGestureQA-20261030",
"modelName" : "iPhone SE (3rd generation)",
"osBuildNumber" : "22D8075",
"osVersion" : "18.3.1",
"platform" : "iOS Simulator"
},
"expectedFailures" : 0,
"failedTests" : 2,
"passedTests" : 1,
"skippedTests" : 0,
"testPlanConfiguration" : {
"configurationId" : "1",
"configurationName" : "Test Scheme Action"
}
}
],
"environmentDescription" : "Gesture · Built with macOS 26.0",
"expectedFailures" : 0,
"failedTests" : 2,
"finishTime" : 1793289744.783,
"passedTests" : 1,
"result" : "Failed",
"skippedTests" : 0,
"startTime" : 1793289548.885,
"statistics" : [
],
"testFailures" : [
{
"failureText" : "XCTAssertEqual failed: (\"taps=1;last=1\") is not equal to (\"taps=0;last=0\")",
"targetName" : "GestureUITests",
"testIdentifier" : 2,
"testIdentifierString" : "SubBannerGestureUITests/testManualBoundaryFrames()",
"testIdentifierURL" : "test://com.apple.xcode/Gesture/GestureUITests/SubBannerGestureUITests/testManualBoundaryFrames",
"testName" : "testManualBoundaryFrames()"
},
{
"failureText" : "XCTAssertEqual failed: (\"taps=1;last=1\") is not equal to (\"taps=0;last=0\")",
"targetName" : "GestureUITests",
"testIdentifier" : 3,
"testIdentifierString" : "SubBannerGestureUITests/testSwipeDoesNotTap()",
"testIdentifierURL" : "test://com.apple.xcode/Gesture/GestureUITests/SubBannerGestureUITests/testSwipeDoesNotTap",
"testName" : "testSwipeDoesNotTap()"
}
],
"title" : "Test - Gesture",
"topInsights" : [
{
"category" : "Common Failures",
"impact" : "100% of failures",
"text" : "2 runs of 2 tests failed with XCTAssertEqual failed: (\"taps=1;last=1\") is not equal to (\"taps=0;last=0\")"
}
],
"totalTestCount" : 3
}
@@ -0,0 +1 @@
7e25db3076d545ffc61ea3a1c5585e7b8a617964ef406d7570286d75a75e010a /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift
@@ -0,0 +1 @@
7e25db3076d545ffc61ea3a1c5585e7b8a617964ef406d7570286d75a75e010a /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift