Message ID | 20231121134729.95095-1-alassane.yattara@savoirfairelinux.com |
---|---|
State | New |
Headers | show |
Series | [1/3] Toaster: Toaster: Write UI TestCase -> Visualize all projects | expand |
Hi Alassane, On Tue, 2023-11-21 at 14:47 +0100, Alassane Yattara wrote: > > @@ -205,3 +218,24 @@ class TestAllProjectsPage(SeleniumTestCase): > expected_url = reverse('project', args=(self.project.id,)) > msg = 'link on project name should point to configuration but was %s' % link_url > self.assertTrue(link_url.endswith(expected_url), msg) > + > + def test_allProject_table_search_box(self): > + """ Test the search box in the all project table on the all projects page """ > + self._create_projects() > + > + url = reverse('all-projects') > + self.get(url) > + > + # Chseck search box is present and works > + self.wait_until_present('#projectstable tbody tr') > + search_box = self.find('#search-input-projectstable') > + self.assertTrue(search_box.is_displayed()) > + > + # Check that we can search for a project by project name > + search_box.send_keys('test project 10') > + search_btn = self.find('#search-submit-projectstable') > + search_btn.click() > + self.wait_until_present('#projectstable tbody tr') > + time.sleep(1) > + rows = self.find_all('#projectstable tbody tr') > + self.assertTrue(len(rows) == 1) I've merged these with some tweaks to the commit messages, basically changing "Toaster:" to "toaster/tests:" and "->" to "-" to make things more consistent with our other commits. The time.sleep() calls in these tests worry me a bit as the values are a little arbitrary. I noticed one does have to increase the timeout depending on how much work is being done. Does the test framework not have a better way to handle this such as a settle function or something similar? I'm thinking this could be fixed in a follow up commit. Cheers, Richard
diff --git a/lib/toaster/tests/browser/test_all_projects_page.py b/lib/toaster/tests/browser/test_all_projects_page.py index 3389d323..db25e723 100644 --- a/lib/toaster/tests/browser/test_all_projects_page.py +++ b/lib/toaster/tests/browser/test_all_projects_page.py @@ -8,9 +8,11 @@ # import re +import time from django.urls import reverse from django.utils import timezone +from selenium.webdriver.support.select import Select from tests.browser.selenium_helpers import SeleniumTestCase from orm.models import BitbakeVersion, Release, Project, Build @@ -37,6 +39,17 @@ class TestAllProjectsPage(SeleniumTestCase): self.release = None + def _create_projects(self, nb_project=10): + projects = [] + for i in range(1, nb_project + 1): + projects.append( + Project( + name='test project {}'.format(i), + release=self.release, + ) + ) + Project.objects.bulk_create(projects) + def _add_build_to_default_project(self): """ Add a build to the default project (not used in all tests) """ now = timezone.now() @@ -205,3 +218,24 @@ class TestAllProjectsPage(SeleniumTestCase): expected_url = reverse('project', args=(self.project.id,)) msg = 'link on project name should point to configuration but was %s' % link_url self.assertTrue(link_url.endswith(expected_url), msg) + + def test_allProject_table_search_box(self): + """ Test the search box in the all project table on the all projects page """ + self._create_projects() + + url = reverse('all-projects') + self.get(url) + + # Chseck search box is present and works + self.wait_until_present('#projectstable tbody tr') + search_box = self.find('#search-input-projectstable') + self.assertTrue(search_box.is_displayed()) + + # Check that we can search for a project by project name + search_box.send_keys('test project 10') + search_btn = self.find('#search-submit-projectstable') + search_btn.click() + self.wait_until_present('#projectstable tbody tr') + time.sleep(1) + rows = self.find_all('#projectstable tbody tr') + self.assertTrue(len(rows) == 1)
Test the search box in the all project table on the all projects page Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com> --- .../tests/browser/test_all_projects_page.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+)