diff --git a/.github/workflows/feature_test.yml b/.github/workflows/feature_test.yml index 001f4b9faf..0c5c7f685d 100644 --- a/.github/workflows/feature_test.yml +++ b/.github/workflows/feature_test.yml @@ -30,7 +30,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install dependencies run: uv sync --group docs @@ -56,7 +56,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install dependencies run: uv sync -p ${{ matrix.python-version }} @@ -80,7 +80,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install dependencies run: uv sync --all-extras -p ${{ matrix.python-version }} @@ -99,7 +99,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install dependencies run: uv sync -p 3.11 diff --git a/.github/workflows/release_test_sfdx.yml b/.github/workflows/release_test_sfdx.yml index 911932654a..12ba7a4335 100644 --- a/.github/workflows/release_test_sfdx.yml +++ b/.github/workflows/release_test_sfdx.yml @@ -48,7 +48,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install Python dependencies run: uv sync diff --git a/.github/workflows/slow_integration_tests.yml b/.github/workflows/slow_integration_tests.yml index 73c27c5767..79ae3d0a87 100644 --- a/.github/workflows/slow_integration_tests.yml +++ b/.github/workflows/slow_integration_tests.yml @@ -34,7 +34,7 @@ jobs: - name: Set up uv uses: SFDO-Tooling/setup-uv@main with: - version: "0.5.0" + version: "0.6.1" enable-cache: true - name: Install dependencies run: uv sync -p 3.11 diff --git a/cumulusci/robotframework/Salesforce.py b/cumulusci/robotframework/Salesforce.py index 99eebdb0d0..8fb3332e6a 100644 --- a/cumulusci/robotframework/Salesforce.py +++ b/cumulusci/robotframework/Salesforce.py @@ -12,9 +12,11 @@ StaleElementReferenceException, WebDriverException, ) +from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from SeleniumLibrary.errors import ElementNotFound, NoOpenBrowser +from selenium.webdriver.common.by import By from urllib3.exceptions import ProtocolError from cumulusci.robotframework import locator_manager @@ -607,7 +609,7 @@ def select_app_launcher_app(self, app_name, timeout=30): self.selenium.wait_until_page_contains_element(locator, timeout) self.selenium.set_focus_to_element(locator) elem = self.selenium.get_webelement(locator) - link = elem.find_element_by_xpath("../../..") + link = elem.find_element(By.XPATH, "../../..") self.selenium.set_focus_to_element(link) link.click() self.wait_until_modal_is_closed() @@ -892,7 +894,8 @@ def _locate_element_by_label(self, browser, locator, tag, constraints): fieldset_prefix + f'//label[descendant-or-self::*[text()[normalize-space() = "{label}"]]]' ) - labels = browser.find_elements_by_xpath(label_xpath) + labels = browser.find_elements(By.XPATH, label_xpath) + if not labels: return [] @@ -906,13 +909,11 @@ def _locate_element_by_label(self, browser, locator, tag, constraints): # probably never be. Famous last words, right? orig_wait = self.selenium.set_selenium_implicit_wait(0) component = None - component = label_element.find_element_by_xpath( - "./ancestor::*[starts-with(local-name(), 'lightning-')][1]" - ) + component = label_element.find_element(By.XPATH, "./ancestor::*[starts-with(local-name(), 'lightning-')][1]") except NoSuchElementException: component_id = label_element.get_attribute("for") if component_id: - component = browser.find_element_by_id(component_id) + component = browser.find_element(By.ID, component_id) # else find an input or textarea in a sibling or descendant? finally: self.selenium.set_selenium_implicit_wait(orig_wait) diff --git a/cumulusci/robotframework/Salesforce.robot b/cumulusci/robotframework/Salesforce.robot index 1b8e9275f4..e965f86743 100644 --- a/cumulusci/robotframework/Salesforce.robot +++ b/cumulusci/robotframework/Salesforce.robot @@ -186,7 +186,7 @@ Chrome Set Headless ... This keyword is not intended to be used by test scripts [Arguments] ${options} - Call Method ${options} set_headless ${true} + Call Method ${options} add_argument --headless Call Method ${options} add_argument --disable-dev-shm-usage Call Method ${options} add_argument --disable-background-timer-throttling [return] ${options} diff --git a/cumulusci/robotframework/form_handlers.py b/cumulusci/robotframework/form_handlers.py index bc79749057..baad468077 100644 --- a/cumulusci/robotframework/form_handlers.py +++ b/cumulusci/robotframework/form_handlers.py @@ -2,6 +2,7 @@ from robot.libraries.BuiltIn import BuiltIn from selenium.common.exceptions import TimeoutException +from selenium.webdriver.common.by import By from cumulusci.utils.classutils import get_all_subclasses @@ -61,9 +62,7 @@ def selenium(self): @property def input_element(self): """Returns the first or