def exitmenus(): StormTest.PressButton(EXIT) StormTest.WaitSec(3) StormTest.PressButton(SELECT) #in case there is an error on screen StormTest.WaitSec(3) StormTest.PressButton(EXIT) StormTest.WaitSec(3)
def pauseplay(): exitmenus() StormTest.PressButton(PAUSE) StormTest.WaitSec(3) StormTest.PressButton(PLAY) StormTest.WaitSec(3) SThelperNew.takeScreenshot("Play Live", "Live TV should be playing")
def replayfeed(takeShot): if takeShot != True: StormTest.PressButton(REPLAY) StormTest.WaitSec(3) else: StormTest.PressButton(REPLAY) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Replay test', 'Feed is replayed')
def wakebox(): StormTest.PressButton(INFO) StormTest.WaitSec(3) StormTest.PressButton(INFO) StormTest.WaitSec(3) exitmenus() exitmenus() SThelperNew.takeScreenshot('Wake up Boxes', 'Are boxes awake? (Live TV Displays)')
def changechannel(cnumber): maxchannel = 9999 try: if cnumber > maxchannel: cnumber = maxchannel StormTest.PressButton(cnumber) StormTest.PressButton(ENTER) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Tune to channel' + str(cnumber), 'Tuned to channel ' + str(cnumber)) except: SThelperNew.takeScreenshot( 'Change Channel', 'Invalid channel given, input correct channel (1-9999)') return
def rewind(rvelocity): rspeed = [1, 2, 3, 4] ivarr = 0 #iteration variable for loop #if the specified velocity is invalid, spill error and exit function if rvelocity not in rspeed: return SThelperNew.takeScreenshot( 'No Rewind', 'No rewind occured, ensure valid input is added (1-4).') try: #iterate through rspeed list for rnum in range(len(rspeed)): #check whether rvelocity matches rspeed at rnum index if rspeed[rnum] == rvelocity: #Send IR commands until reaching the specified rvelocity while ivarr < rvelocity: StormTest.PressButton(REWIND) StormTest.WaitSec(3) ivarr += 1 #print out test case with corresponding rvelocity SThelperNew.takeScreenshot( 'Rewind test at x' + str(rvelocity), 'Box is rewinding at x' + str(rvelocity) + ' speed.') #break loop after this to save computation time break except: SThelperNew.takeScreenshot( 'No Rewind', 'Valid Input given but no rewind occured, check body of rewind function' ) return
def forward(fvelocity): fspeed = [1, 2, 3, 4] ivarf = 0 #loop iteration variable #if the specified fvelocity is not in fspeed, error out and exit function if fvelocity not in fspeed: return SThelperNew.takeScreenshot( 'No Forward', 'No forward occured, ensure valid input is added (1-4)') try: #iterate through fspeed list for fnum in range(len(fspeed)): #check whether fvelocity matches fspeed at fnum index if fspeed[fnum] == fvelocity: #send IR commands until reaching the specified fvelocity while ivarf < fvelocity: StormTest.PressButton(FORWARD) StormTest.WaitSec(3) ivarf += 1 #print out test case with corresponding fvelocity SThelperNew.takeScreenshot( 'Forward test at x' + str(fvelocity), 'Box is forwarding at x' + str(fvelocity) + ' speed.') #break out of loop to save computation time break except: SThelperNew.takeScreenshot( 'No Forward', 'Valid input given but no forward occured, check main body of forward function' ) return
def _tapWithMappedText(commands, mappedText): log.info("Tap on mapped text {0} {1}".format(mappedText, commands[mappedText])) command = commands[mappedText] return StormTest.PressButton('TAP:{0}:{1}:{2}'.format( command['x'], command['y'], command['time']))
def recharge(self, rechargeTime): time = str(rechargeTime) StormTest.PressButton("LOCK:{0}".format(time)) StormTest.WaitSec(rechargeTime + 20) #StormTest.PressButton('SWIPE:1000:400:500:400') self.swipe([1000,400,300,400], 2) StormTest.WaitSec(1) pass
def start(self, appName=''): self._appName = appName self._appCommands = _loadAppCommands(self, appName, self._commandsModuleName) self.connect('') self._userActionLog.info("Started application %s" % self._appName) return StormTest.PressButton("START-ANDROID:" + self._appName)
def advance(avelocity): #dictionary for every state of the advance feature, where key is the input (how many times advanced is pressed), and value is the corresponding advance time. adict = { 1: '30s', 2: '1m', 3: '1m30s', 4: '2m', 5: '2m30s', 6: '3m', 7: '3m30s', 8: '4m', 9: '4m30s', 10: '5m', 11: '5m30s', 12: '6m', 13: '6m30s', 14: '7m', 15: '7m30s', 16: '8m', 17: '8m30s', 18: '9m', 19: '9m30s', 20: '10m' } ivara = 0 #loop iteration variable #if the specified avelocity is not a valid key in adic, quit out of function if avelocity not in adict: return SThelperNew.takeScreenshot( 'No Advance', 'No advance occured, ensure valid input is added (1-20)') try: #iterate through adic dictionary. items() returns a tuple, hence the for loop has key, value pair for key, value in adict.items(): #find the correct key corresponding with avelocity if key == avelocity: #send IR commands for advance until desired input is reached while ivara < avelocity: StormTest.PressButton(ADVANCE) StormTest.WaitSec(1) ivara += 1 #print out test case with corresponding key and value pair SThelperNew.takeScreenshot( 'Advance test' + str(key), 'Advance forward ' + str(value) + ' at ' + str(key) + ' input.') #break out of loop to save computation time break except: SThelperNew.takeScreenshot( 'No Advance', 'Valid input given but advance did not occur, check main body of advance function' ) return
def stop(self): self._userActionLog.info("Stopped application %s" % self._appName) if not StormTest.PressButton("STOP-ANDROID"): self._userActionLog.error("Stop application failed. Disconnection will continue") pass
def _tapWithText(text): log.info("Tap on element with text {0}".format(text)) return StormTest.PressButton("TAPELEMENT:text:{0}".format(text))
def openguide(): StormTest.PressButton(GUIDE) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Guide Test', 'Guide UI Elements appear as BAU')
def replayfeed(): StormTest.PressButton(REPLAY) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Replay test', 'Feed is replayed')
def settings(self): StormTest.PressButton("TAP:1125:515:0") StormTest.WaitSec(1) pass
def doTest(): i = 0 for i in range(5): '''1st step: Go to DTT ch.031''' step_name = "Step" + str(5 * i + 1) + ": Go to DTT ch.031" StormTest.BeginTestStep(step_name) StormTest.PressButton('Stop') StormTest.PressDigits(031, waitSec=0.5) ret_motion = StormTest.DetectMotionEx((559, 179, 655, 301), 5) if ret_motion[0][1]: step_comment = "Go to DTT ch.31 is success" print ret_motion StormTest.EndTestStep(step_name, StormTest.TM.PASS, step_comment) else: step_comment = "Go to DTT ch.31 is failed" StormTest.EndTestStep(step_name, StormTest.TM.FAIL, step_comment) print step_comment StormTest.CaptureImageEx(None, "Step1.png") '''2st step: Go to DTT Duide''' step_name = "Step " + str(5 * i + 2) + ": Go to DTT Duide" StormTest.BeginTestStep(step_name) StormTest.PressButton('TV_Guide') StormTest.WaitSec(5) ret = [83, 34, 230, 58] ocr_result = StormTest.OCRSlot(ret) print ocr_result if ocr_result[4][0][1].strip() == 'DTT GUIDE': step_comment = "Go to DTT Guide success" print ocr_result StormTest.EndTestStep(step_name, StormTest.TM.PASS, step_comment) else: step_comment = "Go to DTT Guide is failed" StormTest.EndTestStep(step_name, StormTest.TM.FAIL, step_comment) print step_comment StormTest.CaptureImageEx(None, "Step2.png") '''3rd step: Check program name''' step_name = "Step" + str(5 * i + 3) + ": Check program name" StormTest.BeginTestStep(step_name) ret_name = [420, 643, 414, 37] ocr_result_name = StormTest.OCRSlot(ret_name) print ocr_result_name if ocr_result_name[4][0][1] != '': step_comment = "Program name is correct" print ocr_result_name StormTest.EndTestStep(step_name, StormTest.TM.PASS, step_comment) else: step_comment = "Program name is incorrect" StormTest.EndTestStep(step_name, StormTest.TM.FAIL, step_comment) print step_comment StormTest.CaptureImageEx(None, "Step3.png") '''4th step: Exit to Live''' step_name = "Step " + str(5 * i + 4) + ": Exit to Live" StormTest.BeginTestStep(step_name) StormTest.PressButton('Ok') ret_motion_live = StormTest.DetectMotionEx((359, 163, 1135, 371), 5) if ret_motion_live[0][1]: step_comment = "Exit to Live success" print ret_motion_live StormTest.EndTestStep(step_name, StormTest.TM.PASS, step_comment) else: step_comment = "Exit to Live is failed" StormTest.EndTestStep(step_name, StormTest.TM.FAIL, step_comment) print step_comment StormTest.CaptureImageEx(None, "Step4.png") '''5th step: Check program name on Mini-Guide''' step_name = "Step " + str(5 * i + 5) + ": Check program name on Mini-Guide" StormTest.BeginTestStep(step_name) ret_name = [222, 678, 448, 41] ocr_result_name_step_5 = StormTest.OCRSlot(ret_name) print ocr_result_name_step_5 if ocr_result[4][0][1].strip() == ocr_result_name[4][0][1]: step_comment = "Program name is correct" print ocr_result_name StormTest.EndTestStep(step_name, StormTest.TM.PASS, step_comment) else: step_comment = "Program name is incorrect" StormTest.EndTestStep(step_name, StormTest.TM.FAIL, step_comment) print step_comment StormTest.CaptureImageEx(None, "Step5.png") StormTest.PressButton('Channel+') return StormTest.TM.PASS
def back(self): StormTest.PressButton("TAP:1125:515:0") StormTest.WaitSec(1) pass
def down(self): StormTest.PressButton("TAP:1225:535:0") StormTest.WaitSec(1) pass
def playfeed(): StormTest.PressButton(PLAY) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Play Feed', 'Box is in a playing state')
def pausefeed(): StormTest.PressButton(PAUSE) StormTest.WaitSec(3) SThelperNew.takeScreenshot('Feed Pause', 'Box is in a Paused state')
def _tapWithIndex(index): log.info("Tap on element with index {0}".format(index)) return StormTest.PressButton("TAPELEMENT:index:{0}".format(index))
def open(self): StormTest.PressButton("TAP:1230:435:0") StormTest.WaitSec(1) pass
def close(self): StormTest.PressButton("TAP:1270:450:0") StormTest.WaitSec(1) pass
def swipe(self, coordinates=[0, 0, 0, 0], time=0): log.info("Swipe from ({0}, {1}) to ({2}, {3}) with time {4}".format(coordinates[0], coordinates[1], coordinates[2], coordinates[3], time)) return StormTest.PressButton("SWIPE:{0}:{1}:{2}:{3}:{4}".format(coordinates[0], coordinates[1], coordinates[2], coordinates[3], time))
def _tapWithDesc(desc): log.info("Tap on element with desc {0}".format(desc)) return StormTest.PressButton("TAPELEMENT:desc:{0}".format(desc))
def up(self): StormTest.PressButton("TAP:1225:360:0") StormTest.WaitSec(1) pass