Add file for UI automation testing. 94/293294/1
authorjykeon <jykeon@samsung.com>
Wed, 24 May 2023 03:41:49 +0000 (12:41 +0900)
committerjykeon <jykeon@samsung.com>
Wed, 24 May 2023 03:49:34 +0000 (12:49 +0900)
It is necessary install guide file and use testing python file.

Signed-off-by: jykeon <jykeon@samsung.com>
Change-Id: Id2383c4eb0b4ccec0f813026cf9e2dd829a0a27a
Signed-off-by: jykeon <jykeon@samsung.com>
docs/script/01_Contents/002. LOVE SONG - 빅뱅.mp3 [new file with mode: 0644]
docs/script/01_Contents/20220721_165923.mp4 [new file with mode: 0644]
docs/script/01_Contents/IMG_8777.jpg [new file with mode: 0644]
docs/script/requirements.txt [new file with mode: 0644]
docs/script/screenShot_vd_smoke_test.py [new file with mode: 0755]
docs/script/tvSetup.py [new file with mode: 0644]
docs/script/utils.py [new file with mode: 0644]

diff --git a/docs/script/01_Contents/002. LOVE SONG - 빅뱅.mp3 b/docs/script/01_Contents/002. LOVE SONG - 빅뱅.mp3
new file mode 100644 (file)
index 0000000..72aad8a
Binary files /dev/null and "b/docs/script/01_Contents/002. LOVE SONG - \353\271\205\353\261\205.mp3" differ
diff --git a/docs/script/01_Contents/20220721_165923.mp4 b/docs/script/01_Contents/20220721_165923.mp4
new file mode 100644 (file)
index 0000000..c630a2f
Binary files /dev/null and b/docs/script/01_Contents/20220721_165923.mp4 differ
diff --git a/docs/script/01_Contents/IMG_8777.jpg b/docs/script/01_Contents/IMG_8777.jpg
new file mode 100644 (file)
index 0000000..f3531bb
Binary files /dev/null and b/docs/script/01_Contents/IMG_8777.jpg differ
diff --git a/docs/script/requirements.txt b/docs/script/requirements.txt
new file mode 100644 (file)
index 0000000..14a07d8
--- /dev/null
@@ -0,0 +1,7 @@
+grpcio
+grpcio-tools
+protobuf
+six
+numpy
+opencv-python
+pillow
diff --git a/docs/script/screenShot_vd_smoke_test.py b/docs/script/screenShot_vd_smoke_test.py
new file mode 100755 (executable)
index 0000000..46f863d
--- /dev/null
@@ -0,0 +1,473 @@
+# test python script must be in same location as aurum_pb2.py
+
+# python3 -m venv v
+# source v/bin/activate
+# pip3 install grpcio grpcio-tools
+#
+# python3 -m grpc_tools.protoc --python_out=. --grpc_python_out=. --proto_path=. aurum.proto
+#
+# python3 <file>.py
+# deactivate 
+
+from utils import *
+
+#4 Menu Control Test
+def ST04_MENU_CONTROL():
+    print("- Menu Test")
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86SysMenu", "org.tizen.menu", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        return False 
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST04_MENU_CONTROL.__name__ + '_Menu.png')
+    SEND_KEY("XF86Back", WAIT_AFTER_KEY)
+    SEND_KEY("XF86Back", WAIT_AFTER_KEY)
+    SEND_KEY("XF86Back", WAIT_AFTER_KEY)
+
+    HOME()
+
+    print("- Broadcasting Info Test")
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86ChannelGuide", "org.tizen.epg", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        return False 
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST04_MENU_CONTROL.__name__ + '_Broadcasting_Info.png')
+
+    HOME()
+
+    print("- Channel Info Test")
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_ACTIVATE", WAIT_FOR_APP_TRANSFROM)
+    #Wait for automatically activated channel info disappear
+    time.sleep(WAIT_FOR_APP_CONTENT_LOAD)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.hbbtv", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST04_MENU_CONTROL.__name__ + '_Channel_Info.png')
+
+    return True
+
+#8 My content Test
+def ST08_MY_CONTENT():
+    print("- My Contents Launching")
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.mycontents", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    TAKE_SCREENSHOT(ST08_MY_CONTENT.__name__ + '_Launched.png')
+
+    print("- My Contents Video Play")
+    SEND_KEY("Return", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.mycontent-video-player-tv", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    SEND_KEY("Right", WAIT_AFTER_KEY)    
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST08_MY_CONTENT.__name__ + '_Video_Player.png')
+    SEND_KEY("XF86Back", WAIT_AFTER_KEY)    
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Back", "com.samsung.tv.mycontents", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    
+    print("- My Contents Photo Play")
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.mycontent-photo-player-tv", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False        
+    TAKE_SCREENSHOT(ST08_MY_CONTENT.__name__ + '_Photo_Player.png')
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Back", "com.samsung.tv.mycontents", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    
+    print("- My Contents Music Play")
+    SEND_KEY("Left", WAIT_AFTER_KEY)    
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_IDLE", WAIT_FOR_APP_CONTENT_LOAD) #Wait till view transformed
+    TAKE_SCREENSHOT(ST08_MY_CONTENT.__name__ + '_Music_Play.png')
+
+    #Back to default view
+    SEND_KEY("XF86Back", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+
+
+    return True
+
+#7, 9, 16, 17. App Download, install and run
+def ST07_09_16_17_APP_INSTALL():
+    print("- Apps Launching")
+    #FIXME: Use XPath to find APPS
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    
+    print("- Search TVING Application")
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.store", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_IDLE", WAIT_FOR_APP_TRANSFROM) #Wait till view transformed
+    #FIXME: Input text directly or other way :(
+    #FIXME: If keypboard already in English mode. it will fail :(
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM) #Change Lang
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Left", WAIT_AFTER_KEY) 
+    SEND_KEY("Return", WAIT_AFTER_KEY) #t
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)    
+    SEND_KEY("Return", WAIT_AFTER_KEY) #v
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_AFTER_KEY) #i
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_IDLE", WAIT_AFTER_KEY) #Select TVING App
+    #FIXME: TVing isInstalled is not working
+    print("- Install TVing")
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.notification-app", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+    TAKE_SCREENSHOT(ST07_09_16_17_APP_INSTALL.__name__ + '_Install_Notification.png')
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Exit", "com.samsung.tv.store", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+    print("- Launch TVing")
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", TVING_APP, WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        return False
+    TAKE_SCREENSHOT(ST07_09_16_17_APP_INSTALL.__name__ + '_TVing_Launch.png')
+    print("- Delete TVing")
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Exit", "com.samsung.tv.csfs", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        return False 
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.store", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_CONTENT_LOAD) == False:
+        return False
+    SEND_KEY("XF86Back", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("XF86Back", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("Down", WAIT_AFTER_KEY) 
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("Left", WAIT_AFTER_KEY) 
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+    TAKE_SCREENSHOT(ST07_09_16_17_APP_INSTALL.__name__ + '_TVing_Delete.png')
+    
+    #FIXME: Check app is not installed
+    return True
+
+def ST10_11_12_CHANNEL_VOLUME_CHANGE():
+    #Csfs -> DTV or TV Plus (tv-viewer)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.tv-viewer", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+
+    #Volume Changes
+    SEND_KEY_WAIT_EVENT("XF86AudioRaiseVolume", "EVENT_WINDOW_RAISE", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="XF86AudioRaiseVolume", durationMs=2000, intervalMs=500))
+    TAKE_SCREENSHOT(ST10_11_12_CHANNEL_VOLUME_CHANGE.__name__ + '_Volume_Up.png')
+
+    SEND_KEY_WAIT_EVENT("XF86AudioLowerVolume", "EVENT_WINDOW_RAISE", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="XF86AudioLowerVolume", durationMs=2000, intervalMs=500))
+    TAKE_SCREENSHOT(ST10_11_12_CHANNEL_VOLUME_CHANGE.__name__ + '_Volume_Down.png')
+
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Home", "com.samsung.tv.csfs", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+
+    #Csfs -> DTV or TV Plus (tv-viewer)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.tv-viewer", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+
+    #Channel Changes
+    SEND_KEY_WAIT_EVENT("XF86RaiseChannel", "EVENT_WINDOW_RAISE", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="XF86RaiseChannel", durationMs=2000, intervalMs=500))
+    TAKE_SCREENSHOT(ST10_11_12_CHANNEL_VOLUME_CHANGE.__name__ + '_Channel_Up.png')
+
+    SEND_KEY_WAIT_EVENT("XF86LowerChannel", "EVENT_WINDOW_RAISE", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="XF86LowerChannel", durationMs=2000, intervalMs=500))
+    TAKE_SCREENSHOT(ST10_11_12_CHANNEL_VOLUME_CHANGE.__name__ + '_Channel_Down.png')
+
+    return True
+
+def ST13_BROWSER():
+    CHECK_APP_INSTALLED()
+    print("- Launch browser")
+    SEND_KEY("Up", WAIT_AFTER_KEY)   
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.browser", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    TAKE_SCREENSHOT(ST13_BROWSER.__name__ + '_Launched.png')
+
+    print("- TV On/OFF Test in Browser")
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    time.sleep(10)
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("", "org.tizen.browser", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD):
+        return False
+    CHECK_NOTI_POPUP()
+    TAKE_SCREENSHOT(ST13_BROWSER.__name__ + '_After_Turn_Off.png')
+
+    RESET_TO_TVPLUS()
+
+    return True
+
+def ST14_15_YOUTUBE():
+    CHECK_APP_INSTALLED()
+    print("- Launch youtube")
+    SEND_KEY("Up", WAIT_AFTER_KEY)   
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.cobalt-yt", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    TAKE_SCREENSHOT(ST14_15_YOUTUBE.__name__ + '_Launched.png')
+
+    print("- TV On/OFF Test in Youtube")
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    time.sleep(10)
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("", "com.samsung.tv.cobalt-yt", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD):
+        return False
+    CHECK_NOTI_POPUP()
+    TAKE_SCREENSHOT(ST14_15_YOUTUBE.__name__ + '_After_Turn_Off.png')
+
+    RESET_TO_TVPLUS()
+
+    return True
+
+def ST18_MULTITASKING():
+    print("- Launch youtube")
+    SEND_KEY("Up", WAIT_AFTER_KEY)   
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.cobalt-yt", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS()
+        return False
+    TAKE_SCREENSHOT(ST18_MULTITASKING.__name__ + '_Youtube_Launched.png')
+    SEND_KEY("Return", WAIT_AFTER_KEY)
+    time.sleep(10) #Play video
+
+    print("- Launch csfs")
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Home", "com.samsung.tv.csfs", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+    TAKE_SCREENSHOT(ST18_MULTITASKING.__name__ + '_csfs_Launched.png')
+
+    print("- Launch browser")
+    SEND_KEY("Up", WAIT_AFTER_KEY)   
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.browser", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        for i in range(6):
+            SEND_KEY("Left", WAIT_AFTER_KEY)
+        SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+        return False
+    TAKE_SCREENSHOT(ST18_MULTITASKING.__name__ + '_browser_Launched.png')
+    RESET_TO_TVPLUS()
+
+    return True
+
+def ST19_20_NETFLIX():
+    CHECK_APP_INSTALLED()
+    print("- Launch netflix")
+    SEND_KEY("Up", WAIT_AFTER_KEY)   
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    #nexflix 
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.netflix-app", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        RESET_TO_TVPLUS() 
+        return False
+    TAKE_SCREENSHOT(ST19_20_NETFLIX.__name__ + '_Netflix_Launched.png')
+
+    print("- TV On/OFF Test in Netflix")
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    time.sleep(10)
+    SEND_KEY("XF86PowerOff", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("", "org.tizen.netflix-app", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD):
+        return False
+    CHECK_NOTI_POPUP()
+    TAKE_SCREENSHOT(ST19_20_NETFLIX.__name__ + '_After_Turn_Off.png')
+
+    RESET_TO_TVPLUS()
+
+    return True
+
+def ST21_22_AMBIENT():
+    print("- Run Ambient")
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_IDLE", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST21_22_AMBIENT.__name__ + '_Ambient_Start.png')
+
+    print("- Launch Art-app")
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY) 
+    SEND_KEY("Down", WAIT_AFTER_KEY) 
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.art-app", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LAUNCH) == False:
+        return False
+    TAKE_SCREENSHOT(ST21_22_AMBIENT.__name__ + '_Artapp_Launched.png')
+
+    #FIXME: We need to test ST_22 but embient key is not exist.
+    #Back to csfs home view
+    SEND_KEY("XF86Exit", WAIT_FOR_APP_LOAD)
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_IDLE", WAIT_AFTER_KEY)
+
+    return True
+
+def ST23_MULTIVIEW():
+    SEND_KEY("Left", WAIT_AFTER_KEY)    
+    SEND_KEY("Down", WAIT_AFTER_KEY) 
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.multiscreen", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        return False
+    TAKE_SCREENSHOT(ST23_MULTIVIEW.__name__ + '_Multiview_Launched.png')    
+
+    RESET_TO_TVPLUS()
+
+    return True
+
+def ST24_ROTATION():
+    print("- Device rotation to 90, 180, 270, 0")
+    degrees = [90, 180, 270, 0]
+
+    for degree in degrees:
+        DEVICE_ROTATION(degree)
+        time.sleep(WAIT_FOR_APP_TRANSFROM)
+        TAKE_SCREENSHOT(ST24_ROTATION.__name__ + '_' + str(degree) + '.png')
+
+    return True
+
+def ST25_SEARCH():
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "com.samsung.tv.searchall", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        return False
+    TAKE_SCREENSHOT(ST25_SEARCH.__name__ + '_Searchall_Launched.png')
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM) #a
+    SEND_KEY("Right", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_CONTENT_LOAD) #b    
+    TAKE_SCREENSHOT(ST25_SEARCH.__name__ + '_Searchall_Searching.png')
+
+    #Return to Korean Keyboard
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Return", WAIT_FOR_APP_TRANSFROM)
+
+    return True
+
+def ST26_CSFS():
+    print("- CSFS test")
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="Right", durationMs=5000, intervalMs=50)) # long press key
+    TAKE_SCREENSHOT(ST26_CSFS.__name__ + '_LongPress_Move.png')
+    
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    TAKE_SCREENSHOT(ST26_CSFS.__name__ + '_Thumbnail_Move.png')
+
+    SEND_KEY("Left", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    SEND_KEY("Down", WAIT_AFTER_KEY)
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="REPEAT", XF86keyCode="Right", durationMs=5000, intervalMs=50)) # long press key
+    TAKE_SCREENSHOT(ST26_CSFS.__name__ + '_Setting_Move.png')
+
+    return True
+
+def PRE_TEST():
+    CHECK_NOTI_POPUP()
+    HOME()
+
+def POST_TEST():
+    HOME()
+
+def runTest(testFunc):
+    global SUCCESS
+    global FAIL
+    global TEST_RESULT
+    print("Test Start : ", testFunc)
+    PRE_TEST()
+    ret = testFunc()
+    POST_TEST()
+    print("Test Finish Result = " + str(ret) + "\n")
+    if ret:
+        SUCCESS += 1
+    else:
+        FAIL += 1
+
+    TEST_RESULT += [
+        {
+            'test_name'  : str(testFunc).split(' ')[1],
+            'test_result': str(ret)
+        }
+    ]
+
+def run():
+    startTime = time.time()
+    
+    INIT_VD_SMOKE_TEST()
+
+    #Start TV Smoke Test
+    if CHECK_USB_PLUGGED():
+        runTest(ST08_MY_CONTENT)
+    runTest(ST10_11_12_CHANNEL_VOLUME_CHANGE)
+    runTest(ST26_CSFS)
+    runTest(ST24_ROTATION)
+    runTest(ST13_BROWSER)
+    runTest(ST19_20_NETFLIX)
+    runTest(ST14_15_YOUTUBE)
+    runTest(ST18_MULTITASKING)
+    runTest(ST23_MULTIVIEW)
+    runTest(ST21_22_AMBIENT)
+    runTest(ST04_MENU_CONTROL)
+    runTest(ST07_09_16_17_APP_INSTALL)
+    runTest(ST25_SEARCH)
+
+    CREATE_HTML_FILE()
+
+    print("--- Total Cases : {} [ Success : {} Fail : {} ] ---\n".format(SUCCESS+FAIL, SUCCESS, FAIL))
+    print("--- Test takes " + f"{time.time() - startTime: .3f} sec ---\n")
+
+    print("--- Exist CS file list ---")
+    CHECK_CRASH_REPORT()
+if __name__ == '__main__':                                         
+    run()
diff --git a/docs/script/tvSetup.py b/docs/script/tvSetup.py
new file mode 100644 (file)
index 0000000..8df3cbe
--- /dev/null
@@ -0,0 +1,15 @@
+import os
+import subprocess
+import re
+import sys
+import time
+
+def run_command(command):
+    stream = os.popen(command)
+    output = stream.read()
+
+# Start scrip here
+run_command("sdb forward tcp:50051 tcp:50051")
+run_command("sdb shell app_launcher -s org.tizen.aurum-bootstrap")
+# Wait 1 sec till bootstrap launched
+time.sleep(1)
diff --git a/docs/script/utils.py b/docs/script/utils.py
new file mode 100644 (file)
index 0000000..539cf78
--- /dev/null
@@ -0,0 +1,365 @@
+from __future__ import print_function
+import os
+import subprocess
+import re
+import sys
+import time
+import datetime
+from aurum_pb2 import *
+from aurum_pb2_grpc import BootstrapStub
+import grpc
+import numpy as np
+import cv2
+from PIL import Image
+
+#Defined values
+WAIT_AFTER_KEY = 1
+WAIT_FOR_APP_TRANSFROM = 3
+WAIT_FOR_APP_CONTENT_LOAD = 5
+WAIT_FOR_APP_LOAD = 10
+WAIT_FOR_APP_LAUNCH = 30
+WAIT_FOR_CONTENT_DOWNLOAD = 40
+TIMEOUT_MS = 5000
+LOGIN = 0
+TVING_APP = "HLoFAbhj6Q.TVING"
+SUCCESS = 0
+FAIL = 0
+
+global DEVICE_INFO
+global FOLDER_NAME
+TEST_RESULT = []
+
+#Class for Stub singleton
+class StubSingleton:
+    _instance = None
+
+    @classmethod
+    def get_stub(cls):
+        if cls._instance is None:
+            cls._instance = BootstrapStub(grpc.insecure_channel('127.0.0.1:50051', options=[ ('grpc.max_send_message_length', 1920*1080*4+5), ('grpc.max_receive_message_length', 1920*1080*4+5)]))
+        return cls._instance
+
+#Check given applicaiton running state
+def CHECK_APP_RUNNING(app):
+    return StubSingleton.get_stub().getAppInfo(ReqGetAppInfo(packageName=app)).isFocused
+
+#Please given message and back to home
+def IS_APP_LAUNCHING_FAIL(app):
+    if CHECK_APP_RUNNING(app) == False:
+        print(app +" launching fail Back to home")
+        SEND_KEY_WAIT_EVENT("XF86Home", "EVENT_WINDOW_ACTIVATE", WAIT_FOR_APP_TRANSFROM)
+        return False
+    return True
+
+#Send key and wait event untill waitSec then sleep for delay time
+def SEND_KEY_WAIT_APP_LAUNCHING(key, app, waitSec, delay):
+    launch_request = time.time()
+    SEND_KEY(key, WAIT_AFTER_KEY)
+    while 1:
+        time.sleep(0.1)
+        if CHECK_APP_RUNNING(app) == True:
+            time.sleep(delay)
+            print(app + " Launched")
+            break
+        if time.time() - launch_request > waitSec:
+            print(app + " Launch Fail")
+            return False
+
+#Take screenshot with given file name
+def TAKE_SCREENSHOT(name):
+    global FOLDER_NAME
+    responses = StubSingleton.get_stub().takeScreenshot(ReqTakeScreenshot(getPixels=True))
+    for response in responses:
+        buf = np.frombuffer(response.image, dtype=np.uint8).reshape(1080,1920,4)
+        image = cv2.cvtColor(buf, cv2.COLOR_RGBA2RGB)
+        save_location = f"{FOLDER_NAME}/{name}"
+        cv2.imwrite(save_location, image)
+        #with open(name, 'wb') as fout:
+        #    cv2.imwrite(name, image)
+
+#Run command in device shell
+def RUN_COMMAND(command):
+    stream = os.popen(command)
+    output = stream.read()
+    return output
+
+#Login samsung account
+def SAMSUNG_ACCOUNT_LOGIN():
+    global LOGIN
+    if LOGIN:
+        print("Already setup samsung account\n")
+    else:
+        RUN_COMMAND("sdb shell ssoscmd -c 4 -d iottest0909@gmail.com@SSOSVCAPI@1q2w3e")
+        print("Samsung account login\n")
+        LOGIN = 1
+        time.sleep(10)
+
+#Device Rotation with given degree
+def DEVICE_ROTATION(degree):
+    RUN_COMMAND("sdb shell winfo -rotation set " + str(degree))
+
+#Send given key event and wait given specific event till @TIMEOUT_MS then wait some time
+"""
+      EVENT_WINDOW_ACTIVATE
+      EVENT_WINDOW_DEACTIVATE
+      EVENT_WINDOW_MINIMIZE
+      EVENT_WINDOW_RAISE
+      EVENT_WINDOW_IDLE
+      EVENT_STATE_CHANGED_FOCUSED
+"""
+def SEND_KEY_WAIT_EVENT(key, event, delay):
+    StubSingleton.get_stub().actionAndWaitEvent(ReqActionAndWaitEvent(type="KEY", XF86keyCode=key, eventType=event, timeoutMs=TIMEOUT_MS))
+    time.sleep(delay)
+
+#Send key event and wait some time
+def SEND_KEY(key, delay):
+    StubSingleton.get_stub().sendKey(ReqKey(type="XF86", actionType="STROKE", XF86keyCode=key))
+    time.sleep(delay)
+
+#Back to home
+def HOME():
+    SEND_KEY_WAIT_EVENT("XF86Home", "EVENT_WINDOW_ACTIVATE", WAIT_FOR_APP_TRANSFROM)
+
+#Check notification popup activated or not it also can test "7 Global Notification Test"
+def CHECK_NOTI_POPUP():
+    if StubSingleton.get_stub().getAppInfo(ReqGetAppInfo(packageName='com.samsung.tv.notification-app')).isRunning:
+        TAKE_SCREENSHOT('ST7_NOTI_POPUP.png')
+        print("#7. Global Notification")
+        SEND_KEY_WAIT_EVENT("Return", "EVENT_WINDOW_DEACTIVATE")
+        time.sleep(WAIT_FOR_APP_TRANSFROM)
+
+#Check sdb connected or not
+def CHECK_SDB():
+    stream = os.popen("command -v sdb")
+    output = stream.read()
+    if len(output) > 0:
+        return True
+    else:
+        print("Error - Can't run sdb")
+        return False
+
+#Reset to TVPlus
+def RESET_TO_TVPLUS():
+    print("Reset to TVPlus")
+    if SEND_KEY_WAIT_APP_LAUNCHING("XF86Home", "com.samsung.tv.csfs", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_LOAD) == False:
+        return False
+    SEND_KEY("Up", WAIT_AFTER_KEY)
+    if SEND_KEY_WAIT_APP_LAUNCHING("Return", "org.tizen.tv-viewer", WAIT_FOR_APP_LAUNCH, WAIT_FOR_APP_TRANSFROM) == False:
+        return False
+
+#Print testing device env
+def GET_DEVICE_INFO():
+    global DEVICE_INFO
+    print("--- Test Device Info ---")
+    stream = os.popen("sdb shell cat /etc/info.ini")
+    output = stream.read()
+    DEVICE_INFO = output
+    print(DEVICE_INFO)
+
+#Check aurum ready or not
+def CHECK_AURUM_READY():
+    stream = os.popen("sdb shell 'ps -e | grep aurum-bootstrap'")
+    output = stream.read()
+    if len(output) > 0:
+        return True
+    else:
+        print("Error - aurum-bootstrap not launched on target")
+        print("Try to launch aurum-bootstrap")
+        stream = os.popen("sdb shell app_launcher -s org.tizen.aurum-bootstrap")
+        output = stream.read()
+        time.sleep(1)
+        if len(output) > 0:
+            print("Success to launch aurum-bootstrap")
+            return True
+
+        print("Error - Can't launch aurum-bootstrap")
+        return False
+
+#Create folder to save imgs
+def CREATE_FOLDER_TO_SAVE_CAPTURES():
+    now = datetime.datetime.now()
+    global FOLDER_NAME
+    FOLDER_NAME = now.strftime("VD_ST_%Y-%m-%d_%H-%M-%S")
+    os.mkdir(FOLDER_NAME)
+
+def CHECK_APP_INSTALLED():
+    print("--- Check needed app installed")
+
+    while True:
+        netflix = StubSingleton.get_stub().getAppInfo(ReqGetAppInfo(packageName='org.tizen.netflix-app')).isInstalled
+        youtube = StubSingleton.get_stub().getAppInfo(ReqGetAppInfo(packageName='com.samsung.tv.cobalt')).isInstalled
+        browser = StubSingleton.get_stub().getAppInfo(ReqGetAppInfo(packageName='org.tizen.browser')).isInstalled
+        if netflix and youtube and browser:
+            break
+        print("Waiting app installed [ netflix: {} , youtube: {} , browser: {} ] ".format(netflix, youtube, browser))
+        time.sleep(5)
+
+    HOME()
+
+def CHECK_CRASH_REPORT():
+    print(RUN_COMMAND("sdb shell ls /opt/share/crash/report"))
+
+def CHECK_ELM_ATSPI_MODE():
+    output = RUN_COMMAND("sdb shell cat /etc/profile.d/efl.sh")
+    target_string = "ELM_ATSPI_MODE"
+
+    if target_string in output:
+        return True
+    else:
+        print("Error - Need to add 'ELM_ATSPI_MODE=1' in /etc/profile.d/efl.sh then reboot please. ")
+        return False
+
+def CHECK_USB_PLUGGED():
+    output = RUN_COMMAND("sdb shell lsblk")
+    target_string = "USB"
+
+    if target_string in output:
+        return True
+    else:
+        print("NOTICE - USB is not Plugged. Test can generated except ST08_MY_CONTENT\n")
+        return False
+
+def FIND_IMAGE_WITH_PREFIX(folder_name, prefix):
+    image_files = []
+
+    for file_name in os.listdir(folder_name):
+        file_path = os.path.join(folder_name, file_name)
+
+        if file_name.startswith(prefix):
+            image_files.append(file_path)
+
+    image_files.sort()
+    return image_files
+
+def FILTER_ITEMS_WITH_STRING(arr, search_string):
+    filtered_arr = [item for item in arr if search_string in item]
+    return filtered_arr
+
+def CREATE_HTML_FILE():
+    sorted_result = sorted(TEST_RESULT, key=lambda x: x['test_name'])
+    expected_imgs = GET_EXPECTED_IMAGE_LIST()
+
+    html_content = f'''
+    <!DOCTYPE html>
+    <html>
+    <head>
+      <title>Test Results</title>
+      <div>Test device info : <br> {DEVICE_INFO}</div>
+      <style>
+        table {{
+          border-collapse: collapse;
+          width: 100%;
+        }}
+        th, td {{
+          border: 1px solid black;
+          padding: 8px;
+          text-align: left;
+        }}
+      </style>
+    </head>
+    <body>
+      <h1>Test Results</h1>
+      <table>
+        <tr>
+          <th>Test Name</th>
+          <th>Test Result</th>
+          <th>Expected Image - Tizen 7.0 230516</th>
+          <th>Test Image</th>
+        </tr>
+    '''
+
+    for test in sorted_result:
+        test_name = test['test_name']
+        test_result = test['test_result']
+        test_expected_imgs = FILTER_ITEMS_WITH_STRING(expected_imgs, test_name)
+        test_images = FIND_IMAGE_WITH_PREFIX(FOLDER_NAME, test_name)
+
+        html_content += f'''
+        <tr>
+          <td rowspan={len(test_expected_imgs)}>{test_name}</td>
+          <td rowspan={len(test_expected_imgs)}>{test_result}</td>
+        '''
+
+        for idx in range(len(test_expected_imgs)):
+            if idx != 0:
+                html_content += f'''
+                <tr>
+                '''
+
+            html_content += f'''
+                <td><img src="{test_expected_imgs[idx]}" width="480" height="270" alt="{test_name} Image"></td>
+            '''
+
+            if idx < len(test_images):
+                html_content += f'''
+                    <td><img src="{test_images[idx]}" width="480" height="270" alt="{test_name} Image"></td>
+                '''
+
+            html_content += f'''
+            </tr>
+            '''
+
+    html_content += '''
+      </table>
+    </body>
+    </html>
+    '''
+
+    result = f"{FOLDER_NAME}_Test_Result.html"
+    with open(result, 'w') as file:
+        file.write(html_content)
+
+def GET_EXPECTED_IMAGE_LIST():
+    img_list = [
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST04_MENU_CONTROL_Broadcasting_Info.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST04_MENU_CONTROL_Channel_Info.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST04_MENU_CONTROL_Menu.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST07_09_16_17_APP_INSTALL_Install_Notification.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST07_09_16_17_APP_INSTALL_TVing_Delete.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST07_09_16_17_APP_INSTALL_TVing_Launch.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST08_MY_CONTENT_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST08_MY_CONTENT_Music_Play.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST08_MY_CONTENT_Photo_Player.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST08_MY_CONTENT_Video_Player.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST10_11_12_CHANNEL_VOLUME_CHANGE_Channel_Down.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST10_11_12_CHANNEL_VOLUME_CHANGE_Channel_Up.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST10_11_12_CHANNEL_VOLUME_CHANGE_Volume_Down.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST10_11_12_CHANNEL_VOLUME_CHANGE_Volume_Up.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST13_BROWSER_After_Turn_Off.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST13_BROWSER_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST14_15_YOUTUBE_After_Turn_Off.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST14_15_YOUTUBE_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST18_MULTITASKING_Youtube_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST18_MULTITASKING_browser_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST18_MULTITASKING_csfs_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST19_20_NETFLIX_After_Turn_Off.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST19_20_NETFLIX_Netflix_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST21_22_AMBIENT_Ambient_Start.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST21_22_AMBIENT_Artapp_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST23_MULTIVIEW_Multiview_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST24_ROTATION_0.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST24_ROTATION_180.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST24_ROTATION_270.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST24_ROTATION_90.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST25_SEARCH_Searchall_Launched.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST25_SEARCH_Searchall_Searching.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST26_CSFS_LongPress_Move.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST26_CSFS_Setting_Move.png',
+        'https://pages.github.sec.samsung.net/NUI/AurumTestScript/ReleaseTest/VDSmokeTest/Expected_Images/ST26_CSFS_Thumbnail_Move.png'
+    ]
+
+    return img_list
+
+#Configure Smoke Test
+def INIT_VD_SMOKE_TEST():
+    # Command Timeout Setting
+    StubSingleton.get_stub().setTimeout(ReqSetTimeout(timeout = TIMEOUT_MS))
+    if not CHECK_ELM_ATSPI_MODE():
+        sys.exit()
+    if not CHECK_SDB():
+        sys.exit()
+    if not CHECK_AURUM_READY():
+        sys.exit()
+    GET_DEVICE_INFO()
+    SAMSUNG_ACCOUNT_LOGIN()
+    CREATE_FOLDER_TO_SAVE_CAPTURES()