🏡 index : quine-global/quine-anaconda-webui.git

# Copyright (C) 2022 Red Hat, Inc.
# SPDX-License-Identifier: LGPL-2.1-or-later

import os
import sys

HELPERS_DIR = os.path.dirname(__file__)
sys.path.append(HELPERS_DIR)

from step_logger import log_step
from steps import PROGRESS
from testlib import wait


class Progress():
    def __init__(self, browser):
        self.browser = browser
        self._reboot_selector = f".{PROGRESS}-status-success button:contains('Reboot')"

    @log_step(snapshot_after=True)
    def wait_done(self, timeout=1200):
        delay = 30
        wait(
            lambda: self.browser.is_present(self._reboot_selector) or self.browser.is_present("#critical-error-bz-report-modal"),
            delay=delay,
            tries=timeout / delay
        )
        if self.browser.is_present('#critical-error-bz-report-modal'):
            text = self.browser.text('#critical-error-bz-report-modal-details')
            raise AssertionError(
                f"Critical error encountered during installation: {text}"
            )

        self.browser.wait_visible(self._reboot_selector)

    @log_step()
    def reboot(self):
        self.browser.click(self._reboot_selector)

    def wait_installation_error_dialog(self, message_substring=None, timeout=600):
        dialog = "#anaconda-screen-progress-installation-error-dialog"
        with self.browser.wait_timeout(timeout):
            self.browser.wait_in_text(dialog, message_substring)

    def respond_installation_error_abort(self):
        self.browser.click("#anaconda-screen-progress-installation-error-abort-btn")

    def wait_installation_failed(self, message_substring=None, timeout=600):
        dialog = "#critical-error-bz-report-modal"
        with self.browser.wait_timeout(timeout):
            self.browser.wait_in_text(f"{dialog} h1", "Installation failed")
            if message_substring:
                self.browser.wait_in_text(f"{dialog}-details", message_substring)