diff --git a/seleniumbase/behave/behave_sb.py b/seleniumbase/behave/behave_sb.py
index b8ff1f3a..522eccd6 100644
--- a/seleniumbase/behave/behave_sb.py
+++ b/seleniumbase/behave/behave_sb.py
@@ -989,7 +989,7 @@ def dashboard_pre_processing():
def _create_dashboard_assets_():
import codecs
from seleniumbase.js_code.live_js import live_js
- from seleniumbase.core.style_sheet import pytest_style
+ from seleniumbase.core.style_sheet import get_pytest_style
abs_path = os.path.abspath(".")
assets_folder = os.path.join(abs_path, "assets")
@@ -1001,11 +1001,11 @@ def _create_dashboard_assets_():
existing_pytest_style = None
with open(pytest_style_css, "r") as f:
existing_pytest_style = f.read()
- if existing_pytest_style == pytest_style:
+ if existing_pytest_style == get_pytest_style():
add_pytest_style_css = False
if add_pytest_style_css:
out_file = codecs.open(pytest_style_css, "w+", encoding="utf-8")
- out_file.writelines(pytest_style)
+ out_file.writelines(get_pytest_style())
out_file.close()
live_js_file = os.path.join(assets_folder, "live.js")
add_live_js_file = True
@@ -1082,8 +1082,8 @@ def _perform_behave_unconfigure_():
)
find_it_3 = '
Untested | '
swap_with_3 = 'Unreported | '
- find_it_4 = 'href="%s"' % constants.Dashboard.DASH_PIE_PNG_1
- swap_with_4 = 'href="%s"' % constants.Dashboard.DASH_PIE_PNG_2
+ find_it_4 = 'href="%s"' % constants.Dashboard.get_dash_pie_1()
+ swap_with_4 = 'href="%s"' % constants.Dashboard.get_dash_pie_2()
try:
abs_path = os.path.abspath(".")
dashboard_path = os.path.join(abs_path, "dashboard.html")
diff --git a/seleniumbase/core/encoded_images.py b/seleniumbase/core/encoded_images.py
index e6b82cc6..8df2d597 100755
--- a/seleniumbase/core/encoded_images.py
+++ b/seleniumbase/core/encoded_images.py
@@ -3,146 +3,174 @@
> with open("YOUR_FILE.png", "rb") as image_file:
> encoded_string = base64.b64encode(image_file.read())
"""
-DASH_PIE_PNG_1 = (
- "data:image/gif;base64,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"
-)
-DASH_PIE_PNG_2 = (
- "data:image/gif;base64,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"
-)
-DASH_PIE_PNG_3 = (
- "data:image/gif;base64,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"
-)
-REPORT_FAVICON = (
- "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXN"
- "SR0IArs4c6QAAAM9JREFUKBVjnNS8goEUwESKYpBaFiD+z/hTJz2EoM4rM9cw/mcHaYCA2Nl3"
- "YUwEvTBFkZGREchnBEIwAGv4z/6f4T8DWAIk+P8/RA6ZBCkAA4QNi1IUkVVgYf9nBwpCNTiLc"
- "GNRgSp0FcxF2CC3RhVVAcOjkNtAEYg4hA3kIjRAPYWmCeRdFIDQ8BBsHookmIMmDtXw5s0bTK"
- "VoIhCrQBogLHaPUGQVP7avgnA5PMOAjJ87VkO4ZCUNiFa4GRAu3K9o4lA/LJ+xF6KOIEmykwB"
- "QHy74EMZM3QAAAABJRU5ErkJggg=="
-)
-SIDE_BY_SIDE_PNG = (
- "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXN"
- "SR0IArs4c6QAAAIVJREFUKBVjvPLvPwMpgIkUxSC1LBANOo0oGq/Ug7hYBUm2gWQNjBBPa/1l"
- "RHbTNWZQSGAVhPqBaRWyeoYrkSAuozaKIMMNEJdkJ5GsAeqkf2Eotl8D8/5fRRGEcGB+aEGJb"
- "0g8MGEVxGIIXiFy/eC8CuJsmOH1WkAWVkFoxMEUEqZJdhIAo3Aj/iHmzlMAAAAASUVORK5CYI"
- "I="
-)
+
+
+def get_dash_pie_png1():
+ DASH_PIE_PNG_1 = (
+ "data:image/gif;base64,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"
+ )
+ return DASH_PIE_PNG_1
+
+
+def get_dash_pie_png2():
+ DASH_PIE_PNG_2 = (
+ "data:image/gif;base64,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"
+ "12Tf/wU491oPtPXjKQAAAABJRU5ErkJggg=="
+ )
+ return DASH_PIE_PNG_2
+
+
+def get_dash_pie_png3():
+ DASH_PIE_PNG_3 = (
+ "data:image/gif;base64,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"
+ "FCCAAAAAElFTkSuQmCC"
+ )
+ return DASH_PIE_PNG_3
+
+
+def get_report_favicon():
+ REPORT_FAVICON = (
+ "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAA"
+ "AAXNSR0IArs4c6QAAAM9JREFUKBVjnNS8goEUwESKYpBaFiD+z/hTJz2EoM4rM9cw/mcH"
+ "aYCA2Nl3YUwEvTBFkZGREchnBEIwAGv4z/6f4T8DWAIk+P8/RA6ZBCkAA4QNi1IUkVVgY"
+ "f9nBwpCNTiLcGNRgSp0FcxF2CC3RhVVAcOjkNtAEYg4hA3kIjRAPYWmCeRdFIDQ8BBsHo"
+ "okmIMmDtXw5s0bTKVoIhCrQBogLHaPUGQVP7avgnA5PMOAjJ87VkO4ZCUNiFa4GRAu3K9"
+ "o4lA/LJ+xF6KOIEmykwBQHy74EMZM3QAAAABJRU5ErkJggg=="
+ )
+ return REPORT_FAVICON
+
+
+def get_side_by_side_png():
+ SIDE_BY_SIDE_PNG = (
+ "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAA"
+ "AAXNSR0IArs4c6QAAAIVJREFUKBVjvPLvPwMpgIkUxSC1LBANOo0oGq/Ug7hYBUm2gWQN"
+ "jBBPa/1lRHbTNWZQSGAVhPqBaRWyeoYrkSAuozaKIMMNEJdkJ5GsAeqkf2Eotl8D8/5fR"
+ "RGEcGB+aEGJb0g8MGEVxGIIXiFy/eC8CuJsmOH1WkAWVkFoxMEUEqZJdhIAo3Aj/iHmzl"
+ "MAAAAASUVORK5CYII="
+ )
+ return SIDE_BY_SIDE_PNG
diff --git a/seleniumbase/core/report_helper.py b/seleniumbase/core/report_helper.py
index bde7b371..a0fd2ecb 100755
--- a/seleniumbase/core/report_helper.py
+++ b/seleniumbase/core/report_helper.py
@@ -5,7 +5,7 @@ import sys
import time
from seleniumbase import config as sb_config
from seleniumbase.config import settings
-from seleniumbase.core.style_sheet import style
+from seleniumbase.core.style_sheet import get_report_style
LATEST_REPORT_DIR = settings.LATEST_REPORT_DIR
ARCHIVE_DIR = settings.REPORT_ARCHIVE_DIR
@@ -292,7 +292,7 @@ def build_report(
passing_list,
)
report_html = "%s%s" % (
- style,
+ get_report_style(),
table_view,
)
results_file = add_results_page(report_html)
diff --git a/seleniumbase/core/style_sheet.py b/seleniumbase/core/style_sheet.py
index b3d41cfb..57a69c97 100755
--- a/seleniumbase/core/style_sheet.py
+++ b/seleniumbase/core/style_sheet.py
@@ -1,336 +1,391 @@
from seleniumbase.fixtures import constants
-title = """
- Test Report
- """ % constants.Report.FAVICON
-style = (
- title
- + """"""
-)
+class Saved:
+ # Storing data to prevent extra loading
+ pass
-# Bootstrap Tour Backdrop Style
-bt_backdrop_style = """
- .tour-tour-element {
- pointer-events: none !important;
- }
- :not(.tour-tour-element) .orphan.tour-tour {
- box-shadow: 0 0 0 88422px rgba(0, 0, 0, 0.42);
- pointer-events: auto !important;
- }
+
+def get_report_style():
+ if hasattr(Saved, "report_style"):
+ return Saved.report_style
+ title = """
+ Test Report
+ """ % constants.Report.get_favicon()
+
+ style = (
+ title
+ + """"""
+ )
+ Saved.report_style = style
+ return style
+
+
+def get_bt_backdrop_style():
+ # Bootstrap Tour Backdrop Style
+ if hasattr(Saved, "bt_backdrop_style"):
+ return Saved.bt_backdrop_style
+ bt_backdrop_style = """
+ .tour-tour-element {
+ pointer-events: none !important;
+ }
+ :not(.tour-tour-element) .orphan.tour-tour {
+ box-shadow: 0 0 0 88422px rgba(0, 0, 0, 0.42);
+ pointer-events: auto !important;
+ }
+ """
+ Saved.bt_backdrop_style = bt_backdrop_style
+ return bt_backdrop_style
+
+
+def get_dt_backdrop_style():
+ # DriverJS Tour Backdrop Style
+ if hasattr(Saved, "dt_backdrop_style"):
+ return Saved.dt_backdrop_style
+ dt_backdrop_style = """
+ .driver-fix-stacking {
+ pointer-events: none !important;
+ }
+ #driver-popover-item, .popover-class {
+ pointer-events: auto !important;
+ }
+ button.driver-prev-btn.driver-disabled {
+ visibility: hidden;
+ }
+ """
+ Saved.dt_backdrop_style = dt_backdrop_style
+ return dt_backdrop_style
+
+
+def get_messenger_style():
+ if hasattr(Saved, "messenger_style"):
+ return Saved.messenger_style
+ font_family = '"Proxima Nova","proxima-nova",Arial,sans-serif !important'
+ messenger_style = """
+ .messenger-message-inner {
+ font-family: %s;
+ font-size: 17px;
+ }
+ ul.messenger-theme-flat {
+ box-shadow: 2px 2px 5px 2px rgba(16, 128, 120, 0.34),
+ 2px 2px 10px 2px rgba(16, 128, 120, 0.28) !important;
+ }
+ """ % font_family
+ Saved.messenger_style = messenger_style
+ return messenger_style
+
+
+def get_sh_style_test():
+ if hasattr(Saved, "sh_style_test"):
+ return Saved.sh_style_test
+ sh_style_test = """
+ var test_tour = new Shepherd.Tour({
+ defaults: {
+ classes: 'shepherd-theme-dark',
+ scrollTo: true
+ }
+ });
+ """
+ Saved.sh_style_test = sh_style_test
+ return sh_style_test
+
+
+def get_hops_backdrop_style():
+ # Hopscotch Backdrop Style
+ if hasattr(Saved, "hops_backdrop_style"):
+ return Saved.hops_backdrop_style
+ hops_backdrop_style = """
+ .hopscotch-bubble-container {
+ font-size: 110%;
+ }
+ """
+ Saved.hops_backdrop_style = hops_backdrop_style
+ return hops_backdrop_style
+
+
+def get_introjs_style():
+ # IntroJS Style
+ if hasattr(Saved, "introjs_style"):
+ return Saved.introjs_style
+ introjs_style = """
+ .introjs-button.introjs-nextbutton,
+ .introjs-button.introjs-donebutton {
+ color: #fff !important;
+ background-color: %s !important;
+ border: 1px solid %s !important;
+ text-shadow: none;
+ box-shadow: none;
+ }
+ .introjs-button.introjs-nextbutton:hover,
+ .introjs-button.introjs-donebutton:hover {
+ color: #fff !important;
+ background-color: %s !important;
+ border: 1px solid %s !important;
+ }
+ .introjs-button {
+ box-sizing: content-box;
+ text-decoration: none;
+ }
+ .introjs-button.introjs-skipbutton {
+ color: %s;
+ }
+ .introjs-tooltip, .introjs-floating {
+ box-sizing: content-box;
+ position: absolute;
+ }
"""
+ Saved.introjs_style = introjs_style
+ return introjs_style
-# DriverJS Tour Backdrop Style
-dt_backdrop_style = """
- .driver-fix-stacking {
- pointer-events: none !important;
- }
- #driver-popover-item, .popover-class {
- pointer-events: auto !important;
- }
- button.driver-prev-btn.driver-disabled {
- visibility: hidden;
- }
- """
-messenger_style = """
- .messenger-message-inner {
- font-family: "Proxima Nova","proxima-nova",Arial,sans-serif !important;
- font-size: 17px;
- }
- ul.messenger-theme-flat {
- box-shadow: 2px 2px 5px 2px rgba(16, 128, 120, 0.34),
- 2px 2px 10px 2px rgba(16, 128, 120, 0.28) !important;
- }
- """
+def get_sh_backdrop_style():
+ # Shepherd Backdrop Style
+ if hasattr(Saved, "sh_backdrop_style"):
+ return Saved.sh_backdrop_style
+ sh_backdrop_style = """
+ body.shepherd-active .shepherd-target.shepherd-enabled {
+ box-shadow: 0 0 0 99999px rgba(0, 0, 0, 0.20);
+ pointer-events: none !important;
+ z-index: 9999;
+ }
+ body.shepherd-active .shepherd-orphan {
+ box-shadow: 0 0 0 99999px rgba(0, 0, 0, 0.20);
+ pointer-events: auto;
+ z-index: 9999;
+ }
+ body.shepherd-active
+ .shepherd-enabled.shepherd-element-attached-top {
+ position: relative;
+ }
+ body.shepherd-active
+ .shepherd-enabled.shepherd-element-attached-bottom {
+ position: relative;
+ }
+ body.shepherd-active .shepherd-step {
+ pointer-events: auto;
+ z-index: 9999;
+ }
+ body.shepherd-active {
+ pointer-events: none !important;
+ }
+ """
+ Saved.sh_backdrop_style = sh_backdrop_style
+ return sh_backdrop_style
-sh_style_test = """
- var test_tour = new Shepherd.Tour({
- defaults: {
- classes: 'shepherd-theme-dark',
- scrollTo: true
- }
- });
- """
-# Hopscotch Backdrop Style
-hops_backdrop_style = """
- .hopscotch-bubble-container {
- font-size: 110%;
- }
- """
-
-# IntroJS Style
-introjs_style = """
- .introjs-button.introjs-nextbutton,
- .introjs-button.introjs-donebutton {
- color: #fff !important;
- background-color: %s !important;
- border: 1px solid %s !important;
- text-shadow: none;
- box-shadow: none;
- }
- .introjs-button.introjs-nextbutton:hover,
- .introjs-button.introjs-donebutton:hover {
- color: #fff !important;
- background-color: %s !important;
- border: 1px solid %s !important;
- }
- .introjs-button {
- box-sizing: content-box;
- text-decoration: none;
- }
- .introjs-button.introjs-skipbutton {
- color: %s;
- }
- .introjs-tooltip, .introjs-floating {
- box-sizing: content-box;
- position: absolute;
- }
-"""
-
-# Shepherd Backdrop Style
-sh_backdrop_style = """
- body.shepherd-active .shepherd-target.shepherd-enabled {
- box-shadow: 0 0 0 99999px rgba(0, 0, 0, 0.20);
- pointer-events: none !important;
- z-index: 9999;
- }
-
- body.shepherd-active .shepherd-orphan {
- box-shadow: 0 0 0 99999px rgba(0, 0, 0, 0.20);
- pointer-events: auto;
- z-index: 9999;
- }
-
- body.shepherd-active
- .shepherd-enabled.shepherd-element-attached-top {
- position: relative;
- }
-
- body.shepherd-active
- .shepherd-enabled.shepherd-element-attached-bottom {
- position: relative;
- }
-
- body.shepherd-active .shepherd-step {
- pointer-events: auto;
- z-index: 9999;
- }
-
- body.shepherd-active {
- pointer-events: none !important;
- }
- """
-
-# pytest html-report Style
-pytest_style = """
- body {
- font-family: Helvetica, Arial, sans-serif;
- font-size: 12px;
- min-width: 800px;
- color: #999;
- }
- h1 {
- font-size: 24px;
- color: black;
- }
- h2 {
- font-size: 16px;
- color: black;
- }
- p {
- color: black;
- }
- a {
- color: #999;
- }
- table {
- border-collapse: collapse;
- }
- #environment td {
- padding: 5px;
- border: 1px solid #E6E6E6;
- }
- #environment tr:nth-child(odd) {
- background-color: #f6f6f6;
- }
- span.passed, .passed .col-result {
- color: green;
- }
- span.skipped, span.xfailed, span.rerun, .skipped .col-result,
- .xfailed .col-result, .rerun .col-result {
- color: orange;
- }
- span.error, span.failed, span.xpassed, .error .col-result,
- .failed .col-result, .xpassed .col-result {
- color: red;
- }
- #results-table {
- border: 1px solid #e6e6e6;
- color: #999;
- font-size: 12px;
- width: 100%
- }
- #results-table th, #results-table td {
- padding: 5px;
- border: 1px solid #E6E6E6;
- text-align: left
- }
- #results-table th {
- font-weight: bold
- }
- .log:only-child {
- height: inherit
- }
- .log {
- background-color: #e6e6e6;
- border: 1px solid #e6e6e6;
- color: black;
- display: block;
- font-family: "Courier New", Courier, monospace;
- height: 230px;
- overflow-y: scroll;
- padding: 5px;
- white-space: pre-wrap
- }
- div.image {
- border: 1px solid #e6e6e6;
- float: right;
- height: 240px;
- margin-left: 5px;
- overflow: hidden;
- width: 320px
- }
- div.image img {
- width: 320px
- }
- .collapsed {
- display: none;
- }
- .expander::after {
- content: " (show details)";
- color: #BBB;
- font-style: italic;
- cursor: pointer;
- }
- .collapser::after {
- content: " (hide details)";
- color: #BBB;
- font-style: italic;
- cursor: pointer;
- }
- .sortable {
- cursor: pointer;
- }
- .sort-icon {
- font-size: 0px;
- float: left;
- margin-right: 5px;
- margin-top: 5px;
- width: 0;
- height: 0;
- border-left: 8px solid transparent;
- border-right: 8px solid transparent;
- }
- .inactive .sort-icon {
- border-top: 8px solid #E6E6E6;
- }
- .asc.active .sort-icon {
- border-bottom: 8px solid #999;
- }
- .desc.active .sort-icon {
- border-top: 8px solid #999;
- }
- """
+def get_pytest_style():
+ # pytest html-report Style
+ if hasattr(Saved, "pytest_style"):
+ return Saved.pytest_style
+ pytest_style = """
+ body {
+ font-family: Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ min-width: 800px;
+ color: #999;
+ }
+ h1 {
+ font-size: 24px;
+ color: black;
+ }
+ h2 {
+ font-size: 16px;
+ color: black;
+ }
+ p {
+ color: black;
+ }
+ a {
+ color: #999;
+ }
+ table {
+ border-collapse: collapse;
+ }
+ #environment td {
+ padding: 5px;
+ border: 1px solid #E6E6E6;
+ }
+ #environment tr:nth-child(odd) {
+ background-color: #f6f6f6;
+ }
+ span.passed, .passed .col-result {
+ color: green;
+ }
+ span.skipped, span.xfailed, span.rerun, .skipped .col-result,
+ .xfailed .col-result, .rerun .col-result {
+ color: orange;
+ }
+ span.error, span.failed, span.xpassed, .error .col-result,
+ .failed .col-result, .xpassed .col-result {
+ color: red;
+ }
+ #results-table {
+ border: 1px solid #e6e6e6;
+ color: #999;
+ font-size: 12px;
+ width: 100%
+ }
+ #results-table th, #results-table td {
+ padding: 5px;
+ border: 1px solid #E6E6E6;
+ text-align: left
+ }
+ #results-table th {
+ font-weight: bold
+ }
+ .log:only-child {
+ height: inherit
+ }
+ .log {
+ background-color: #e6e6e6;
+ border: 1px solid #e6e6e6;
+ color: black;
+ display: block;
+ font-family: "Courier New", Courier, monospace;
+ height: 230px;
+ overflow-y: scroll;
+ padding: 5px;
+ white-space: pre-wrap
+ }
+ div.image {
+ border: 1px solid #e6e6e6;
+ float: right;
+ height: 240px;
+ margin-left: 5px;
+ overflow: hidden;
+ width: 320px
+ }
+ div.image img {
+ width: 320px
+ }
+ .collapsed {
+ display: none;
+ }
+ .expander::after {
+ content: " (show details)";
+ color: #BBB;
+ font-style: italic;
+ cursor: pointer;
+ }
+ .collapser::after {
+ content: " (hide details)";
+ color: #BBB;
+ font-style: italic;
+ cursor: pointer;
+ }
+ .sortable {
+ cursor: pointer;
+ }
+ .sort-icon {
+ font-size: 0px;
+ float: left;
+ margin-right: 5px;
+ margin-top: 5px;
+ width: 0;
+ height: 0;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ }
+ .inactive .sort-icon {
+ border-top: 8px solid #E6E6E6;
+ }
+ .asc.active .sort-icon {
+ border-bottom: 8px solid #999;
+ }
+ .desc.active .sort-icon {
+ border-top: 8px solid #999;
+ }
+ """
+ Saved.pytest_style = pytest_style
+ return pytest_style
diff --git a/seleniumbase/core/tour_helper.py b/seleniumbase/core/tour_helper.py
index 630a340c..94ef564b 100755
--- a/seleniumbase/core/tour_helper.py
+++ b/seleniumbase/core/tour_helper.py
@@ -27,7 +27,7 @@ def activate_bootstrap(driver):
var tour2 = new Tour({
});"""
- backdrop_style = style_sheet.bt_backdrop_style
+ backdrop_style = style_sheet.get_bt_backdrop_style()
js_utils.add_css_style(driver, backdrop_style)
js_utils.wait_for_ready_state_complete(driver)
js_utils.wait_for_angularjs(driver)
@@ -62,7 +62,7 @@ def activate_driverjs(driver):
"""Allows you to use DriverJS Tours with SeleniumBase
https://kamranahmed.info/driver.js/
"""
- backdrop_style = style_sheet.dt_backdrop_style
+ backdrop_style = style_sheet.get_dt_backdrop_style()
driverjs_css = constants.DriverJS.MIN_CSS
driverjs_js = constants.DriverJS.MIN_JS
@@ -109,7 +109,7 @@ def activate_hopscotch(driver):
"""
hopscotch_css = constants.Hopscotch.MIN_CSS
hopscotch_js = constants.Hopscotch.MIN_JS
- backdrop_style = style_sheet.hops_backdrop_style
+ backdrop_style = style_sheet.get_hops_backdrop_style()
verify_script = """// Verify Hopscotch activated
var hops = hopscotch.isActive;
@@ -157,7 +157,7 @@ def activate_introjs(driver):
theme_color = sb_config.introjs_theme_color
hover_color = sb_config.introjs_hover_color
- backdrop_style = style_sheet.introjs_style % (
+ backdrop_style = style_sheet.get_introjs_style() % (
theme_color,
hover_color,
hover_color,
@@ -215,8 +215,8 @@ def activate_shepherd(driver):
sh_theme_sq_dark_css = constants.Shepherd.THEME_SQ_DK_CSS
tether_js = constants.Tether.MIN_JS
spinner_css = constants.Messenger.SPINNER_CSS
- sh_style = style_sheet.sh_style_test
- backdrop_style = style_sheet.sh_backdrop_style
+ sh_style = style_sheet.get_sh_style_test()
+ backdrop_style = style_sheet.get_sh_backdrop_style()
activate_bootstrap(driver)
js_utils.wait_for_ready_state_complete(driver)
@@ -252,7 +252,7 @@ def activate_shepherd(driver):
def is_shepherd_activated(driver):
- sh_style = style_sheet.sh_style_test
+ sh_style = style_sheet.get_sh_style_test()
try:
driver.execute_script(sh_style) # Verify Shepherd has loaded
return True
@@ -923,7 +923,7 @@ def export_tour(tour_steps, name=None, filename="my_tour.js", url=None):
jquery_js = constants.JQuery.MIN_JS
bootstrap_tour_css = constants.BootstrapTour.MIN_CSS
bootstrap_tour_js = constants.BootstrapTour.MIN_JS
- backdrop_style = style_sheet.bt_backdrop_style
+ backdrop_style = style_sheet.get_bt_backdrop_style()
backdrop_style = backdrop_style.replace("\n", "")
backdrop_style = js_utils.escape_quotes_if_needed(backdrop_style)
instructions += 'injectJS("%s");\n' % jquery_js
@@ -940,7 +940,7 @@ def export_tour(tour_steps, name=None, filename="my_tour.js", url=None):
elif tour_type == "driverjs":
driverjs_css = constants.DriverJS.MIN_CSS
driverjs_js = constants.DriverJS.MIN_JS
- backdrop_style = style_sheet.dt_backdrop_style
+ backdrop_style = style_sheet.get_dt_backdrop_style()
backdrop_style = backdrop_style.replace("\n", "")
backdrop_style = js_utils.escape_quotes_if_needed(backdrop_style)
instructions += 'injectCSS("%s");\n' % driverjs_css
@@ -950,7 +950,7 @@ def export_tour(tour_steps, name=None, filename="my_tour.js", url=None):
elif tour_type == "hopscotch":
hopscotch_css = constants.Hopscotch.MIN_CSS
hopscotch_js = constants.Hopscotch.MIN_JS
- backdrop_style = style_sheet.hops_backdrop_style
+ backdrop_style = style_sheet.get_hops_backdrop_style()
backdrop_style = backdrop_style.replace("\n", "")
backdrop_style = js_utils.escape_quotes_if_needed(backdrop_style)
instructions += 'injectCSS("%s");\n' % hopscotch_css
@@ -962,7 +962,7 @@ def export_tour(tour_steps, name=None, filename="my_tour.js", url=None):
intro_js = constants.IntroJS.MIN_JS
theme_color = sb_config.introjs_theme_color
hover_color = sb_config.introjs_hover_color
- backdrop_style = style_sheet.introjs_style % (
+ backdrop_style = style_sheet.get_introjs_style() % (
theme_color,
hover_color,
hover_color,
@@ -986,7 +986,7 @@ def export_tour(tour_steps, name=None, filename="my_tour.js", url=None):
sh_theme_sq_dark_css = constants.Shepherd.THEME_SQ_DK_CSS
tether_js = constants.Tether.MIN_JS
spinner_css = constants.Messenger.SPINNER_CSS
- backdrop_style = style_sheet.sh_backdrop_style
+ backdrop_style = style_sheet.get_sh_backdrop_style()
backdrop_style = backdrop_style.replace("\n", "")
backdrop_style = js_utils.escape_quotes_if_needed(backdrop_style)
instructions += 'injectCSS("%s");\n' % spinner_css
diff --git a/seleniumbase/core/visual_helper.py b/seleniumbase/core/visual_helper.py
index 8e551b7f..fb96b646 100755
--- a/seleniumbase/core/visual_helper.py
+++ b/seleniumbase/core/visual_helper.py
@@ -26,7 +26,7 @@ def get_sbs_head():
''
''
"Visual Comparison"
- "" % (constants.SideBySide.SIDE_BY_SIDE_PNG)
+ "" % (constants.SideBySide.get_favicon())
)
return head
diff --git a/seleniumbase/fixtures/base_case.py b/seleniumbase/fixtures/base_case.py
index 4c1039a5..c650ec7d 100755
--- a/seleniumbase/fixtures/base_case.py
+++ b/seleniumbase/fixtures/base_case.py
@@ -13488,7 +13488,7 @@ class BaseCase(unittest.TestCase):
"%s"
"Dashboard"
"%s"
- % (constants.Dashboard.DASH_PIE_PNG_1, auto_refresh_html, style)
+ % (constants.Dashboard.get_dash_pie_1(), auto_refresh_html, style)
)
table_html = (
""
diff --git a/seleniumbase/fixtures/constants.py b/seleniumbase/fixtures/constants.py
index fd1c2636..7516e03d 100755
--- a/seleniumbase/fixtures/constants.py
+++ b/seleniumbase/fixtures/constants.py
@@ -78,12 +78,21 @@ class Dashboard:
LOCKFILE = Files.DOWNLOADS_FOLDER + "/dashboard.lock"
DASH_JSON = Files.DOWNLOADS_FOLDER + "/dashboard.json"
DASH_PIE = Files.DOWNLOADS_FOLDER + "/dash_pie.json"
- # DASH_PIE_PNG_1 = "https://seleniumbase.io/img/dash_pie.png"
- # DASH_PIE_PNG_2 = "https://seleniumbase.io/img/dash_pie_2.png"
- # DASH_PIE_PNG_3 = "https://seleniumbase.io/img/dash_pie_3.png"
- DASH_PIE_PNG_1 = encoded_images.DASH_PIE_PNG_1 # Faster than CDN
- DASH_PIE_PNG_2 = encoded_images.DASH_PIE_PNG_2 # Faster than CDN
- DASH_PIE_PNG_3 = encoded_images.DASH_PIE_PNG_3 # Faster than CDN
+
+ def get_dash_pie_1():
+ if not hasattr(encoded_images, "DASH_PIE_PNG_1"):
+ encoded_images.DASH_PIE_PNG_1 = encoded_images.get_dash_pie_png1()
+ return encoded_images.DASH_PIE_PNG_1
+
+ def get_dash_pie_2():
+ if not hasattr(encoded_images, "DASH_PIE_PNG_2"):
+ encoded_images.DASH_PIE_PNG_2 = encoded_images.get_dash_pie_png2()
+ return encoded_images.DASH_PIE_PNG_2
+
+ def get_dash_pie_3():
+ if not hasattr(encoded_images, "DASH_PIE_PNG_3"):
+ encoded_images.DASH_PIE_PNG_3 = encoded_images.get_dash_pie_png3()
+ return encoded_images.DASH_PIE_PNG_3
class PipInstall:
@@ -91,12 +100,21 @@ class PipInstall:
class Report:
- FAVICON = encoded_images.REPORT_FAVICON
+ def get_favicon():
+ if not hasattr(encoded_images, "REPORT_FAVICON"):
+ encoded_images.REPORT_FAVICON = encoded_images.get_report_favicon()
+ return encoded_images.REPORT_FAVICON
class SideBySide:
HTML_FILE = "side_by_side.html"
- SIDE_BY_SIDE_PNG = encoded_images.SIDE_BY_SIDE_PNG
+
+ def get_favicon():
+ if not hasattr(encoded_images, "SIDE_BY_SIDE_PNG"):
+ encoded_images.SIDE_BY_SIDE_PNG = (
+ encoded_images.get_side_by_side_png()
+ )
+ return encoded_images.SIDE_BY_SIDE_PNG
class MultiBrowser:
diff --git a/seleniumbase/fixtures/js_utils.py b/seleniumbase/fixtures/js_utils.py
index f0ae4e40..9986a5e9 100755
--- a/seleniumbase/fixtures/js_utils.py
+++ b/seleniumbase/fixtures/js_utils.py
@@ -606,7 +606,7 @@ def activate_html_inspector(driver):
def activate_messenger(driver):
- from seleniumbase.core import style_sheet
+ from seleniumbase.core.style_sheet import get_messenger_style
jquery_js = constants.JQuery.MIN_JS
messenger_css = constants.Messenger.MIN_CSS
@@ -640,7 +640,7 @@ def activate_messenger(driver):
add_js_link(driver, underscore_js)
add_css_link(driver, spinner_css)
add_js_link(driver, messenger_js)
- add_css_style(driver, style_sheet.messenger_style)
+ add_css_style(driver, get_messenger_style())
for x in range(10):
# Messenger needs a small amount of time to load & activate.
diff --git a/seleniumbase/masterqa/master_qa.py b/seleniumbase/masterqa/master_qa.py
index 3a911397..7ccc3637 100755
--- a/seleniumbase/masterqa/master_qa.py
+++ b/seleniumbase/masterqa/master_qa.py
@@ -8,7 +8,7 @@ import time
from selenium.common.exceptions import NoAlertPresentException
from selenium.common.exceptions import WebDriverException
from seleniumbase import BaseCase
-from seleniumbase.core.style_sheet import style
+from seleniumbase.core.style_sheet import get_report_style
from seleniumbase.config import settings
from seleniumbase.fixtures import js_utils
@@ -492,7 +492,7 @@ class MasterQA(BaseCase):
failure_table += ""
table_view = "%s%s%s" % (summary_table, log_table, failure_table)
report_html = "%s%s" % (
- style,
+ get_report_style(),
table_view,
)
results_file = self.__add_results_page(report_html)
diff --git a/seleniumbase/plugins/pytest_plugin.py b/seleniumbase/plugins/pytest_plugin.py
index 10af74bb..720712ee 100644
--- a/seleniumbase/plugins/pytest_plugin.py
+++ b/seleniumbase/plugins/pytest_plugin.py
@@ -1532,7 +1532,7 @@ def _get_test_ids_(the_item):
def _create_dashboard_assets_():
import codecs
from seleniumbase.js_code.live_js import live_js
- from seleniumbase.core.style_sheet import pytest_style
+ from seleniumbase.core.style_sheet import get_pytest_style
abs_path = os.path.abspath(".")
assets_folder = os.path.join(abs_path, "assets")
@@ -1544,11 +1544,11 @@ def _create_dashboard_assets_():
existing_pytest_style = None
with open(pytest_style_css, "r") as f:
existing_pytest_style = f.read()
- if existing_pytest_style == pytest_style:
+ if existing_pytest_style == get_pytest_style():
add_pytest_style_css = False
if add_pytest_style_css:
out_file = codecs.open(pytest_style_css, "w+", encoding="utf-8")
- out_file.writelines(pytest_style)
+ out_file.writelines(get_pytest_style())
out_file.close()
live_js_file = os.path.join(assets_folder, "live.js")
add_live_js_file = True
@@ -1776,8 +1776,8 @@ def _perform_pytest_unconfigure_():
)
find_it_3 = 'Untested | '
swap_with_3 = 'Unreported | '
- find_it_4 = 'href="%s"' % constants.Dashboard.DASH_PIE_PNG_1
- swap_with_4 = 'href="%s"' % constants.Dashboard.DASH_PIE_PNG_2
+ find_it_4 = 'href="%s"' % constants.Dashboard.get_dash_pie_1()
+ swap_with_4 = 'href="%s"' % constants.Dashboard.get_dash_pie_2()
try:
abs_path = os.path.abspath(".")
dashboard_path = os.path.join(abs_path, "dashboard.html")
@@ -1814,7 +1814,7 @@ def _perform_pytest_unconfigure_():
the_html_d = the_html_d.replace(
"",
'' % constants.Dashboard.DASH_PIE_PNG_3,
+ 'href="%s">' % constants.Dashboard.get_dash_pie_3(),
)
the_html_d = the_html_d.replace("", '')
the_html_d = the_html_d.replace(
@@ -1863,7 +1863,7 @@ def _perform_pytest_unconfigure_():
the_html_r = the_html_r.replace(
"",
'' % constants.Dashboard.DASH_PIE_PNG_3,
+ '"%s">' % constants.Dashboard.get_dash_pie_3(),
)
if sb_config._dash_final_summary:
the_html_r += sb_config._dash_final_summary