Repository: ManageIQ/integration_tests

Issue:
Button object instantiation mis-matching values
Button Group -
```
buttongroup = appliance.collections.button_groups.create(
    text=fauxfactory.gen_alphanumeric(),
    hover="btn_desc_{}".format(fauxfactory.gen_alphanumeric()),
    type=appliance.collections.button_groups.SERVICE)
```

Button Code:
```
button = buttongroup.buttons.create(
                 text=fauxfactory.gen_alphanumeric(),
                 hover=fauxfactory.gen_alphanumeric(),
                 dialog="6GmselZzQq",
                 system="Request",
                 request="InspectMe", )
```

Output:
```
In [13]: button
Out[13]: DefaultButton(
    group=ButtonGroup(text='DiVgyswCBf', hover='btn_desc_3rH4oGHfPL', type='Service', image='fa-user', display=None, icon_color=None), 
    text='2YcIyZY3uJ', hover=None, image='NAsaUSNH25', dialog='fa-user',
    display='6GmselZzQq', system='Request', request='InspectMe', open_url=None,
    attributes=None, visibility=None, enablement=None)

```


Discussion:
@digitronik @izapolsk @valaparthvi  can you please look in it..?
I can see Image has hover's value, dialog has image's value and so on till display value.
I would like to work on it... thank for explanation @sbulage owning this.  

Resolving patch:
diff --git a/cfme/automate/buttons.py b/cfme/automate/buttons.py
--- a/cfme/automate/buttons.py
+++ b/cfme/automate/buttons.py
@@ -33,7 +33,7 @@
 
 
 class AutomateRadioGroup(RadioGroup):
-    LABELS = './/label'
+    LABELS = ".//label"
     BUTTON = './/label[normalize-space(.)={}]/preceding-sibling::input[@type="radio"][1]'
 
     @property
@@ -41,7 +41,7 @@ def selected(self):
         names = self.button_names
         for name in names:
             bttn = self.browser.element(self.BUTTON.format(quote(name)))
-            if bttn.get_attribute('checked') is not None:
+            if bttn.get_attribute("checked") is not None:
                 return name
         else:
             return names[0]
@@ -54,35 +54,34 @@ def select(self, name):
 
 
 class ButtonsAllView(AutomateCustomizationView):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
     @property
     def is_displayed(self):
-        return self.in_customization and self.title.text == 'All Object Types'
+        return self.in_customization and self.title.text == "All Object Types"
 
 
 class ButtonFormCommon(AutomateCustomizationView):
-
     class options(PotentiallyInvisibleTab):  # noqa
         form = ConditionalSwitchableView(reference="type")
-        type = BootstrapSelect('button_type')
+        type = BootstrapSelect("button_type")
 
-        @form.register('Default')
+        @form.register("Default")
         class ButtonFormDefaultView(View):  # noqa
-            dialog = BootstrapSelect('dialog_id')
+            dialog = BootstrapSelect("dialog_id")
 
-        @form.register('Ansible Playbook')
+        @form.register("Ansible Playbook")
         class ButtonFormAnsibleView(View):  # noqa
-            playbook_cat_item = BootstrapSelect('service_template_id')
+            playbook_cat_item = BootstrapSelect("service_template_id")
             inventory = AutomateRadioGroup(locator=".//input[@name='inventory']/..")
-            hosts = Input(name='hosts')
+            hosts = Input(name="hosts")
 
-        text = Input(name='name')
-        display = Checkbox(name='display')
-        hover = Input(name='description')
-        image = FonticonPicker('button_icon')
+        text = Input(name="name")
+        display = Checkbox(name="display")
+        hover = Input(name="description")
+        image = FonticonPicker("button_icon")
         icon_color = ColourInput(id="button_color")
-        open_url = Checkbox('open_url')
+        open_url = Checkbox("open_url")
         display_for = Select(id="display_for")
         submit = Select(id="submit_how")
 
