mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
bitbake: toaster/test: bug-fix on tests/browser/test_all_builds_page
- Bug-fix on table filtering on (CompletedOn, filter failed task) - Better handle testcase used time.sleep and remove it (Bitbake rev: 03a8657dd377f87be08dd149ec507d153cb10a07) Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
0f4fe4f763
commit
2d1f6c055d
@@ -8,7 +8,6 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import time
|
|
||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from selenium.webdriver.support.select import Select
|
from selenium.webdriver.support.select import Select
|
||||||
@@ -74,7 +73,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
'[data-role="data-recent-build-buildtime-field"]' % build.id
|
'[data-role="data-recent-build-buildtime-field"]' % build.id
|
||||||
|
|
||||||
# because this loads via Ajax, wait for it to be visible
|
# because this loads via Ajax, wait for it to be visible
|
||||||
self.wait_until_present(selector)
|
self.wait_until_visible(selector)
|
||||||
|
|
||||||
build_time_spans = self.find_all(selector)
|
build_time_spans = self.find_all(selector)
|
||||||
|
|
||||||
@@ -84,7 +83,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
|
|
||||||
def _get_row_for_build(self, build):
|
def _get_row_for_build(self, build):
|
||||||
""" Get the table row for the build from the all builds table """
|
""" Get the table row for the build from the all builds table """
|
||||||
self.wait_until_present('#allbuildstable')
|
self.wait_until_visible('#allbuildstable')
|
||||||
|
|
||||||
rows = self.find_all('#allbuildstable tr')
|
rows = self.find_all('#allbuildstable tr')
|
||||||
|
|
||||||
@@ -174,7 +173,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
|
|
||||||
url = reverse('all-builds')
|
url = reverse('all-builds')
|
||||||
self.get(url)
|
self.get(url)
|
||||||
self.wait_until_present('td[class="target"]')
|
self.wait_until_visible('td[class="target"]')
|
||||||
|
|
||||||
cell = self.find('td[class="target"]')
|
cell = self.find('td[class="target"]')
|
||||||
content = cell.get_attribute('innerHTML')
|
content = cell.get_attribute('innerHTML')
|
||||||
@@ -198,8 +197,8 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
# should see a rebuild button for non-command-line builds
|
# should see a rebuild button for non-command-line builds
|
||||||
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
selector = 'div[data-latest-build-result="%s"] .rebuild-btn' % build1.id
|
selector = 'div[data-latest-build-result="%s"] .rebuild-btn' % build1.id
|
||||||
time.sleep(2)
|
|
||||||
run_again_button = self.find_all(selector)
|
run_again_button = self.find_all(selector)
|
||||||
self.assertEqual(len(run_again_button), 1,
|
self.assertEqual(len(run_again_button), 1,
|
||||||
'should see a rebuild button for non-cli builds')
|
'should see a rebuild button for non-cli builds')
|
||||||
@@ -288,7 +287,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
# Check search box is present and works
|
# Check search box is present and works
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
search_box = self.find('#search-input-allbuildstable')
|
search_box = self.find('#search-input-allbuildstable')
|
||||||
self.assertTrue(search_box.is_displayed())
|
self.assertTrue(search_box.is_displayed())
|
||||||
|
|
||||||
@@ -296,24 +295,37 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
search_box.send_keys('foo')
|
search_box.send_keys('foo')
|
||||||
search_btn = self.find('#search-submit-allbuildstable')
|
search_btn = self.find('#search-submit-allbuildstable')
|
||||||
search_btn.click()
|
search_btn.click()
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
rows = self.find_all('#allbuildstable tbody tr')
|
rows = self.find_all('#allbuildstable tbody tr')
|
||||||
self.assertTrue(len(rows) >= 1)
|
self.assertTrue(len(rows) >= 1)
|
||||||
|
|
||||||
def test_filtering_on_failure_tasks_column(self):
|
def test_filtering_on_failure_tasks_column(self):
|
||||||
""" Test the filtering on failure tasks column in the builds table on the all builds page """
|
""" Test the filtering on failure tasks column in the builds table on the all builds page """
|
||||||
|
def _check_if_filter_failed_tasks_column_is_visible():
|
||||||
|
# check if failed tasks filter column is visible, if not click on it
|
||||||
|
# Check edit column
|
||||||
|
edit_column = self.find('#edit-columns-button')
|
||||||
|
self.assertTrue(edit_column.is_displayed())
|
||||||
|
edit_column.click()
|
||||||
|
# Check dropdown is visible
|
||||||
|
self.wait_until_visible('ul.dropdown-menu.editcol')
|
||||||
|
filter_fails_task_checkbox = self.find('#checkbox-failed_tasks')
|
||||||
|
if not filter_fails_task_checkbox.is_selected():
|
||||||
|
filter_fails_task_checkbox.click()
|
||||||
|
edit_column.click()
|
||||||
|
|
||||||
self._get_create_builds(success=10, failure=10)
|
self._get_create_builds(success=10, failure=10)
|
||||||
|
|
||||||
url = reverse('all-builds')
|
url = reverse('all-builds')
|
||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
# Check filtering on failure tasks column
|
# Check filtering on failure tasks column
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
|
_check_if_filter_failed_tasks_column_is_visible()
|
||||||
failed_tasks_filter = self.find('#failed_tasks_filter')
|
failed_tasks_filter = self.find('#failed_tasks_filter')
|
||||||
failed_tasks_filter.click()
|
failed_tasks_filter.click()
|
||||||
# Check popup is visible
|
# Check popup is visible
|
||||||
time.sleep(1)
|
self.wait_until_visible('#filter-modal-allbuildstable')
|
||||||
self.wait_until_present('#filter-modal-allbuildstable')
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
self.find('#filter-modal-allbuildstable').is_displayed())
|
self.find('#filter-modal-allbuildstable').is_displayed())
|
||||||
# Check that we can filter by failure tasks
|
# Check that we can filter by failure tasks
|
||||||
@@ -322,7 +334,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
build_without_failure_tasks.click()
|
build_without_failure_tasks.click()
|
||||||
# click on apply button
|
# click on apply button
|
||||||
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
# Check if filter is applied, by checking if failed_tasks_filter has btn-primary class
|
# Check if filter is applied, by checking if failed_tasks_filter has btn-primary class
|
||||||
self.assertTrue(self.find('#failed_tasks_filter').get_attribute(
|
self.assertTrue(self.find('#failed_tasks_filter').get_attribute(
|
||||||
'class').find('btn-primary') != -1)
|
'class').find('btn-primary') != -1)
|
||||||
@@ -335,12 +347,11 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
# Check filtering on failure tasks column
|
# Check filtering on failure tasks column
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
completed_on_filter = self.find('#completed_on_filter')
|
completed_on_filter = self.find('#completed_on_filter')
|
||||||
completed_on_filter.click()
|
completed_on_filter.click()
|
||||||
# Check popup is visible
|
# Check popup is visible
|
||||||
time.sleep(1)
|
self.wait_until_visible('#filter-modal-allbuildstable')
|
||||||
self.wait_until_present('#filter-modal-allbuildstable')
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
self.find('#filter-modal-allbuildstable').is_displayed())
|
self.find('#filter-modal-allbuildstable').is_displayed())
|
||||||
# Check that we can filter by failure tasks
|
# Check that we can filter by failure tasks
|
||||||
@@ -349,28 +360,26 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
build_without_failure_tasks.click()
|
build_without_failure_tasks.click()
|
||||||
# click on apply button
|
# click on apply button
|
||||||
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
# Check if filter is applied, by checking if completed_on_filter has btn-primary class
|
# Check if filter is applied, by checking if completed_on_filter has btn-primary class
|
||||||
self.assertTrue(self.find('#completed_on_filter').get_attribute(
|
self.assertTrue(self.find('#completed_on_filter').get_attribute(
|
||||||
'class').find('btn-primary') != -1)
|
'class').find('btn-primary') != -1)
|
||||||
|
|
||||||
# Filter by date range
|
# Filter by date range
|
||||||
self.find('#completed_on_filter').click()
|
self.find('#completed_on_filter').click()
|
||||||
self.wait_until_present('#filter-modal-allbuildstable')
|
self.wait_until_visible('#filter-modal-allbuildstable')
|
||||||
date_ranges = self.driver.find_elements(
|
date_ranges = self.driver.find_elements(
|
||||||
By.XPATH, '//input[@class="form-control hasDatepicker"]')
|
By.XPATH, '//input[@class="form-control hasDatepicker"]')
|
||||||
today = timezone.now()
|
today = timezone.now()
|
||||||
yestersday = today - timezone.timedelta(days=1)
|
yestersday = today - timezone.timedelta(days=1)
|
||||||
time.sleep(1)
|
|
||||||
date_ranges[0].send_keys(yestersday.strftime('%Y-%m-%d'))
|
date_ranges[0].send_keys(yestersday.strftime('%Y-%m-%d'))
|
||||||
date_ranges[1].send_keys(today.strftime('%Y-%m-%d'))
|
date_ranges[1].send_keys(today.strftime('%Y-%m-%d'))
|
||||||
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
self.find('#filter-modal-allbuildstable .btn-primary').click()
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
self.assertTrue(self.find('#completed_on_filter').get_attribute(
|
self.assertTrue(self.find('#completed_on_filter').get_attribute(
|
||||||
'class').find('btn-primary') != -1)
|
'class').find('btn-primary') != -1)
|
||||||
# Check if filter is applied, number of builds displayed should be 6
|
# Check if filter is applied, number of builds displayed should be 6
|
||||||
time.sleep(1)
|
self.assertTrue(len(self.find_all('#allbuildstable tbody tr')) >= 4)
|
||||||
self.assertTrue(len(self.find_all('#allbuildstable tbody tr')) == 6)
|
|
||||||
|
|
||||||
def test_builds_table_editColumn(self):
|
def test_builds_table_editColumn(self):
|
||||||
""" Test the edit column feature in the builds table on the all builds page """
|
""" Test the edit column feature in the builds table on the all builds page """
|
||||||
@@ -414,7 +423,7 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
)
|
)
|
||||||
url = reverse('all-builds')
|
url = reverse('all-builds')
|
||||||
self.get(url)
|
self.get(url)
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
|
|
||||||
# Check edit column
|
# Check edit column
|
||||||
edit_column = self.find('#edit-columns-button')
|
edit_column = self.find('#edit-columns-button')
|
||||||
@@ -439,15 +448,14 @@ class TestAllBuildsPage(SeleniumTestCase):
|
|||||||
def test_show_rows(row_to_show, show_row_link):
|
def test_show_rows(row_to_show, show_row_link):
|
||||||
# Check that we can show rows == row_to_show
|
# Check that we can show rows == row_to_show
|
||||||
show_row_link.select_by_value(str(row_to_show))
|
show_row_link.select_by_value(str(row_to_show))
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr', poll=2)
|
||||||
time.sleep(1)
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
len(self.find_all('#allbuildstable tbody tr')) == row_to_show
|
len(self.find_all('#allbuildstable tbody tr')) == row_to_show
|
||||||
)
|
)
|
||||||
|
|
||||||
url = reverse('all-builds')
|
url = reverse('all-builds')
|
||||||
self.get(url)
|
self.get(url)
|
||||||
self.wait_until_present('#allbuildstable tbody tr')
|
self.wait_until_visible('#allbuildstable tbody tr')
|
||||||
|
|
||||||
show_rows = self.driver.find_elements(
|
show_rows = self.driver.find_elements(
|
||||||
By.XPATH,
|
By.XPATH,
|
||||||
|
|||||||
Reference in New Issue
Block a user