@@ -617,6 +617,60 @@ def get_agenda_filter_group_button(wait, group_acronym):
617617 )
618618 )
619619
620+ def test_agenda_timeslot_label_visibility (self ):
621+ """The timeslot label for regular sessions should only be shown when a session is visible"""
622+ wait = WebDriverWait (self .driver , 2 )
623+ url = self .absreverse ('ietf.meeting.views.agenda' )
624+ mars_assignments = self .meeting .schedule .assignments .filter (session__group__acronym = 'mars' )
625+ ames_assignments = self .meeting .schedule .assignments .filter (session__group__acronym = 'ames' )
626+ assert (mars_assignments .count () == 1 ) # if not, need to update test
627+ assert (ames_assignments .count () == 1 ) # if not, need to update test
628+ assignments = dict (
629+ mars = mars_assignments .first (),
630+ ames = ames_assignments .first (),
631+ )
632+ # test relies on these timeslots being different so they will have separate label rows
633+ assert (assignments ['mars' ].timeslot .time != assignments ['ames' ].timeslot .time )
634+ label_row_selectors = {
635+ grp : (By .CSS_SELECTOR , 'tr.session-label-row[data-slot-start-ts="{}"][data-slot-end-ts="{}"]' .format (
636+ int (assignment .timeslot .utc_start_time ().timestamp ()),
637+ int (assignment .timeslot .utc_end_time ().timestamp ()),
638+ ))
639+ for grp , assignment in assignments .items ()
640+ }
641+
642+ self .login ()
643+
644+ # get page with all items visible
645+ self .driver .get (url )
646+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['ames' ]))
647+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['mars' ]))
648+
649+ # get page with ames hidden
650+ self .driver .get (url + '?show=mars&hide=ames' )
651+ wait .until (expected_conditions .invisibility_of_element_located (label_row_selectors ['ames' ]))
652+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['mars' ]))
653+
654+ # get page with mars hidden
655+ self .driver .get (url + '?show=ames&hide=mars' )
656+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['ames' ]))
657+ wait .until (expected_conditions .invisibility_of_element_located (label_row_selectors ['mars' ]))
658+
659+ # create an ames session in the mars timeslot, should cause the mars timeslot label to reappear
660+ sess = SessionFactory (group = Group .objects .get (acronym = 'ames' ),
661+ meeting = self .meeting ,
662+ add_to_schedule = False )
663+ sess .timeslotassignments .create (timeslot = assignments ['mars' ].timeslot ,
664+ schedule = self .meeting .schedule )
665+ self .driver .get (url + '?show=ames&hide=mars' )
666+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['ames' ]))
667+ wait .until (expected_conditions .visibility_of_element_located (label_row_selectors ['mars' ]))
668+
669+ # get page with ames and mars hidden
670+ self .driver .get (url + '?hide=ames,mars' )
671+ wait .until (expected_conditions .invisibility_of_element_located (label_row_selectors ['ames' ]))
672+ wait .until (expected_conditions .invisibility_of_element_located (label_row_selectors ['mars' ]))
673+
620674 def test_agenda_view_group_filter_toggle (self ):
621675 """Clicking a group toggle enables/disables agenda filtering"""
622676 wait = WebDriverWait (self .driver , 2 )
0 commit comments