0

I´ve faced a problem that my one test passes in local but not in CI. I have a progress bar with: positions 0%, 50%, 100% of starting a server, status of starting the server - "Server requested", "Spawning server...", "Server ready at" and status log. I rewrote this case in few times but the result is the same - I got AssertionError, it cannot be catch one of values in CI. I have no so big experience in Selenium and I´m stuck in which way I need to move to fix such problem. I´d appreciate if anyone helps me!!!

 while '/spawn-pending/' in browser.current_url or is_displayed(
            browser, SpawningPageLocators.PROGRESS_BAR
        ):
            # checking text messages that the server is starting to up
            texts = browser.find_elements(*SpawningPageLocators.TEXT_SERVER)
            texts_list = []
            for text in texts:
                text.text
                texts_list.append(text.text)
            assert str(texts_list[0]) == SpawningPageLocators.TEXT_SERVER_STARTING
            assert str(texts_list[1]) == SpawningPageLocators.TEXT_SERVER_REDIRECT
            # checking progress of the servers starting (messages, % progress and events log))
            logs_list = []
            try:
                progress_bar = browser.find_element(*SpawningPageLocators.PROGRESS_BAR)
                progress = browser.find_elements(*SpawningPageLocators.PROGRESS_MESSAGE)
                logs = browser.find_elements(*SpawningPageLocators.PROGRESS_LOG)
                for status_message in progress:
                    progress_messages = status_message.text
                    percent = (
                        progress_bar.get_attribute('style')
                        .split(';')[0]
                        .split(':')[1]
                        .strip()
                    )
                    for i in range(len(logs)):
                        progress_log = logs[i].text
                        logs_list.append(progress_log)
                    if progress_messages == "":
                        assert percent == "0%"
                        assert int(len(logs_list)) == 0
                    if progress_messages == "Server requested":
                        assert percent == "0%"
                        assert int(len(logs_list)) == 1
>                       assert str(logs_list[0]) == "Server requested"
E                       AssertionError: assert '' == 'Server requested'
E                         - Server requested

After rewrote it to

 while '/spawn-pending/' in browser.current_url:
            progress_message = browser.find_element(
                *SpawningPageLocators.PROGRESS_MESSAGE
            ).text
            # checking text messages that the server is starting to up
            texts = browser.find_elements(*SpawningPageLocators.TEXT_SERVER)
            texts_list = []
            for text in texts:
                text.text
                texts_list.append(text.text)
            assert str(texts_list[0]) == SpawningPageLocators.TEXT_SERVER_STARTING
            assert str(texts_list[1]) == SpawningPageLocators.TEXT_SERVER_REDIRECT
            # checking progress of the servers starting (messages, % progress and events log))
            logs_list = []
            try:
                progress_bar = browser.find_element(*SpawningPageLocators.PROGRESS_BAR)
                progress = browser.find_element(*SpawningPageLocators.PROGRESS_MESSAGE)
                logs = browser.find_elements(*SpawningPageLocators.PROGRESS_LOG)
                percent = (
                    progress_bar.get_attribute('style').split(';')[0].split(':')[1].strip()
                )
                for log in logs:
                    # only include non-empty log messages
                    # avoid partially-created elements
                    if log.text:
                        logs_list.append(log.text)
            except (NoSuchElementException, StaleElementReferenceException):
                break
    
            expected_messages = [
                "Server requested",
                "Spawning server...",
                f"Server ready at {app.base_url}user/{user.name}/",
            ]
    
            if progress_message:
                assert progress_message in expected_messages
            if logs_list:
                # race condition: progress_message _should_
                # be the last log message, but it _may_ be the next one
                assert progress_message
    
            if len(logs_list) < 2:
>               assert percent == "0%"

Got : AssertionError: assert '50%' == '0%' on the line "assert percent == "0%"

  • Please trim your code to make it easier to find your problem. Follow these guidelines to create a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). – Community Dec 30 '22 at 20:43

0 Answers0