def test_button_avp_displayed(dialog, request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. automates 1229348 Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") navigate_to(button, 'Add') section_loc = "//*[(self::h3 or self::p) and normalize-space(text())='Attribute/Value Pairs']" assert sel.is_displayed(section_loc),\ "The Attribute/Value Pairs part of the form is not displayed" for i in range(1, 6): assert sel.is_displayed('#attribute_{}'.format(i)) assert sel.is_displayed('#value_{}'.format(i))
def test_button_avp_displayed(dialog, request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. automates 1229348 Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") navigate_to(button, 'Add') section_loc = "//*[(self::h3 or self::p) and normalize-space(text())='Attribute/Value Pairs']" assert sel.is_displayed(section_loc),\ "The Attribute/Value Pairs part of the form is not displayed" for i in range(1, 6): assert sel.is_displayed('#attribute_{}'.format(i)) assert sel.is_displayed('#value_{}'.format(i))
def testing_group(request): group_desc = fauxfactory.gen_alphanumeric() group = ButtonGroup(text=group_desc, hover=group_desc, type=ButtonGroup.VM_INSTANCE) group.create() yield group group.delete_if_exists()
def test_button_group_crud(request): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_hvr", type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() with update(buttongroup): buttongroup.hover = "edit_desc_{}".format(fauxfactory.gen_alphanumeric()) buttongroup.delete()
def testing_group(request): group_desc = fauxfactory.gen_alphanumeric() group = ButtonGroup(text=group_desc, hover=group_desc, type=ButtonGroup.VM_INSTANCE) request.addfinalizer(group.delete_if_exists) group.create() return group
def test_button_group_crud(request): buttongroup = ButtonGroup( text=generate_random_string(), hover="btn_hvr", type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() with update(buttongroup): buttongroup.hover = "edit_desc_{}".format(generate_random_string()) buttongroup.delete()
def test_button_group_crud(request): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_hvr", type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() with update(buttongroup): buttongroup.hover = "edit_desc_{}".format( fauxfactory.gen_alphanumeric()) buttongroup.delete()
def testing_group(request): group_desc = generate_random_string() group = ButtonGroup( text=group_desc, hover=group_desc, type=ButtonGroup.VM_INSTANCE ) request.addfinalizer(group.delete_if_exists) group.create() return group
def testing_group(request): group_desc = fauxfactory.gen_alphanumeric() group = ButtonGroup( text=group_desc, hover=group_desc, type=ButtonGroup.VM_INSTANCE ) request.addfinalizer(group.delete_if_exists) group.create() return group
def testing_group(request): group_desc = fauxfactory.gen_alphanumeric() group = ButtonGroup( text=group_desc, hover=group_desc, type=ButtonGroup.VM_INSTANCE ) group.create() yield group group.delete_if_exists()
def test_button_on_host(appliance, request, provider, setup_provider): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.HOST request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() host = appliance.collections.hosts.all(provider)[0] host.execute_button(buttongroup.hover, button.text, handle_alert=None)
def test_button_crud(dialog, request): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()), type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() with update(button): button.hover = "edit_desc_{}".format(fauxfactory.gen_alphanumeric()) button.delete()
def test_button_on_host(appliance, request, provider, setup_provider): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.HOST request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() host = appliance.collections.hosts.all(provider)[0] host.execute_button(buttongroup.hover, button.text, handle_alert=None)
def test_button_group_crud(request): """Test Creating a Button Group Prerequisities: * An appliance Steps: * Create a Button Group with random button text and button hover text, select type Service * Assert that the button group exists * Assert that the entered values correspond with what is displayed on the details page * Change the hover text, ensure the text is changed on details page * Delete the button group * Assert that the button group no longer exists. """ # Generate an object buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), type=ButtonGroup.SERVICE) # Ensure it gets deleted after the test request.addfinalizer(buttongroup.delete_if_exists) # 1) Create it buttongroup.create() # 2) Verify it exists assert buttongroup.exists # 3) Now the new part, go to the details page view = navigate_to(buttongroup, 'Details') # 4) and verify that the values in there indeed correspond to the values specified assert view.text.text == buttongroup.text assert view.hover.text == buttongroup.hover # 5) generate a random string for update test updated_hover = "edit_desc_{}".format(fauxfactory.gen_alphanumeric()) # 6) Update it (this might go over multiple fields in the object) with update(buttongroup): buttongroup.hover = updated_hover # 7) Assert it still exists assert buttongroup.exists # 8) Go to the details page again view = navigate_to(buttongroup, 'Details') # 9) Verify it indeed equals to what it was set to before assert view.hover.text == updated_hover # 10) Delete it - first cancel and then real buttongroup.delete(cancel=True) assert buttongroup.exists buttongroup.delete() # 11) Verify it is deleted assert not buttongroup.exists
def custom_service_button(ansible_catalog_item): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.SERVICE buttongroup.create() button = Button( group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=ansible_catalog_item.provisioning["provisioning_dialog_name"], system="Request", request="Order_Ansible_Playbook") button.create() yield button button.delete_if_exists() buttongroup.delete_if_exists()
def test_button_group_crud(request): """Test Creating a Button Group Prerequisities: * An appliance Steps: * Create a Button Group with random button text and button hover text, select type Service * Assert that the button group exists * Assert that the entered values correspond with what is displayed on the details page * Change the hover text, ensure the text is changed on details page * Delete the button group * Assert that the button group no longer exists. """ # Generate an object buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), type=ButtonGroup.SERVICE) # Ensure it gets deleted after the test request.addfinalizer(buttongroup.delete_if_exists) # 1) Create it buttongroup.create() # 2) Verify it exists assert buttongroup.exists # 3) Now the new part, go to the details page view = navigate_to(buttongroup, 'Details') # 4) and verify that the values in there indeed correspond to the values specified assert view.text.text == buttongroup.text assert view.hover.text == buttongroup.hover # 5) generate a random string for update test updated_hover = "edit_desc_{}".format(fauxfactory.gen_alphanumeric()) # 6) Update it (this might go over multiple fields in the object) with update(buttongroup): buttongroup.hover = updated_hover # 7) Assert it still exists assert buttongroup.exists # 8) Go to the details page again view = navigate_to(buttongroup, 'Details') # 9) Verify it indeed equals to what it was set to before assert view.hover.text == updated_hover # 10) Delete it - first cancel and then real buttongroup.delete(cancel=True) assert buttongroup.exists buttongroup.delete() # 11) Verify it is deleted assert not buttongroup.exists
def test_button_on_host(dialog, request): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()), type=ButtonGroup.HOST) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() myhost = host.get_from_config('esx') if not myhost.exists: myhost.create() myhost.execute_button(buttongroup.hover, button.text)
def retire_extend_button(request): grp_name = "grp_{}".format(fauxfactory.gen_alphanumeric()) grp = ButtonGroup(text=grp_name, hover=grp_name, type=ButtonGroup.VM_INSTANCE) request.addfinalizer(lambda: grp.delete_if_exists()) grp.create() btn_name = "btn_{}".format(fauxfactory.gen_alphanumeric()) button = Button(group=grp, text=btn_name, hover=btn_name, system="Request", request="vm_retire_extend") request.addfinalizer(lambda: button.delete_if_exists()) button.create() return lambda: toolbar.select(grp.text, button.text)
def test_button_crud(dialog, request): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric()), type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() with update(button): button.hover = "edit_desc_{}".format(fauxfactory.gen_alphanumeric()) button.delete()
def test_button_avp_displayed(request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() pytest.sel.force_navigate("new_button", context={'buttongroup': buttongroup}) assert (pytest.sel.is_displayed( "//*[(self::h3 or self::p) and normalize-space(text())='Attribute/Value Pairs']"), "The Attribute/Value Pairs part of the form is not displayed")
def custom_service_button(ansible_catalog_item): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.SERVICE buttongroup.create() button = Button( group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=ansible_catalog_item.provisioning["provisioning_dialog_name"], system="Request", request="Order_Ansible_Playbook" ) button.create() yield button button.delete_if_exists() buttongroup.delete_if_exists()
def test_button_crud(dialog, request): """Test Creating a Button Prerequisities: * An Button Group Steps: * Create a Button with random button text and button hover text, and random request * Assert that the button exists * Assert that the entered values correspond with what is displayed on the details page * Change the hover text, ensure the text is changed on details page * Delete the button * Assert that the button no longer exists. """ buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), type=ButtonGroup.SERVICE ) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button( group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), dialog=dialog, system="Request", request="InspectMe", ) request.addfinalizer(button.delete_if_exists) button.create() assert button.exists view = navigate_to(button, "Details") assert view.text.text == button.text assert view.hover.text == button.hover edited_hover = "edited {}".format(fauxfactory.gen_alphanumeric()) with update(button): button.hover = edited_hover assert button.exists view = navigate_to(button, "Details") assert view.hover.text == edited_hover button.delete(cancel=True) assert button.exists button.delete() assert not button.exists
def test_button_on_host(dialog, request): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.HOST request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() myhost = host.get_from_config('esx') if not myhost.exists: myhost.create() myhost.execute_button(buttongroup.hover, button.text)
def test_button_avp_displayed(request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() pytest.sel.force_navigate("new_button", context={'buttongroup': buttongroup}) section_loc = "//*[(self::h3 or self::p) and normalize-space(text())='Attribute/Value Pairs']" assert pytest.sel.is_displayed(section_loc),\ "The Attribute/Value Pairs part of the form is not displayed"
def test_button_crud(dialog, request): """Test Creating a Button Prerequisities: * An Button Group Steps: * Create a Button with random button text and button hover text, and random request * Assert that the button exists * Assert that the entered values correspond with what is displayed on the details page * Change the hover text, ensure the text is changed on details page * Delete the button * Assert that the button no longer exists. """ buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), type=ButtonGroup.SERVICE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover=fauxfactory.gen_alphanumeric(), dialog=dialog, system="Request", request="InspectMe") request.addfinalizer(button.delete_if_exists) button.create() assert button.exists view = navigate_to(button, 'Details') assert view.text.text == button.text assert view.hover.text == button.hover edited_hover = "edited {}".format(fauxfactory.gen_alphanumeric()) with update(button): button.hover = edited_hover assert button.exists view = navigate_to(button, 'Details') assert view.hover.text == edited_hover button.delete(cancel=True) assert button.exists button.delete() assert not button.exists
def test_button_avp_displayed(dialog, request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. automates 1229348 Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") view = navigate_to(button, 'Add') assert view.advanced.attribute_1.is_displayed assert view.advanced.value_1.is_displayed
def retire_extend_button(request): grp_name = "grp_{}".format(fauxfactory.gen_alphanumeric()) grp = ButtonGroup( text=grp_name, hover=grp_name, type=ButtonGroup.VM_INSTANCE ) request.addfinalizer(lambda: grp.delete_if_exists()) grp.create() btn_name = "btn_{}".format(fauxfactory.gen_alphanumeric()) button = Button( group=grp, text=btn_name, hover=btn_name, system="Request", request="vm_retire_extend" ) request.addfinalizer(lambda: button.delete_if_exists()) button.create() return lambda: toolbar.select(grp.text, button.text)
def custom_vm_button(ansible_catalog_item): buttongroup = ButtonGroup( text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.VM_INSTANCE buttongroup.create() button = Button( group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=ansible_catalog_item.provisioning["provisioning_dialog_name"], system="Request", request="Order_Ansible_Playbook", attributes=[ {"key": "hosts", "value": "localhost"}, {"key": "service_template_name", "value": ansible_catalog_item.name} ] ) button.create() yield button button.delete_if_exists() buttongroup.delete_if_exists()
def test_button_avp_displayed(dialog, request): """This test checks whether the Attribute/Values pairs are displayed in the dialog. automates 1229348 Steps: * Open a dialog to create a button. * Locate the section with attribute/value pairs. """ # This is optional, our nav tree does not have unassigned button buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric()), type=ButtonGroup.VM_INSTANCE) request.addfinalizer(buttongroup.delete_if_exists) buttongroup.create() button = Button(group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=dialog, system="Request", request="InspectMe") view = navigate_to(button, 'Add') assert view.advanced.attribute_1.is_displayed assert view.advanced.value_1.is_displayed
def custom_vm_button(ansible_catalog_item): buttongroup = ButtonGroup(text=fauxfactory.gen_alphanumeric(), hover="btn_desc_{}".format( fauxfactory.gen_alphanumeric())) buttongroup.type = buttongroup.VM_INSTANCE buttongroup.create() button = Button( group=buttongroup, text=fauxfactory.gen_alphanumeric(), hover="btn_hvr_{}".format(fauxfactory.gen_alphanumeric()), dialog=ansible_catalog_item.provisioning["provisioning_dialog_name"], system="Request", request="Order_Ansible_Playbook", attributes=[{ "key": "hosts", "value": "localhost" }, { "key": "service_template_name", "value": ansible_catalog_item.name }]) button.create() yield button button.delete_if_exists() buttongroup.delete_if_exists()
def test_vm_retire_extend(appliance, request, testing_vm, soft_assert): """ Tests extending a retirement using an AE method. Prerequisities: * A running VM on any provider. Steps: * It creates a button pointing to ``Request/vm_retire_extend`` instance. The button should live in the VM and Instance button group. * Then it sets a retirement date for the VM * Then it waits until the retirement date is set * Then it clicks the button that was created and it waits for the retirement date to extend. Metadata: test_flag: retire, provision """ num_days = 5 soft_assert(testing_vm.retirement_date == 'Never', "The retirement date is not 'Never'!") retirement_date = generate_retirement_date(delta=num_days) testing_vm.set_retirement_date(retirement_date) wait_for(lambda: testing_vm.retirement_date != 'Never', message="retirement date set") set_date = testing_vm.retirement_date vm_retire_date_fmt = VM.RETIRE_DATE_FMT.pick(appliance.version) if not BZ(1419150, forced_streams='5.6').blocks: soft_assert(set_date == retirement_date.strftime(vm_retire_date_fmt), "The retirement date '{}' did not match expected date '{}'" .format(set_date, retirement_date.strftime(vm_retire_date_fmt))) # Create the vm_retire_extend button and click on it grp_name = "grp_{}".format(fauxfactory.gen_alphanumeric()) grp = ButtonGroup( text=grp_name, hover=grp_name, type=ButtonGroup.VM_INSTANCE ) request.addfinalizer(lambda: grp.delete_if_exists()) grp.create() btn_name = "btn_{}".format(fauxfactory.gen_alphanumeric()) button = Button( group=grp, text=btn_name, hover=btn_name, system="Request", request="vm_retire_extend" ) request.addfinalizer(lambda: button.delete_if_exists()) button.create() navigate_to(testing_vm, 'Details') class TestDropdownView(InfraVmSummaryView): group = Dropdown(grp.text) view = appliance.browser.create_view(TestDropdownView) view.group.item_select(button.text) # CFME automate vm_retire_extend method defaults to extending the date by 14 days extend_duration_days = 14 extended_retirement_date = retirement_date + timedelta(days=extend_duration_days) # Check that the WebUI updates with the correct date wait_for( lambda: testing_vm.retirement_date >= extended_retirement_date.strftime(vm_retire_date_fmt), num_sec=60, message="Check for extension of the VM retirement date by {} days".format( extend_duration_days) )
def test_vm_retire_extend(appliance, request, testing_vm, soft_assert): """ Tests extending a retirement using an AE method. Prerequisities: * A running VM on any provider. Steps: * It creates a button pointing to ``Request/vm_retire_extend`` instance. The button should live in the VM and Instance button group. * Then it sets a retirement date for the VM * Then it waits until the retirement date is set * Then it clicks the button that was created and it waits for the retirement date to extend. Metadata: test_flag: retire, provision """ num_days = 5 soft_assert(testing_vm.retirement_date == 'Never', "The retirement date is not 'Never'!") retirement_date = generate_retirement_date(delta=num_days) testing_vm.set_retirement_date(retirement_date) wait_for(lambda: testing_vm.retirement_date != 'Never', message="retirement date set") set_date = testing_vm.retirement_date vm_retire_date_fmt = VM.RETIRE_DATE_FMT.pick(appliance.version) if not BZ(1419150, forced_streams='5.6').blocks: soft_assert( set_date == retirement_date.strftime(vm_retire_date_fmt), "The retirement date '{}' did not match expected date '{}'".format( set_date, retirement_date.strftime(vm_retire_date_fmt))) # Create the vm_retire_extend button and click on it grp_name = "grp_{}".format(fauxfactory.gen_alphanumeric()) grp = ButtonGroup(text=grp_name, hover=grp_name, type=ButtonGroup.VM_INSTANCE) request.addfinalizer(lambda: grp.delete_if_exists()) grp.create() btn_name = "btn_{}".format(fauxfactory.gen_alphanumeric()) button = Button(group=grp, text=btn_name, hover=btn_name, system="Request", request="vm_retire_extend") request.addfinalizer(lambda: button.delete_if_exists()) button.create() navigate_to(testing_vm, 'Details') class TestDropdownView(InfraVmSummaryView): group = Dropdown(grp.text) view = appliance.browser.create_view(TestDropdownView) view.group.item_select(button.text) # CFME automate vm_retire_extend method defaults to extending the date by 14 days extend_duration_days = 14 extended_retirement_date = retirement_date + timedelta( days=extend_duration_days) # Check that the WebUI updates with the correct date wait_for( lambda: testing_vm.retirement_date >= extended_retirement_date. strftime(vm_retire_date_fmt), num_sec=60, message="Check for extension of the VM retirement date by {} days". format(extend_duration_days))