@@ -100,115 +99,130 @@ class visibility(View):  # noqa
             define_exp = Text(locator='//*[@id="form_visibility_expression_div"]//a/button')
             expression = ExpressionEditor()
 
-        system = BootstrapSelect('instance_name')
-        message = Input(name='object_message')
-        request = Input(name='object_request')
+        system = BootstrapSelect("instance_name")
+        message = Input(name="object_message")
+        request = Input(name="object_request")
 
         @ParametrizedView.nested
         class attribute(ParametrizedView):  # noqa
-            PARAMETERS = ('number', )
-            key = Input(name=ParametrizedString('attribute_{number}'))
-            value = Input(name=ParametrizedString('value_{number}'))
+            PARAMETERS = ("number",)
+            key = Input(name=ParametrizedString("attribute_{number}"))
+            value = Input(name=ParametrizedString("value_{number}"))
 
             @classmethod
             def all(cls, browser):
-                return [(i, ) for i in range(1, 6)]
+                return [(i,) for i in range(1, 6)]
 
         # TODO: Role Access
 
-    cancel_button = Button('Cancel')
+    cancel_button = Button("Cancel")
 
 
 class NewButtonView(ButtonFormCommon):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
-    add_button = Button('Add')
+    add_button = Button("Add")
 
     @property
     def is_displayed(self):
         return (
-            self.in_customization and
-            self.title.text == 'Adding a new Button' and
-            self.buttons.is_dimmed and
-            self.buttons.is_opened and
-            self.buttons.tree.currently_selected == [
-                'Object Types', self.context['object'].group.type,
-                self.context['object'].group.text])
+            self.in_customization
+            and self.title.text == "Adding a new Button"
+            and self.buttons.is_dimmed
+            and self.buttons.is_opened
+            and self.buttons.tree.currently_selected
+            == [
+                "Object Types",
+                self.context["object"].group.type,
+                self.context["object"].group.text,
+            ]
+        )
 
 
 class EditButtonView(ButtonFormCommon):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
-    save_button = Button(title='Save Changes')
-    reset_button = Button('Reset')
+    save_button = Button(title="Save Changes")
+    reset_button = Button("Reset")
 
     @property
     def is_displayed(self):
         return (
-            self.in_customization and
-            self.title.text.startswith('Editing Button') and
-            self.buttons.is_dimmed and
-            self.buttons.is_opened and
-            self.buttons.tree.currently_selected == [
-                'Object Types', self.context['object'].group.type,
-                self.context['object'].group.text, self.context['object'].text])
+            self.in_customization
+            and self.title.text.startswith("Editing Button")
+            and self.buttons.is_dimmed
+            and self.buttons.is_opened
+            and self.buttons.tree.currently_selected
+            == [
+                "Object Types",
+                self.context["object"].group.type,
+                self.context["object"].group.text,
+                self.context["object"].text,
+            ]
+        )
 
 
 class ButtonDetailView(AutomateCustomizationView):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
-    button_type = SummaryFormItem('Basic Information', 'Button Type')
-    playbook_cat_item = SummaryFormItem('Basic Information', 'Ansible Playbook')
-    target = SummaryFormItem('Basic Information', 'Target')
+    button_type = SummaryFormItem("Basic Information", "Button Type")
+    playbook_cat_item = SummaryFormItem("Basic Information", "Ansible Playbook")
+    target = SummaryFormItem("Basic Information", "Target")
     text = SummaryFormItem(
-        'Basic Information', 'Text',
-        text_filter=lambda text: re.sub(r'\s+Display on Button\s*$', '', text))
-    hover = SummaryFormItem('Basic Information', 'Hover Text')
-    dialog = SummaryFormItem('Basic Information', 'Dialog')
+        "Basic Information",
+        "Text",
+        text_filter=lambda text: re.sub(r"\s+Display on Button\s*$", "", text),
+    )
+    hover = SummaryFormItem("Basic Information", "Hover Text")
+    dialog = SummaryFormItem("Basic Information", "Dialog")
 
