All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
Cc: bitbake-devel@lists.openembedded.org
Subject: Re: [bitbake-devel] [PATCH v3 1/3] Toaster: Write UI TestCase create new project
Date: Fri, 10 Nov 2023 09:09:43 +0100	[thread overview]
Message-ID: <20231110080943ba6dd2d1@mail.local> (raw)
In-Reply-To: <20231109221517.110357-1-alassane.yattara@savoirfairelinux.com>

Hello Alassane,

On 09/11/2023 23:15:15+0100, Alassane Yattara wrote:
> Test create new project using:
> - Project Name: Any string
> - Release: Master/Kirkstone/Dunfell/Local
> - Merge Toaster settings: False/True
> 
> Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
> ---

Please include a changelog here. At least, explain why you are sending
multiple versions of the series on the same day, this would make the
maintainers job easier.

Thanks!

>  .../functional/test_create_new_project.py     | 134 ++++++++++++++++++
>  1 file changed, 134 insertions(+)
>  create mode 100644 lib/toaster/tests/functional/test_create_new_project.py
> 
> diff --git a/lib/toaster/tests/functional/test_create_new_project.py b/lib/toaster/tests/functional/test_create_new_project.py
> new file mode 100644
> index 00000000..81355eaf
> --- /dev/null
> +++ b/lib/toaster/tests/functional/test_create_new_project.py
> @@ -0,0 +1,134 @@
> +#! /usr/bin/env python3 #
> +# BitBake Toaster UI tests implementation
> +#
> +# Copyright (C) 2023 Savoir-faire Linux
> +#
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +
> +import re
> +import pytest
> +from django.urls import reverse
> +from selenium.webdriver.support.ui import Select
> +from tests.functional.functional_helpers import SeleniumFunctionalTestCase
> +from orm.models import Project
> +from selenium.webdriver.common.by import By
> +
> +@pytest.mark.django_db
> +class TestCreateNewProject(SeleniumFunctionalTestCase):
> +
> +    def _create_test_new_project(
> +        self,
> +        project_name,
> +        release,
> +        release_title,
> +        merge_toaster_settings,
> +    ):
> +        """ Create/Test new project using:
> +          - Project Name: Any string
> +          - Release: Any string
> +          - Merge Toaster settings: True or False
> +        """
> +        self.get(reverse('newproject'))
> +        self.driver.find_element(By.ID,
> +                                 "new-project-name").send_keys(project_name)
> +
> +        select = Select(self.find('#projectversion'))
> +        select.select_by_value(release)
> +
> +        # check merge toaster settings
> +        checkbox = self.find('.checkbox-mergeattr')
> +        if merge_toaster_settings:
> +            if not checkbox.is_selected():
> +                checkbox.click()
> +        else:
> +            if checkbox.is_selected():
> +                checkbox.click()
> +
> +        self.driver.find_element(By.ID, "create-project-button").click()
> +
> +        element = self.wait_until_visible('#project-created-notification')
> +        self.assertTrue(
> +            self.element_exists('#project-created-notification'), 
> +            f"Project:{project_name} creation notification not shown"
> +        )
> +        self.assertTrue(
> +            project_name in element.text,
> +            f"New project name:{project_name} not in new project notification"
> +        )
> +        self.assertTrue(
> +            Project.objects.filter(name=project_name).count(), 
> +            f"New project:{project_name} not found in database"
> +        )
> +
> +        # check release
> +        self.assertTrue(re.search(
> +            release_title,
> +            self.driver.find_element(By.XPATH,
> +                                     "//span[@id='project-release-title']"
> +                                     ).text),
> +                        'The project release is not defined')
> +
> +    def test_create_new_project_master(self):
> +        """ Test create new project using:
> +          - Project Name: Any string
> +          - Release: Yocto Project master (option value: 3)
> +          - Merge Toaster settings: False
> +        """
> +        release = '3'
> +        release_title = 'Yocto Project master'
> +        project_name = 'projectmaster'
> +        self._create_test_new_project(
> +            project_name,
> +            release,
> +            release_title,
> +            False,
> +        )
> +
> +    def test_create_new_project_kirkstone(self):
> +        """ Test create new project using:
> +          - Project Name: Any string
> +          - Release: Yocto Project 4.0 "Kirkstone" (option value: 1)
> +          - Merge Toaster settings: True
> +        """
> +        release = '1'
> +        release_title = 'Yocto Project 4.0 "Kirkstone"'
> +        project_name = 'projectkirkstone'
> +        self._create_test_new_project(
> +            project_name,
> +            release,
> +            release_title,
> +            True,
> +        )
> +
> +    def test_create_new_project_dunfull(self):
> +        """ Test create new project using:
> +          - Project Name: Any string
> +          - Release: Yocto Project 3.1 "Dunfell" (option value: 5)
> +          - Merge Toaster settings: False
> +        """
> +        release = '5'
> +        release_title = 'Yocto Project 3.1 "Dunfell"'
> +        project_name = 'projectdunfull'
> +        self._create_test_new_project(
> +            project_name,
> +            release,
> +            release_title,
> +            False,
> +        )
> +    
> +    def test_create_new_project_local(self):
> +        """ Test create new project using:
> +          - Project Name: Any string
> +          - Release: Local Yocto Project (option value: 2)
> +          - Merge Toaster settings: True
> +        """
> +        release = '2'
> +        release_title = 'Local Yocto Project'
> +        project_name = 'projectlocal'
> +        self._create_test_new_project(
> +            project_name,
> +            release,
> +            release_title,
> +            True,
> +        )
> -- 
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#15487): https://lists.openembedded.org/g/bitbake-devel/message/15487
> Mute This Topic: https://lists.openembedded.org/mt/102496102/3617179
> Group Owner: bitbake-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  parent reply	other threads:[~2023-11-10  8:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-09 22:15 [PATCH v3 1/3] Toaster: Write UI TestCase create new project Alassane Yattara
2023-11-09 22:15 ` [PATCH v3 2/3] Toaster: Test create new project without project name Alassane Yattara
2023-11-09 22:15 ` [PATCH v3 3/3] Toaster: Write UI TestCase import new project using Alassane Yattara
2023-11-10  8:09 ` Alexandre Belloni [this message]
2023-11-10 13:34   ` [bitbake-devel] [PATCH v3 1/3] Toaster: Write UI TestCase create new project Alassane Yattara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231110080943ba6dd2d1@mail.local \
    --to=alexandre.belloni@bootlin.com \
    --cc=alassane.yattara@savoirfairelinux.com \
    --cc=bitbake-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.