def test_400(self): """Widget Step 1, Skip-back functionality http://litmus.pculture.org/show_test.cgi?id=400 """ print "starting testcase 400 - shift-tab to skip back on step 1" print "known bug: http://bugzilla.pculture.org/show_bug.cgi?id=14292" sel = self.selenium sel.set_timeout(testvars.MSTestVariables["TimeOut"]) subtextfile = os.path.join(testvars.MSTestVariables["DataDirectory"], "switch-to-firefox.txt") # be sure logged out website.SiteLogout(self, sel) website.start_demo(self, sel) website.start_sub_widget(self, sel, login=False) #set mode to expert and wait for video to load mode_label = sel.get_text( "css=.unisubs-speedmode option:contains('Expert')") sel.select("//select", "label=" + mode_label) mslib.wait_for_video_to_buffer(self, sel) # start playback sel.click(testvars.WidgetUI["Play_pause"]) mslib.wait_for_element_present(self, sel, testvars.WidgetUI["Video_pause_button"]) # wait for play to advance and test with screen button time.sleep(7) for x in range(0, 3): # get the time, skip back and get the time again start_time = sel.get_text(testvars.WidgetUI["Video_elapsed_time"]) sel.click(testvars.WidgetUI["Skip_back"]) time.sleep(1) sel.click(testvars.WidgetUI["Play_pause"]) time.sleep(.50) stop_time = sel.get_text(testvars.WidgetUI["Video_elapsed_time"]) diff_time = int(start_time) - int(stop_time) self.failUnless(diff_time > 5) sel.click(testvars.WidgetUI["Play_pause"]) time.sleep(10) # wait for play to advance and test with keyboard key # get the time, skip back and get the time again start_time = sel.get_text(testvars.WidgetUI["Video_elapsed_time"]) sel.shift_key_down() sel.type_keys("css=.unisubs-play", u'\u0009') sel.shift_key_up() sel.click(testvars.WidgetUI["Play_pause"]) time.sleep(.50) stop_time = sel.get_text(testvars.WidgetUI["Video_elapsed_time"]) diff_time = int(start_time) - int(stop_time) self.failUnless(diff_time > 5) sel.click(testvars.WidgetUI["Play_pause"]) time.sleep(10)
def sync_video(self,sel,sub_file,start_delay=3,sub_int=2,step="Continue"): """ Description: Use the defined sync button to sync the subtitles. Waits for text present on the video and prints the subtime. Options: sub_file - path to file or text lines to enter start_delay - time to wait before 1st sync (default = 4 secs) sub_int - time to wait before next sub (default = 2 secs step - {'Continue' (default) | 'Stop} move on to next step when done. Pre-condition - can use this to sync on Step 2, Step 3 or Edit. """ print ("Syncing the subs") sel.select_window("null") mslib.wait_for_video_to_buffer(self,sel) mslib.wait_for_element_present(self,sel,"css=.unisubs-titlesList") #start playback # sel.type_keys("css=.unisubs-play",u'\u0009') if sel.is_element_present(testvars.WidgetUI["Video_pause_button"]): print "video is playing" else: sel.focus(testvars.WidgetUI["Play_pause"]) sel.click_at(testvars.WidgetUI["Play_pause"],"") time.sleep(start_delay) #start syncing for i,line in enumerate(codecs.open(sub_file)): x=i+1 sel.focus(testvars.WidgetUI["Sync_sub"]) sel.click_at(testvars.WidgetUI["Sync_sub"],"") time.sleep(.1) sub_cell_start_time = "css=li:nth-child("+str(x)+") > span.unisubs-timestamp span span.unisubs-timestamp-time" sub_cell_text = "css=li:nth-child("+str(x)+") > span.unisubs-title span" start_time=sel.get_text(sub_cell_start_time) print start_time print sel.get_text(sub_cell_text) time.sleep(sub_int) # finish sync of the last sub sel.focus(testvars.WidgetUI["Sync_sub"]) sel.click_at(testvars.WidgetUI["Sync_sub"],"") if step == "Continue": sel.click(testvars.WidgetUI["Next_step"])
def test_470(self): """Widget Step 1, advanced (recommended) mode setting. http://litmus.pculture.org/show_test.cgi?id=470 """ print "starting testcase 470" sel = self.selenium sel.set_timeout(testvars.MSTestVariables["TimeOut"]) subtextfile = os.path.join(testvars.MSTestVariables["DataDirectory"], "switch-to-firefox.txt") # be sure logged out website.SiteLogout(self, sel) website.start_demo(self, sel) website.start_sub_widget(self, sel, login=False) #Type sub-text in the video, then wait stay on Step-1 screen mslib.wait_for_element_present(self, sel, testvars.WidgetUI["Play_pause"]) mode_label = sel.get_text( "css=.unisubs-speedmode option:contains('Recommended')") sel.select("//select", "label=" + mode_label) mslib.wait_for_video_to_buffer(self, sel) sel.click(testvars.WidgetUI["Play_pause"]) # keep typing while in playback mode until button changes to play button (indicating paused) sel.click("//div/input") for x in range(0, 4): while sel.is_element_present( testvars.WidgetUI["Video_pause_button"]): time.sleep(.2) sel.type_keys("//div/input", "Hi ") # stop typing and wait for playback to resume (pause button present) stop_time = sel.get_text(testvars.WidgetUI['Video_elapsed_time']) sel.type_keys("//div/input", "I'm Asa Dotzler") if "firefox" in selvars.set_browser(): sel.key_press("css=.trans", "13") else: sel.focus("css=input[class*=trans]") sel.key_press_native('10') mslib.wait_for_element_present( self, sel, testvars.WidgetUI["Video_pause_button"]) time.sleep(.5) resume_time = sel.get_text(testvars.WidgetUI['Video_elapsed_time']) self.failUnless(int(stop_time) > int(resume_time))
def edit_text(self,sel,subtextfile,new_text=""): """ Description: Input the same text used in transcribe_video and for each line, edit the text with new_text. Verifies text has been updated. Options: new_text - text string Pre-condition - can use this on Step 2, Step 3. """ print ("Editing the sub text in the widget") sel.select_window("null") mslib.wait_for_element_present(self,sel,"css=ul.unisubs-titlesList") sel.click("css=.unisubs-activestep") #reset the list to the top of the page mslib.wait_for_video_to_buffer(self,sel) for i,line in enumerate(codecs.open(subtextfile)): x = i+1 sub_cell = "css=ul.unisubs-titlesList li:nth-child("+str(x)+")" if sel.is_element_present(sub_cell) == False: break textspan = sub_cell +" > .unisubs-title span" thetextarea = "css=.unisubs-subedit" if new_text == "": ed_text = str(line).rstrip().upper() else: ed_text = new_text sel.click(textspan) time.sleep(.5) print ed_text sel.type(thetextarea, ed_text) sel.get_eval("this.browserbot.getUserWindow().unisubs.widget.fireKeySequence(this.browserbot.getUserWindow().document.getElementsByClassName('unisubs-subedit')[0], 13,13);") time.sleep(1) # self.assertTrue(sel.is_element_present(textspan)) sub_cell_text=sel.get_text(textspan) print sub_cell_text self.assertEqual(sub_cell_text.rstrip(),ed_text.rstrip()) time.sleep(.5)
def resync_video (self,sel,subtextfile,start_delay=1,sub_int=1, step="Stop"): """ Description: tests the time shift of subs when using down key to resyncronize. Verifies time stamp has changed. Options: start_delay - amount of time to wait before jumping back with ctrl key (default=4) sub_int - amount of before next sub sync step - {'Stop' (default) | 'Continue'} Pre-conditions: must coordinate this with the times used in sync_video or the time shift comparision may fail. """ print " * Resync subs - shorter interval" if sel.is_element_present("css=.unisubs-activestep:contains('1')"): goto_step(self,sel,"2") mslib.wait_for_video_to_buffer(self,sel) sel.click(testvars.WidgetUI["Video_playPause"]) time.sleep(start_delay) mslib.wait_for_element_present(self,sel,testvars.WidgetUI["Sync_sub"]) for i,line in enumerate(codecs.open(subtextfile,encoding='utf-8')): x = i+1 sub_cell_start_time = "css=li:nth-child("+str(x)+") > .unisubs-timestamp span span.unisubs-timestamp-time" start_time=sel.get_text(sub_cell_start_time) sel.focus(testvars.WidgetUI["Sync_sub"]) sel.click_at(testvars.WidgetUI["Sync_sub"],"") mslib.wait_for_element_present(self,sel,testvars.WidgetUI["Active_subtime"]) new_start_time = sel.get_text(testvars.WidgetUI["Active_subtime"]) self.assertNotEqual(float(start_time),float(new_start_time), \ '%.2f' % float(start_time) +" = " +'%.2f' % float(new_start_time)) time.sleep(sub_int) sel.focus(testvars.WidgetUI["Sync_sub"]) sel.click_at(testvars.WidgetUI["Sync_sub"],"") if step == "Continue": sel.click(testvars.WidgetUI["Next_step"])