-    system = SummaryFormItem('Object Details', 'System/Process/')
-    message = SummaryFormItem('Object Details', 'Message')
-    request = SummaryFormItem('Object Details', 'Request')
+    system = SummaryFormItem("Object Details", "System/Process/")
+    message = SummaryFormItem("Object Details", "Message")
+    request = SummaryFormItem("Object Details", "Request")
 
-    type = SummaryFormItem('Object Attribute', 'Type')
+    type = SummaryFormItem("Object Attribute", "Type")
 
-    show = SummaryFormItem('Visibility', 'Show')
+    show = SummaryFormItem("Visibility", "Show")
 
     @property
     def is_displayed(self):
         return (
-            self.in_customization and
-            self.title.text == 'Button "{}"'.format(self.context['object'].text) and
-            not self.buttons.is_dimmed and
-            self.buttons.is_opened and
-            self.buttons.tree.currently_selected == [
-                'Object Types', self.context['object'].group.type,
-                self.context['object'].group.text, self.context['object'].text])
+            self.in_customization
+            and self.title.text == 'Button "{}"'.format(self.context["object"].text)
+            and not self.buttons.is_dimmed
+            and self.buttons.is_opened
+            and self.buttons.tree.currently_selected
+            == [
+                "Object Types",
+                self.context["object"].group.type,
+                self.context["object"].group.text,
+                self.context["object"].text,
+            ]
+        )
 
 
 class BaseButton(BaseEntity, Updateable):
     """Base class for Automate Buttons."""
 
     def update(self, updates):
-        view = navigate_to(self, 'Edit')
-        changed = view.fill({
-            'options': {
-                'text': updates.get('text'),
-                'hover': updates.get('hover'),
-                'image': updates.get('image'),
-                'open_url': updates.get('open_url'),
-                'form': {
-                    'dialog': updates.get('dialog'),
-                    'playbook_cat_item': updates.get('playbook_cat_item'),
-                    'inventory': updates.get('inventory'),
-                    'hosts': updates.get('hosts')
-                }
-            },
-            'advanced': {
-                'system': updates.get('system'),
-                'request': updates.get('request')
+        view = navigate_to(self, "Edit")
+        changed = view.fill(
+            {
+                "options": {
+                    "text": updates.get("text"),
+                    "hover": updates.get("hover"),
+                    "image": updates.get("image"),
+                    "open_url": updates.get("open_url"),
+                    "form": {
+                        "dialog": updates.get("dialog"),
+                        "playbook_cat_item": updates.get("playbook_cat_item"),
+                        "inventory": updates.get("inventory"),
+                        "hosts": updates.get("hosts"),
+                    },
+                },
+                "advanced": {"system": updates.get("system"), "request": updates.get("request")},
             }
-        })
+        )
         if changed:
             view.save_button.click()
         else:
@@ -226,8 +240,8 @@ def update(self, updates):
             )
 
     def delete(self, cancel=False):
-        view = navigate_to(self, 'Details')
-        view.configuration.item_select('Remove this Button', handle_alert=not cancel)
+        view = navigate_to(self, "Details")
+        view.configuration.item_select("Remove this Button", handle_alert=not cancel)
 
         if cancel:
             assert view.is_displayed
@@ -241,7 +255,7 @@ def delete(self, cancel=False):
     @property
     def exists(self):
         try:
-            navigate_to(self, 'Details')
+            navigate_to(self, "Details")
             return True
         except CandidateNotFound:
             return False
@@ -253,6 +267,22 @@ def delete_if_exists(self):
 
 @attr.s
 class DefaultButton(BaseButton):
