Skip to content

Commit 415a57d

Browse files
committed
Improve automated visual testing
1 parent d247608 commit 415a57d

File tree

1 file changed

+45
-14
lines changed

1 file changed

+45
-14
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3482,6 +3482,36 @@ def wait_for_and_switch_to_alert(self, timeout=None):
34823482

34833483
############
34843484

3485+
def __assert_eq(self, *args, **kwargs):
3486+
""" Minified assert_equal() using only the list diff. """
3487+
minified_exception = None
3488+
try:
3489+
self.assertEqual(*args, **kwargs)
3490+
except Exception as e:
3491+
str_e = str(e)
3492+
minified_exception = "\nAssertionError:\n"
3493+
lines = str_e.split('\n')
3494+
countdown = 3
3495+
countdown_on = False
3496+
for line in lines:
3497+
if countdown_on:
3498+
minified_exception += line + '\n'
3499+
countdown = countdown - 1
3500+
if countdown == 0:
3501+
countdown_on = False
3502+
elif line.startswith('F'):
3503+
countdown_on = True
3504+
countdown = 3
3505+
minified_exception += line + '\n'
3506+
elif line.startswith('+') or line.startswith('-'):
3507+
minified_exception += line + '\n'
3508+
elif line.startswith('?'):
3509+
minified_exception += line + '\n'
3510+
elif line.strip().startswith('*'):
3511+
minified_exception += line + '\n'
3512+
if minified_exception:
3513+
raise Exception(minified_exception)
3514+
34853515
def check_window(self, name="default", level=0, baseline=False):
34863516
""" *** Automated Visual Testing with SeleniumBase ***
34873517
@@ -3644,40 +3674,41 @@ def check_window(self, name="default", level=0, baseline=False):
36443674
f.close()
36453675

36463676
domain_fail = (
3647-
"Page Domain Mismatch Failure: "
3677+
"\nPage Domain Mismatch Failure: "
36483678
"Current Page Domain doesn't match the Page Domain of the "
36493679
"Baseline! Can't compare two completely different sites! "
36503680
"Run with --visual_baseline to reset the baseline!")
36513681
level_1_failure = (
3652-
"\n\n*** Exception: <Level 1> Visual Diff Failure:\n"
3682+
"\n*\n*** Exception: <Level 1> Visual Diff Failure:\n"
36533683
"* HTML tags don't match the baseline!")
36543684
level_2_failure = (
3655-
"\n\n*** Exception: <Level 2> Visual Diff Failure:\n"
3656-
"* HTML tag attributes don't match the baseline!")
3685+
"\n*\n*** Exception: <Level 2> Visual Diff Failure:\n"
3686+
"* HTML tag attribute names don't match the baseline!")
36573687
level_3_failure = (
3658-
"\n\n*** Exception: <Level 3> Visual Diff Failure:\n"
3688+
"\n*\n*** Exception: <Level 3> Visual Diff Failure:\n"
36593689
"* HTML tag attribute values don't match the baseline!")
36603690

36613691
page_domain = self.get_domain_url(page_url)
36623692
page_data_domain = self.get_domain_url(page_url_data)
36633693
unittest.TestCase.maxDiff = 1000
3664-
if level == 1 or level == 2 or level == 3:
3665-
self.assertEqual(page_domain, page_data_domain, domain_fail)
3666-
self.assertEqual(level_1, level_1_data, level_1_failure)
3694+
if level != 0:
3695+
self.assertEqual(page_data_domain, page_domain, domain_fail)
36673696
unittest.TestCase.maxDiff = None
3668-
if level == 2 or level == 3:
3669-
self.assertEqual(level_2, level_2_data, level_2_failure)
36703697
if level == 3:
3671-
self.assertEqual(level_3, level_3_data, level_3_failure)
3698+
self.__assert_eq(level_3_data, level_3, level_3_failure)
3699+
if level == 2:
3700+
self.__assert_eq(level_2_data, level_2, level_2_failure)
3701+
unittest.TestCase.maxDiff = 1000
3702+
if level == 1:
3703+
self.__assert_eq(level_1_data, level_1, level_1_failure)
3704+
unittest.TestCase.maxDiff = None
36723705
if level == 0:
36733706
try:
36743707
unittest.TestCase.maxDiff = 1000
36753708
self.assertEqual(
36763709
page_domain, page_data_domain, domain_fail)
3677-
self.assertEqual(level_1, level_1_data, level_1_failure)
36783710
unittest.TestCase.maxDiff = None
3679-
self.assertEqual(level_2, level_2_data, level_2_failure)
3680-
self.assertEqual(level_3, level_3_data, level_3_failure)
3711+
self.__assert_eq(level_3_data, level_3, level_3_failure)
36813712
except Exception as e:
36823713
print(e) # Level-0 Dry Run (Only print the differences)
36833714

0 commit comments

Comments
 (0)