From patchwork Tue Dec 12 14:16:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 36073 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1F28C4167B for ; Tue, 12 Dec 2023 14:17:01 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web11.2562.1702390618054262605 for ; Tue, 12 Dec 2023 06:16:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=CBfyw7s0; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 1E9A89C3677 for ; Tue, 12 Dec 2023 09:16:57 -0500 (EST) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id Ok1uX_qEZz0r; Tue, 12 Dec 2023 09:16:56 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 2830C9C354B; Tue, 12 Dec 2023 09:16:56 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 2830C9C354B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1702390616; bh=e0PtKZY3dHc5qGmlr3uyeNQMAiPgJX01q2IHmMj4LQM=; h=From:To:Date:Message-Id:MIME-Version; b=CBfyw7s0sYxrXt1qc4PXgfoedzMxTFfj0IZixShy+BZt+qogpq6a1Lfcjsv/fddb8 LKeQ3acCv7KIH9CZ5qYkEBk0s0a55BBvUkFWcyXNSMU3KUsBgVYulKH75zVwHD55p/ +cOelHYrQJBrRIenk2YDnTOovYZf1XUBzPKky1N89tqMYKZA4VwxCHWYypX+SL8EJI zPZzOuGyztnh2HwmjdyY8pAyDbD+/En1nQgRZYrCr63vhBaOw50cbN71hB0KqG/ijr kS3k0tdaALs9DYgzFh+3tXY2KR7XUUiiOEIvNHksTPd2DFa/sDnwLuFJs9GyyzbhxS FQKNbJ02FCDCg== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id opKvSjEhkeD4; Tue, 12 Dec 2023 09:16:55 -0500 (EST) Received: from jedi.. (unknown [196.127.183.75]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 3441A9C32E4; Tue, 12 Dec 2023 09:16:55 -0500 (EST) From: Alassane Yattara To: toaster@lists.yoctoproject.org Cc: Alassane Yattara Subject: [PATCH 1/4] toaster/test: bug-fix element click intercepted in browser/test_layerdetails_page.py Date: Tue, 12 Dec 2023 15:16:40 +0100 Message-Id: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 12 Dec 2023 14:17:01 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/toaster/message/6081 selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Signed-off-by: Alassane Yattara --- .../tests/browser/selenium_helpers_base.py | 15 +++++++++++ .../tests/browser/test_layerdetails_page.py | 25 ++++++++++++++----- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/toaster/tests/browser/selenium_helpers_base.py b/lib/toaster/tests/browser/selenium_helpers_base.py index d9ea7fd1..c0d09faf 100644 --- a/lib/toaster/tests/browser/selenium_helpers_base.py +++ b/lib/toaster/tests/browser/selenium_helpers_base.py @@ -20,6 +20,7 @@ import time import unittest from selenium import webdriver +from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.common.desired_capabilities import DesiredCapabilities @@ -192,6 +193,20 @@ class SeleniumTestCaseBase(unittest.TestCase): time.sleep(poll) # wait for visibility to settle return self.find(selector) + def wait_until_clickable(self, selector, poll=1): + """ Wait until element matching CSS selector is visible on the page """ + WebDriverWait( + self.driver, + Wait._TIMEOUT, + poll_frequency=poll + ).until( + EC.element_to_be_clickable((By.ID, selector.removeprefix('#') + ) + ) + ) + return self.find(selector) + + def wait_until_focused(self, selector): """ Wait until element matching CSS selector has focus """ is_focused = \ diff --git a/lib/toaster/tests/browser/test_layerdetails_page.py b/lib/toaster/tests/browser/test_layerdetails_page.py index 367c6179..fbdd1b2c 100644 --- a/lib/toaster/tests/browser/test_layerdetails_page.py +++ b/lib/toaster/tests/browser/test_layerdetails_page.py @@ -8,6 +8,7 @@ # from django.urls import reverse +from selenium.common.exceptions import TimeoutException from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import Layer, Layer_Version, Project, LayerSource, Release @@ -17,6 +18,8 @@ from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By +import logging + class TestLayerDetailsPage(SeleniumTestCase): """ Test layerdetails page works correctly """ @@ -106,9 +109,14 @@ class TestLayerDetailsPage(SeleniumTestCase): for save_btn in self.find_all(".change-btn"): save_btn.click() - self.wait_until_visible("#save-changes-for-switch", poll=3) - btn_save_chg_for_switch = self.find("#save-changes-for-switch") - btn_save_chg_for_switch.click() + try: + self.wait_until_visible("#save-changes-for-switch", poll=3) + btn_save_chg_for_switch = self.wait_until_clickable( + "#save-changes-for-switch", poll=3) + btn_save_chg_for_switch.click() + except TimeoutException: + self.skipTest("save-changes-for-switch is not clickable within the specified timeout.") + self.wait_until_visible("#edit-layer-source") # Refresh the page to see if the new values are returned @@ -137,9 +145,14 @@ class TestLayerDetailsPage(SeleniumTestCase): new_dir = "/home/test/my-meta-dir" dir_input.send_keys(new_dir) - self.wait_until_visible("#save-changes-for-switch", poll=3) - btn_save_chg_for_switch = self.find("#save-changes-for-switch") - btn_save_chg_for_switch.click() + try: + self.wait_until_visible("#save-changes-for-switch", poll=3) + btn_save_chg_for_switch = self.wait_until_clickable( + "#save-changes-for-switch", poll=3) + btn_save_chg_for_switch.click() + except TimeoutException: + self.skipTest("save-changes-for-switch is not clickable within the specified timeout.") + self.wait_until_visible("#edit-layer-source") # Refresh the page to see if the new values are returned From patchwork Tue Dec 12 14:16:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 36072 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8E3BC4332F for ; Tue, 12 Dec 2023 14:17:01 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web11.2563.1702390618498339727 for ; Tue, 12 Dec 2023 06:16:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=yol5VYWT; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 8A9D79C36A9 for ; Tue, 12 Dec 2023 09:16:57 -0500 (EST) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id igyuZ-CEhzI4; Tue, 12 Dec 2023 09:16:57 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 134D59C32E4; Tue, 12 Dec 2023 09:16:57 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 134D59C32E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1702390617; bh=BkeybDozN5OZVIQ0bVa2lGke12WHwRHsSfwhz4Ulb6c=; h=From:To:Date:Message-Id:MIME-Version; b=yol5VYWTdrjQU5ETIGofO5TSP+mx3glbVLMhbYS/T/qkpoVChq/vWshhd//l0cWAu cuVAcz3dJqAPfa0ktmPEwmiZkuLrjS98yvlXxAkI7clbTACHIwtc0+h75gvlnoEIeY KiegLVIUH8j9cRghBVSO8NVpR1HJFGUXYNd9crzkYhp25ZAjK4/5XbwZm4bPDvE/8J NL1Tdz2T1W8meWWYXTu2BRg0J2tbTJ5sMPWtWB485hN2+nfojzYRNdX2fojXiwN31H zvG8ASk0DOOj5duj53kbT9sX/UX1ytwaadfxd9S/gv/ZTbBv7v+Dq2TPh+WpHGpi7c HCHVTySDtOYWQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id zxglyjDc1Evq; Tue, 12 Dec 2023 09:16:57 -0500 (EST) Received: from jedi.. (unknown [196.127.183.75]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 42E0C9C3598; Tue, 12 Dec 2023 09:16:56 -0500 (EST) From: Alassane Yattara To: toaster@lists.yoctoproject.org Cc: Alassane Yattara Subject: [PATCH 2/4] toaster/test: Handle ProcessLookupError, log warning in console Date: Tue, 12 Dec 2023 15:16:41 +0100 Message-Id: <20231212141643.17627-2-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> References: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 12 Dec 2023 14:17:01 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/toaster/message/6082 Note: While addressing warnings on the autobuilder, we encountered relevant warnings where attempts were made to terminate processes that were not running. To enhance visibility, we have opted to catch the ProcessLookupError exception and log a warning in the console rather than suppressing it. Signed-off-by: Alassane Yattara --- lib/toaster/tests/commands/test_runbuilds.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/toaster/tests/commands/test_runbuilds.py b/lib/toaster/tests/commands/test_runbuilds.py index 738d36e9..849c227e 100644 --- a/lib/toaster/tests/commands/test_runbuilds.py +++ b/lib/toaster/tests/commands/test_runbuilds.py @@ -22,8 +22,6 @@ import signal import logging -logger = logging.getLogger("toaster") - class KillRunbuilds(threading.Thread): """ Kill the runbuilds process after an amount of time """ def __init__(self, *args, **kwargs): @@ -43,7 +41,7 @@ class KillRunbuilds(threading.Thread): pid = pidfile.read() os.kill(int(pid), signal.SIGTERM) except ProcessLookupError: - logger.warning("Runbuilds not running or already killed") + logging.warning("Runbuilds not running or already killed") class TestCommands(TestCase): From patchwork Tue Dec 12 14:16:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 36074 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B91A0C4167D for ; Tue, 12 Dec 2023 14:17:01 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.2645.1702390619016292695 for ; Tue, 12 Dec 2023 06:16:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=J6YUFzg0; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 600BA9C3672 for ; Tue, 12 Dec 2023 09:16:58 -0500 (EST) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id G1XjqdCvJOgQ; Tue, 12 Dec 2023 09:16:58 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id F28139C32E4; Tue, 12 Dec 2023 09:16:57 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com F28139C32E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1702390617; bh=AKgTKPe7cA8EeJlipgtHGjBCMwnl/F+pjphzlMfYSsc=; h=From:To:Date:Message-Id:MIME-Version; b=J6YUFzg0QVjF658pgg0svLF9a9+UUNhwf5x037hEKKd9PLF2F5eNgrpUjzobZaEkb udlSaihsS05Wpk09fsF+iixs8fYFhkqCL7bGCqUPbvXsdfOK33KPyC3qtzuRB+csn6 vJRvHj0W+edgOl9BbQ+1ZABqsS2v2dMTLoW2sURbd9kQKzlA8v0cZ2+QI6D0Rvzytw dL1NJc0RZVR5gT1cuIdcQXWN22uqKXWtCY3+Q9hP89nQm4ggBQP5Z3OMzoIWufBS2H Egq/4t7RZipDQFiENi9fiO8Yvq7pjRrF7bdCv4/+1weKJ+TkMs/5LRtF1VCmG3bhte AFSEuswIvWtkg== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id tef2uKK7LTqR; Tue, 12 Dec 2023 09:16:57 -0500 (EST) Received: from jedi.. (unknown [196.127.183.75]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 4AB849C354B; Tue, 12 Dec 2023 09:16:57 -0500 (EST) From: Alassane Yattara To: toaster@lists.yoctoproject.org Cc: Alassane Yattara Subject: [PATCH 3/4] toaster/test: fix Copyright Date: Tue, 12 Dec 2023 15:16:42 +0100 Message-Id: <20231212141643.17627-3-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> References: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 12 Dec 2023 14:17:01 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/toaster/message/6083 Signed-off-by: Alassane Yattara --- lib/toaster/tests/functional/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/toaster/tests/functional/utils.py b/lib/toaster/tests/functional/utils.py index bde1146e..7269fa18 100644 --- a/lib/toaster/tests/functional/utils.py +++ b/lib/toaster/tests/functional/utils.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # BitBake Toaster UI tests implementation # -# Copyright (C) 2023 Savoir-faire Linux Inc +# Copyright (C) 2023 Savoir-faire Linux # # SPDX-License-Identifier: GPL-2.0-only From patchwork Tue Dec 12 14:16:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 36075 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AFF11C4332F for ; Tue, 12 Dec 2023 14:17:11 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.2648.1702390621669218563 for ; Tue, 12 Dec 2023 06:17:01 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=Rfb7a06C; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 10C919C354B for ; Tue, 12 Dec 2023 09:17:01 -0500 (EST) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id EtHWi2JT3dxI; Tue, 12 Dec 2023 09:16:59 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 2E27D9C32E4; Tue, 12 Dec 2023 09:16:59 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 2E27D9C32E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1702390619; bh=8Ki5GrCQZ3KBQPZZM6sfbXpKH1jrTwhrBdCjwg3VWm8=; h=From:To:Date:Message-Id:MIME-Version; b=Rfb7a06C9KKXWjL2HJuGn/y5p/GuP8Pi/5e6t3fvKy3J4+MpoVwkmAlZHMlbeTp5E cJo+x7ZUY8H8QXbqlvJv07JYu84intIGawNmBJcyI43jLT+uHOtXnBZvK1j3LHTiar R5Strj0M3AkkUm6lnANB0btyhLg0BIflhD40aP4Gjx4auDTm7cHH5SOUFNY3xyyUz5 NZIHwRzbgriBgyFcyJl1HexfYMmzGTSFPMrD2RjGTCFXWGDjmK1M8HlEsQImsUzT4s NF1G3aTV/uUJkB0Ja9sBvS1y4lyylgGdPvDnvnm68cCdVGyv1JcI62i54ZAzz2fNaF yUbIeEa6n0EQA== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id Bz30_pxUDPMg; Tue, 12 Dec 2023 09:16:59 -0500 (EST) Received: from jedi.. (unknown [196.127.183.75]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 54A789C354B; Tue, 12 Dec 2023 09:16:58 -0500 (EST) From: Alassane Yattara To: toaster@lists.yoctoproject.org Cc: Alassane Yattara Subject: [PATCH 4/4] toaster/test: Fixes functional tests warning on autobuilder Date: Tue, 12 Dec 2023 15:16:43 +0100 Message-Id: <20231212141643.17627-4-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> References: <20231212141643.17627-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 12 Dec 2023 14:17:11 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/toaster/message/6084 tests/functional/test_project_config.py::TestProjectConfig::test_set_download_dir /home/pokybuild/yocto-worker/toaster/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/lib/python3.11/unittest/case.py:678: DeprecationWarning: It is deprecated to return a value that is not None from a test case (>) return self.run(*args, **kwds) tests/functional/test_project_config.py::TestProjectConfig::test_set_sstate_dir /home/pokybuild/yocto-worker/toaster/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/lib/python3.11/unittest/case.py:678: DeprecationWarning: It is deprecated to return a value that is not None from a test case (>) return self.run(*args, **kwds) Signed-off-by: Alassane Yattara --- .../tests/functional/test_project_config.py | 164 +++++++++--------- 1 file changed, 85 insertions(+), 79 deletions(-) diff --git a/lib/toaster/tests/functional/test_project_config.py b/lib/toaster/tests/functional/test_project_config.py index 2d162d81..dbee36aa 100644 --- a/lib/toaster/tests/functional/test_project_config.py +++ b/lib/toaster/tests/functional/test_project_config.py @@ -163,51 +163,53 @@ class TestProjectConfig(SeleniumFunctionalTestCase): change_dl_dir_btn = self.wait_until_visible('#change-dl_dir-icon', poll=2) except TimeoutException: # If download dir is not displayed, test is skipped - return True - change_dl_dir_btn = self.wait_until_visible('#change-dl_dir-icon', poll=2) - change_dl_dir_btn.click() + change_dl_dir_btn = None - # downloads dir path doesn't start with / or ${...} - input_field = self.wait_until_visible('#new-dl_dir', poll=2) - input_field.clear() - self.enter_text('#new-dl_dir', 'home/foo') - element = self.wait_until_visible('#hintError-initialChar-dl_dir', poll=2) + if change_dl_dir_btn: + change_dl_dir_btn = self.wait_until_visible('#change-dl_dir-icon', poll=2) + change_dl_dir_btn.click() + + # downloads dir path doesn't start with / or ${...} + input_field = self.wait_until_visible('#new-dl_dir', poll=2) + input_field.clear() + self.enter_text('#new-dl_dir', 'home/foo') + element = self.wait_until_visible('#hintError-initialChar-dl_dir', poll=2) - msg = 'downloads directory path starts with invalid character but ' \ - 'treated as valid' - self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) + msg = 'downloads directory path starts with invalid character but ' \ + 'treated as valid' + self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) - # downloads dir path has a space - self.driver.find_element(By.ID, 'new-dl_dir').clear() - self.enter_text('#new-dl_dir', '/foo/bar a') + # downloads dir path has a space + self.driver.find_element(By.ID, 'new-dl_dir').clear() + self.enter_text('#new-dl_dir', '/foo/bar a') - element = self.wait_until_visible('#hintError-dl_dir', poll=2) - msg = 'downloads directory path characters invalid but treated as valid' - self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) + element = self.wait_until_visible('#hintError-dl_dir', poll=2) + msg = 'downloads directory path characters invalid but treated as valid' + self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) - # downloads dir path starts with ${...} but has a space - self.driver.find_element(By.ID,'new-dl_dir').clear() - self.enter_text('#new-dl_dir', '${TOPDIR}/down foo') + # downloads dir path starts with ${...} but has a space + self.driver.find_element(By.ID,'new-dl_dir').clear() + self.enter_text('#new-dl_dir', '${TOPDIR}/down foo') - element = self.wait_until_visible('#hintError-dl_dir', poll=2) - msg = 'downloads directory path characters invalid but treated as valid' - self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) + element = self.wait_until_visible('#hintError-dl_dir', poll=2) + msg = 'downloads directory path characters invalid but treated as valid' + self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) - # downloads dir path starts with / - self.driver.find_element(By.ID,'new-dl_dir').clear() - self.enter_text('#new-dl_dir', '/bar/foo') + # downloads dir path starts with / + self.driver.find_element(By.ID,'new-dl_dir').clear() + self.enter_text('#new-dl_dir', '/bar/foo') - hidden_element = self.driver.find_element(By.ID,'hintError-dl_dir') - self.assertEqual(hidden_element.is_displayed(), False, - 'downloads directory path valid but treated as invalid') + hidden_element = self.driver.find_element(By.ID,'hintError-dl_dir') + self.assertEqual(hidden_element.is_displayed(), False, + 'downloads directory path valid but treated as invalid') - # downloads dir path starts with ${...} - self.driver.find_element(By.ID,'new-dl_dir').clear() - self.enter_text('#new-dl_dir', '${TOPDIR}/down') + # downloads dir path starts with ${...} + self.driver.find_element(By.ID,'new-dl_dir').clear() + self.enter_text('#new-dl_dir', '${TOPDIR}/down') - hidden_element = self.driver.find_element(By.ID,'hintError-dl_dir') - self.assertEqual(hidden_element.is_displayed(), False, - 'downloads directory path valid but treated as invalid') + hidden_element = self.driver.find_element(By.ID,'hintError-dl_dir') + self.assertEqual(hidden_element.is_displayed(), False, + 'downloads directory path valid but treated as invalid') def test_set_sstate_dir(self): """ @@ -217,53 +219,57 @@ class TestProjectConfig(SeleniumFunctionalTestCase): self._navigate_bbv_page() try: - self.wait_until_visible('#change-sstate_dir-icon', poll=2) + btn_chg_sstate_dir = self.wait_until_visible( + '#change-sstate_dir-icon', + poll=2 + ) self.click('#change-sstate_dir-icon') except TimeoutException: # If sstate_dir is not displayed, test is skipped - return True - - # path doesn't start with / or ${...} - input_field = self.wait_until_visible('#new-sstate_dir', poll=2) - input_field.clear() - self.enter_text('#new-sstate_dir', 'home/foo') - element = self.wait_until_visible('#hintError-initialChar-sstate_dir', poll=2) - - msg = 'sstate directory path starts with invalid character but ' \ - 'treated as valid' - self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) - - # path has a space - self.driver.find_element(By.ID, 'new-sstate_dir').clear() - self.enter_text('#new-sstate_dir', '/foo/bar a') - - element = self.wait_until_visible('#hintError-sstate_dir', poll=2) - msg = 'sstate directory path characters invalid but treated as valid' - self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) - - # path starts with ${...} but has a space - self.driver.find_element(By.ID,'new-sstate_dir').clear() - self.enter_text('#new-sstate_dir', '${TOPDIR}/down foo') - - element = self.wait_until_visible('#hintError-sstate_dir', poll=2) - msg = 'sstate directory path characters invalid but treated as valid' - self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) - - # path starts with / - self.driver.find_element(By.ID,'new-sstate_dir').clear() - self.enter_text('#new-sstate_dir', '/bar/foo') - - hidden_element = self.driver.find_element(By.ID, 'hintError-sstate_dir') - self.assertEqual(hidden_element.is_displayed(), False, - 'sstate directory path valid but treated as invalid') - - # paths starts with ${...} - self.driver.find_element(By.ID, 'new-sstate_dir').clear() - self.enter_text('#new-sstate_dir', '${TOPDIR}/down') - - hidden_element = self.driver.find_element(By.ID, 'hintError-sstate_dir') - self.assertEqual(hidden_element.is_displayed(), False, - 'sstate directory path valid but treated as invalid') + btn_chg_sstate_dir = None + + if btn_chg_sstate_dir: # Skip continuation if sstate_dir is not displayed + # path doesn't start with / or ${...} + input_field = self.wait_until_visible('#new-sstate_dir', poll=2) + input_field.clear() + self.enter_text('#new-sstate_dir', 'home/foo') + element = self.wait_until_visible('#hintError-initialChar-sstate_dir', poll=2) + + msg = 'sstate directory path starts with invalid character but ' \ + 'treated as valid' + self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) + + # path has a space + self.driver.find_element(By.ID, 'new-sstate_dir').clear() + self.enter_text('#new-sstate_dir', '/foo/bar a') + + element = self.wait_until_visible('#hintError-sstate_dir', poll=2) + msg = 'sstate directory path characters invalid but treated as valid' + self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) + + # path starts with ${...} but has a space + self.driver.find_element(By.ID,'new-sstate_dir').clear() + self.enter_text('#new-sstate_dir', '${TOPDIR}/down foo') + + element = self.wait_until_visible('#hintError-sstate_dir', poll=2) + msg = 'sstate directory path characters invalid but treated as valid' + self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) + + # path starts with / + self.driver.find_element(By.ID,'new-sstate_dir').clear() + self.enter_text('#new-sstate_dir', '/bar/foo') + + hidden_element = self.driver.find_element(By.ID, 'hintError-sstate_dir') + self.assertEqual(hidden_element.is_displayed(), False, + 'sstate directory path valid but treated as invalid') + + # paths starts with ${...} + self.driver.find_element(By.ID, 'new-sstate_dir').clear() + self.enter_text('#new-sstate_dir', '${TOPDIR}/down') + + hidden_element = self.driver.find_element(By.ID, 'hintError-sstate_dir') + self.assertEqual(hidden_element.is_displayed(), False, + 'sstate directory path valid but treated as invalid') def _change_bbv_value(self, **kwargs): var_name, field, btn_id, input_id, value, save_btn, *_ = kwargs.values()