+    """Default type Button Entity Class
+
+    Args:
+        group: Button Group object
+        text: The button name.
+        hover: The button hover text.
+        image: Icon of button.
+        dialog: Dialog object attached to button.
+        display: Button name display on Button.
+        system: Button pointing to System/Process
+        request: Button pointing to request method
+        open_url: Open url with button
+        attributes: Button attribute
+        visibility: Visibility expression in terms of tag and its value
+        enablement: Enablement expression in terms of tag and its value
+    """
     group = attr.ib()
     text = attr.ib()
     hover = attr.ib()
@@ -269,6 +299,24 @@ class DefaultButton(BaseButton):
 
 @attr.s
 class AnsiblePlaybookButton(BaseButton):
+    """Ansible Playbook type Button Entity Class
+
+    Args:
+        group: Button Group object
+        text: The button name.
+        hover: The button hover text.
+        image: Icon of button.
+        playbook_cat_item: Playbook catalog item.
+        display: Button name display on Button.
+        inventory: Pointing to host
+        hosts: Specific host
+        system: Button pointing to System/Process
+        request: Button pointing to request method
+        open_url: Open url with button
+        attributes: Button attribute
+        visibility: Visibility expression in terms of tag and its value
+        enablement: Enablement expression in terms of tag and its value
+    """
     group = attr.ib()
     text = attr.ib()
     hover = attr.ib()
