#9829 Nightly test failure (rawhide): multiple webui tests failures with firefox 141
Closed: fixed by frenaud. Opened by frenaud.

We are seeing multiple failures in the webui nightly tests on rawhide with the update of firefox to firefox-141.0-1.fc43.x86_64

geckodriver 0.35.0 from https://github.com/mozilla/geckodriver/releases/download/0.35.0/geckodriver-0.35.0-linux64.tar.gz
selenium 4.25.0 installed with pip

The same tests were green with firefox-139.0-2.fc43.x86_64

Failing tests:

  • test_webui/test_host.py::test_host::test_negative_cert
self = <ipatests.test_webui.test_host.test_host object at 0x7ff52854fd90>
    @screenshot
    def test_negative_cert(self):
        """ Test negative CSR """
        self.init_app()
        self.add_record(ENTITY, self.data2)
        self.close_notifications()
        self.navigate_to_record(self.data2['pkey'], entity=ENTITY)
        # emtpy CSR
        csr_add = 'div[name="certificate"] button[name="add"]'
        csr_add_btn = self.find(csr_add, By.CSS_SELECTOR, strict=True)
        csr_add_btn.click()
        self.wait()
        self.dialog_button_click('ok')
        self.assert_field_validation_required()
        self.dialog_button_click('cancel')
        # invalid CSR
        csr_add = 'div[name="certificate"] button[name="add"]'
        csr_add_btn = self.find(csr_add, By.CSS_SELECTOR, strict=True)
        csr_add_btn.click()
        self.wait()
        self.fill_textarea('new_cert', host.csr_invalid)
        self.dialog_button_click('ok')
        dialog_info = self.get_dialog_info()
        self.wait()
        if host.csr_invalid_error in dialog_info['text']:
            self.dialog_button_click('cancel')
>           self.dialog_button_click('cancel')
  • test_webui/test_automount.py::TestAutomount::test_add_duplicated_indirect_map
self = <ipatests.test_webui.test_automount.TestAutomount object at 0x7f572c37ebe0>
    @screenshot
    def test_add_duplicated_indirect_map(self):
        """
        Test creating indirect automount map with duplicated field values
        """
        original_name = 'map1'
        original_key = 'mount1'
        with Location(LOC_DATA, ui=self):
            self.add_record(LOC_ENTITY, {
                'pkey': original_name,
                'add': [
                    ('radio', 'method', 'add_indirect'),
                    ('textbox', 'automountmapname', original_name),
                    ('textarea', 'description', 'desc'),
                    ('textbox', 'key', original_key),
                ],
            }, facet='maps', navigate=False)
            self.add_record(LOC_ENTITY, {
                'pkey': 'map2',
                'add': [
                    ('radio', 'method', 'add_indirect'),
                    ('textbox', 'automountmapname', original_name),
                    ('textarea', 'description', 'desc'),
                    ('textbox', 'key', 'mount2'),
                ],
            }, negative=True, facet='maps', navigate=False, pre_delete=False)
            self.assert_last_error_dialog(
                'automount map with name "{}" already exists'
                .format(original_name)
            )
>           self.close_all_dialogs()
  • test_webui/test_selfservice.py::test_selfservice::test_permission_negative
self = <ipatests.test_webui.test_selfservice.test_selfservice object at 0x7fea20caaf90>
    @screenshot
    def test_permission_negative(self):
        """
        Negative test cases for self service permission
        """
        self.init_app()
        # try to add duplicate entry
        self.add_record(data_selfservice.ENTITY, data_selfservice.DATA1)
        self.add_record(data_selfservice.ENTITY, data_selfservice.DATA1,
                        negative=True, pre_delete=False)
        self.assert_last_error_dialog(ENTRY_EXIST)
>       self.close_all_dialogs()
  • test_webui/test_config.py::test_config::test_username_lenght
self = <ipatests.test_webui.test_config.test_config object at 0x7f2d3a9a6450>
    @screenshot
    def test_username_lenght(self):
        """
        Test "Maximum username length" field
        """
        self.init_app()
        self.navigate_to_entity(config_data.ENTITY)
        usr_length_s = 'ipamaxusernamelength'
        def_val = self.get_field_value(usr_length_s)
        # test field with blank field
        self.assert_field_negative(usr_length_s, '',
                                   'Required field')
        # test field with invalid value
        self.assert_field_negative(usr_length_s, 'abc',
                                   'Must be an integer')
        # test field with exceeding value
        self.assert_field_negative(usr_length_s, '9999',
                                   'Maximum value is 255')
        # test field with space in-between numbers
        self.assert_field_negative(usr_length_s, '1 2',
                                   'Must be an integer')
        # test field with special char
        self.assert_field_negative(usr_length_s, '*',
                                   'Must be an integer')
        # test if change of value is reflected
        self.fill_input(usr_length_s, 3)
        self.facet_button_click('save')
        self.add_record(user_data.ENTITY, user_data.DATA, negative=True)
        self.assert_last_error_dialog(ERR_MAX_CHAR.format(3))
>       self.close_all_dialogs()
  • test_webui/test_user.py::test_user::test_add_user_special
self = <ipatests.test_webui.test_user.test_user object at 0x7fd254de5b70>
    @screenshot
    def test_user_misc(self):
        """
        Test various miscellaneous test cases under one roof to save init time
        """
        self.init_app()
        # add already existing user (should fail) / also test ticket 4098
        self.add_record(user.ENTITY, user.DATA)
        self.add_record(user.ENTITY, user.DATA, negative=True,
                        pre_delete=False)
        self.assert_last_error_dialog(USR_EXIST.format(user.PKEY))
        actions = ActionChains(self.driver)
        actions.send_keys(Keys.TAB)
        actions.send_keys(Keys.ENTER).perform()
        self.wait(0.5)
        self.dialog_button_click('cancel')
        # add user without login name
        self.add_record(user.ENTITY, user.DATA_NO_LOGIN)
        self.assert_record('nsurname10')
        # try to add same user without login name again (should fail)
        self.add_record(user.ENTITY, user.DATA_NO_LOGIN, negative=True,
                        pre_delete=False)
        self.assert_last_error_dialog(USR_EXIST.format('nsurname10'))
>       self.close_all_dialogs()

These concern also other tests, where firefox got updated to v141, not only rawhide.

Duplicated (now closed) ticket for the master branch https://pagure.io/freeipa/issue/9856

Metadata Update from @dhanina:
- Issue assigned to dhanina

Metadata Update from @dhanina:
- Custom field on_review adjusted to https://github.com/freeipa/freeipa/pull/8166

master:

  • 736c72e335cda1b47315b58e553e4bdba8756135 Wait until buttons are clickable

ipa-4-13:

  • 2e24bfc03a5ea039868769aaf05208d37fb34ce2 Wait until buttons are clickable

ipa-4-12:

  • a2055649d4c5cb8e886e25ce9cb8d2841f0a58f0 Wait until buttons are clickable

Metadata Update from @frenaud:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

Metadata