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