@@ -295,6 +343,7 @@ def instantiate(
         group,
         text,
         hover,
+        image="fa-user",
         type="Default",
         display=None,
         dialog=None,
@@ -303,7 +352,6 @@ def instantiate(
         playbook_cat_item=None,
         inventory=None,
         hosts=None,
-        image="fa-user",
         open_url=None,
         system=None,
         request=None,
@@ -312,6 +360,7 @@ def instantiate(
         enablement=None,
     ):
         kwargs = {
+            "display": display,
             "open_url": open_url,
             "system": system,
             "request": request,
@@ -321,10 +370,10 @@ def instantiate(
         }
         if type == "Default":
             button_class = DefaultButton
-            args = [group, text, display, hover, image, dialog]
+            args = [group, text, hover, image, dialog]
         elif type == "Ansible Playbook":
             button_class = AnsiblePlaybookButton
-            args = [group, text, display, hover, image, playbook_cat_item, inventory, hosts]
+            args = [group, text, hover, image, playbook_cat_item, inventory, hosts]
         return button_class.from_collection(self, *args, **kwargs)
 
     def create(
@@ -356,7 +405,7 @@ def create(
             {
                 "options": {
                     "text": text,
-                    "display":display,
+                    "display": display,
                     "hover": hover,
                     "image": image,
                     "open_url": open_url,
@@ -373,7 +422,7 @@ def create(
         )
 
         if visibility:
-            # To-Do: extend visibility expression variations if needed.
+            # ToDo: extend visibility expression variations if needed.
             if self.group.type in ["Group", "User"]:
                 tag = "EVM {obj_type}.{tag}".format(
                     obj_type=self.group.type, tag=visibility["tag"]
@@ -390,7 +439,7 @@ def create(
             view.advanced.visibility.expression.fill_tag(tag=tag, value=visibility["value"])
 
         if enablement:
-            # To-Do: extend enablement expression variations if needed.
+            # ToDo: extend enablement expression variations if needed.
             if self.group.type in ["Group", "User"]:
                 tag = "EVM {obj_type}.{tag}".format(
                     obj_type=self.group.type, tag=enablement["tag"]
@@ -415,15 +464,15 @@ def create(
 
         view.add_button.click()
         view = self.create_view(ButtonGroupDetailView, self.group)
-        wait_for(lambda: view.is_displayed, timeout=10)
+        view.wait_displayed("15s")
         view.flash.assert_no_error()
         view.flash.assert_message('Custom Button "{}" was added'.format(hover))
 
         return self.instantiate(
             self.group,
-            text,
-            hover,
-            type,
+            text=text,
+            hover=hover,
+            type=type,
             display=display,
             dialog=dialog,
             display_for=display_for,
@@ -441,65 +490,70 @@ def create(
         )
 
 
-@navigator.register(ButtonCollection, 'All')
+@navigator.register(ButtonCollection, "All")
 class ButtonAll(CFMENavigateStep):
     VIEW = ButtonsAllView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
-        self.view.buttons.tree.click_path('Object Types')
+        self.view.buttons.tree.click_path("Object Types")
 
 
-@navigator.register(ButtonCollection, 'Add')
+@navigator.register(ButtonCollection, "Add")
 class ButtonNew(CFMENavigateStep):
     VIEW = NewButtonView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
         self.view.buttons.tree.click_path("Object Types", self.obj.group.type, self.obj.group.text)
-        self.view.configuration.item_select('Add a new Button')
+        self.view.configuration.item_select("Add a new Button")
 
 
-@navigator.register(BaseButton, 'Details')
+@navigator.register(BaseButton, "Details")
 class ButtonDetails(CFMENavigateStep):
     VIEW = ButtonDetailView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
         self.view.buttons.tree.click_path(
-            "Object Types", self.obj.group.type, self.obj.group.text, self.obj.text)
+            "Object Types", self.obj.group.type, self.obj.group.text, self.obj.text
+        )
 
 
-@navigator.register(BaseButton, 'Edit')
+@navigator.register(BaseButton, "Edit")
 class ButtonEdit(CFMENavigateStep):
     VIEW = EditButtonView
-    prerequisite = NavigateToSibling('Details')
+    prerequisite = NavigateToSibling("Details")
 
     def step(self):
-        self.view.configuration.item_select('Edit this Button')
+        self.view.configuration.item_select("Edit this Button")
 
 
 # Button group
 class ButtonGroupObjectTypeView(AutomateCustomizationView):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
     @property
     def is_displayed(self):
         return (
-            self.in_customization and
-            self.title.text == 'Button Groups' and
-            not self.buttons.is_dimmed and
-            self.buttons.is_opened and
-            self.buttons.tree.currently_selected == ['Object Types', self.context['object'].type])
+            self.in_customization
+            and self.title.text == "Button Groups"
+            and not self.buttons.is_dimmed
+            and self.buttons.is_opened
+            and self.buttons.tree.currently_selected
+            == ["Object Types", self.context["object"].type]
+        )
 
 
 class ButtonGroupDetailView(AutomateCustomizationView):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
     text = SummaryFormItem(
-        'Basic Information', 'Text',
-        text_filter=lambda text: re.sub(r'\s+Display on Button\s*$', '', text))
-    hover = SummaryFormItem('Basic Information', 'Hover Text')
+        "Basic Information",
+        "Text",
+        text_filter=lambda text: re.sub(r"\s+Display on Button\s*$", "", text),
+    )
+    hover = SummaryFormItem("Basic Information", "Hover Text")
 
     @property
     def is_displayed(self):
@@ -521,37 +575,39 @@ def is_displayed(self):
 
 
 class ButtonGroupFormCommon(AutomateCustomizationView):
-    text = Input(name='name')
-    display = Checkbox(name='display')
-    hover = Input(name='description')
-    image = FonticonPicker('button_icon')
+    text = Input(name="name")
+    display = Checkbox(name="display")
+    hover = Input(name="description")
+    image = FonticonPicker("button_icon")
     icon_color = ColourInput(id="button_color")
 
-    cancel_button = Button('Cancel')
+    cancel_button = Button("Cancel")
 
 
 class NewButtonGroupView(ButtonGroupFormCommon):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
-    add_button = Button('Add')
+    add_button = Button("Add")
 
     @property
     def is_displayed(self):
         ver = self.browser.appliance.version
         expected_title = "Adding a new {} Group".format("Buttons" if ver < "5.10" else "Button")
         return (
-            self.in_customization and
-            self.title.text == expected_title and
-            self.buttons.is_dimmed and
-            self.buttons.is_opened and
-            self.buttons.tree.currently_selected == ['Object Types', self.context['object'].type])
+            self.in_customization
+            and self.title.text == expected_title
+            and self.buttons.is_dimmed
+            and self.buttons.is_opened
+            and self.buttons.tree.currently_selected
+            == ["Object Types", self.context["object"].type]
+        )
 
 
 class EditButtonGroupView(ButtonGroupFormCommon):
-    title = Text('#explorer_title_text')
+    title = Text("#explorer_title_text")
 
-    save_button = Button(title='Save Changes')
-    reset_button = Button('Reset')
+    save_button = Button(title="Save Changes")
+    reset_button = Button("Reset")
 
     @property
     def is_displayed(self):
@@ -580,6 +636,7 @@ class ButtonGroup(BaseEntity, Updateable):
         display: Group name display on Button.
         icon_color: Icon Color of Group.
     """
+
     text = attr.ib()
     hover = attr.ib()
     type = attr.ib()
@@ -587,56 +644,50 @@ class ButtonGroup(BaseEntity, Updateable):
     display = attr.ib(default=None)
     icon_color = attr.ib(default=None)
 
-    _collections = {'buttons': ButtonCollection}
+    _collections = {"buttons": ButtonCollection}
 
     @property
     def buttons(self):
         return self.collections.buttons
 
     def update(self, updates):
-        view = navigate_to(self, 'Edit')
+        view = navigate_to(self, "Edit")
         changed = view.fill(updates)
         if changed:
             view.save_button.click()
         else:
             view.cancel_button.click()
         view = self.create_view(ButtonGroupDetailView, override=updates)
-        if not BZ(1500176, forced_streams=['5.9', 'upstream']).blocks:
-            assert view.is_displayed
+        if not BZ(1500176, forced_streams=["5.9", "upstream"]).blocks:
+            view.wait_displayed()
         view.flash.assert_no_error()
         if changed:
-            if self.appliance.version < '5.9':
-                view.flash.assert_message(
-                    'Buttons Group "{}" was saved'.format(updates.get('hover', self.hover)))
-            else:
-                view.flash.assert_message(
-                    'Button Group "{}" was saved'.format(updates.get('hover', self.hover)))
+            view.flash.assert_message(
+                'Button Group "{}" was saved'.format(updates.get("hover", self.hover))
+            )
         else:
             view.flash.assert_message(
-                'Edit of Buttons Group "{}" was cancelled by the user'.format(self.text))
+                'Edit of Buttons Group "{}" was cancelled by the user'.format(self.text)
+            )
 
     def delete(self, cancel=False):
-        view = navigate_to(self, 'Details')
-        view.configuration.item_select('Remove this Button Group', handle_alert=not cancel)
+        view = navigate_to(self, "Details")
+        view.configuration.item_select("Remove this Button Group", handle_alert=not cancel)
 
         if cancel:
             assert view.is_displayed
             view.flash.assert_no_error()
         else:
             view = self.create_view(ButtonGroupObjectTypeView)
-            if not BZ(1500176, forced_streams=['5.9', 'upstream']).blocks:
-                assert view.is_displayed
+            if not BZ(1500176, forced_streams=["5.9", "upstream"]).blocks:
+                view.wait_displayed()
             view.flash.assert_no_error()
-            if self.appliance.version < '5.9':
-                view.flash.assert_message(
-                    'Buttons Group "{}": Delete successful'.format(self.hover))
-            else:
-                view.flash.assert_message('Button Group "{}": Delete successful'.format(self.hover))
+            view.flash.assert_message('Button Group "{}": Delete successful'.format(self.hover))
 
     @property
     def exists(self):
         try:
-            navigate_to(self, 'Details')
+            navigate_to(self, "Details")
             return True
         except CandidateNotFound:
             return False
@@ -680,87 +731,77 @@ class ButtonGroupCollection(BaseCollection):
 
     def instantiate(self, text, hover, type, image=None, display=None, icon_color=None):
         self.type = type
-        if image:
-            pass
-        elif self.appliance.version < '5.9':
-            image = 'Button Image 1'
-        else:
-            image = 'fa-user'
+        if not image:
+            image = "fa-user"
         return self.ENTITY.from_collection(self, text, hover, type, image, display, icon_color)
 
     def create(self, text, hover, type, image=None, display=None, icon_color=None):
         self.type = type
 
         # Icon selection is Mandatory
-        if image:
-            pass
-        elif self.appliance.version < '5.9':
-            image = 'Button Image 1'
-        else:
-            image = 'fa-user'
-
-        view = navigate_to(self, 'Add')
-        view.fill({
-            'text': text,
-            'hover': hover,
-            'image': image,
-            'display': display,
-            'icon_color': icon_color}
+        if not image:
+            image = "fa-user"
+
+        view = navigate_to(self, "Add")
+        view.fill(
+            {
+                "text": text,
+                "hover": hover,
+                "image": image,
+                "display": display,
+                "icon_color": icon_color,
+            }
         )
         view.add_button.click()
         view = self.create_view(ButtonGroupObjectTypeView)
 
         view.flash.assert_no_error()
-        if self.appliance.version < '5.9':
-            view.flash.assert_message('Buttons Group "{}" was added'.format(hover))
-        else:
-            view.flash.assert_message('Button Group "{}" was added'.format(hover))
+        view.flash.assert_message('Button Group "{}" was added'.format(hover))
         return self.instantiate(
             text=text, hover=hover, type=type, image=image, display=display, icon_color=icon_color
         )
 
 
-@navigator.register(ButtonGroupCollection, 'All')
+@navigator.register(ButtonGroupCollection, "All")
 class ButtonGroupAll(CFMENavigateStep):
     VIEW = ButtonsAllView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
-        self.view.buttons.tree.click_path('Object Types')
+        self.view.buttons.tree.click_path("Object Types")
 
 
-@navigator.register(ButtonGroupCollection, 'ObjectType')
+@navigator.register(ButtonGroupCollection, "ObjectType")
 class ButtonGroupObjectType(CFMENavigateStep):
     VIEW = ButtonGroupObjectTypeView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
-        self.view.buttons.tree.click_path('Object Types', self.obj.type)
+        self.view.buttons.tree.click_path("Object Types", self.obj.type)
 
 
-@navigator.register(ButtonGroupCollection, 'Add')
+@navigator.register(ButtonGroupCollection, "Add")
 class ButtonGroupNew(CFMENavigateStep):
     VIEW = NewButtonGroupView
-    prerequisite = NavigateToSibling('ObjectType')
+    prerequisite = NavigateToSibling("ObjectType")
 
     def step(self):
-        self.view.configuration.item_select('Add a new Button Group')
+        self.view.configuration.item_select("Add a new Button Group")
 
 
-@navigator.register(ButtonGroup, 'Details')
+@navigator.register(ButtonGroup, "Details")
 class ButtonGroupDetails(CFMENavigateStep):
     VIEW = ButtonGroupDetailView
-    prerequisite = NavigateToAttribute('appliance.server', 'AutomateCustomization')
+    prerequisite = NavigateToAttribute("appliance.server", "AutomateCustomization")
 
     def step(self):
-        self.view.buttons.tree.click_path(
-            'Object Types', self.obj.type, self.obj.text)
+        self.view.buttons.tree.click_path("Object Types", self.obj.type, self.obj.text)
 
 
-@navigator.register(ButtonGroup, 'Edit')
+@navigator.register(ButtonGroup, "Edit")
 class ButtonGroupEdit(CFMENavigateStep):
     VIEW = EditButtonGroupView
-    prerequisite = NavigateToSibling('Details')
+    prerequisite = NavigateToSibling("Details")
 
     def step(self):
-        self.view.configuration.item_select('Edit this Button Group')
+        self.view.configuration.item_select("Edit this Button Group")


Test patch: