DEV Community

Discussion on: Bringing new life into Edge Selenium Tools

 
sreidhark profile image
sreidhark

Hi,
Sorry for the long post, I am trying to run sb without pytest. I found this code below from your examples.

1) Are all these settings mandatory ?

2)I am trying to use Allure reports, but its seems sb.pytest_html_report = "sb_report.html" is not generating any report , nor even logs in sb.log_path = "latest_logs/"

3) Eventually I want to create an object of sb and call from behave test steps, some how fixtures thing above didnt work for me . I want to create a SeleniumBase object in environment file before a feature starts running and use the same in test steps.

I have tried writing my own framework, but somehow I keep coming back to your work as I know I cant produce such a comprehensive and stable work ( Kudos!)

Thanks
Sri

Code:

from seleniumbase import BaseCase

class MyTestClass(BaseCase):

def test_basic(self):
    self.open("https://store.xkcd.com/search")
    self.type('input[name="q"]', "xkcd book")
    self.click('input[value="Search"]')
    self.assert_text("xkcd: volume 0", "h3")
    self.open("https://xkcd.com/353/")
    self.assert_title("xkcd: Python")
    self.assert_element('img[alt="Python"]')
    self.click('a[rel="license"]')
    self.assert_text("free to copy and reuse")
    self.go_back()
    self.click_link_text("About")
    self.assert_exact_text("xkcd.com", "h2")
    self.click_link_text("geohashing")
    self.assert_element("#comic img")
Enter fullscreen mode Exit fullscreen mode

if name == "main":
sb = MyTestClass("test_basic")
sb.browser = "chrome"
sb.headless = False
sb.headed = True
sb.start_page = None
sb.locale_code = None
sb.servername = "localhost"
sb.port = 4444
sb.data = None
sb.environment = "test"
sb.user_agent = None
sb.incognito = False
sb.guest_mode = False
sb.devtools = False
sb.mobile_emulator = False
sb.device_metrics = None
sb.extension_zip = None
sb.extension_dir = None
sb.database_env = "test"
sb.log_path = "latest_logs/"
sb.archive_logs = False
sb.disable_csp = False
sb.disable_ws = False
sb.enable_ws = False
sb.enable_sync = False
sb.use_auto_ext = False
sb.no_sandbox = False
sb.disable_gpu = False
sb._reuse_session = False
sb._crumbs = False
sb.visual_baseline = False
sb.maximize_option = False
sb.save_screenshot_after_test = False
sb.timeout_multiplier = None
sb.report_on = True
sb.pytest_html_report = "sb_report.html"
sb.with_db_reporting = False
sb.with_s3_logging = False
sb.js_checking_on = False
sb.is_pytest = False
sb.slow_mode = False
sb.demo_mode = False
sb.time_limit = None
sb.demo_sleep = 1
sb.message_duration = 2
sb.block_images = False
sb.settings_file = None
sb.user_data_dir = None
sb.proxy_string = None
sb.swiftshader = False
sb.ad_block_on = False
sb.highlights = None
sb.check_js = False
sb.cap_file = None
sb.cap_string = None

sb.setUp()
try:
    sb.test_basic()
finally:
    sb.tearDown()
    del sb
Enter fullscreen mode Exit fullscreen mode

_

Thread Thread
 
mintzworld profile image
Michael Mintz

Hi,
1) When using a hack like github.com/seleniumbase/SeleniumBa... to avoid using pytest, the variables still need to be initialized because pytest is no longer initializing them.
2) To get a pytest html report, add --html=report.html from the pytest command line (not the test itself!). For the Allure report, use --alluredir=ALLURE_DIR on the command line.
3) When using other pytest fixtures, you need to use SeleniumBase as a fixture for compatibility. See: github.com/seleniumbase/SeleniumBa... for an example of the sb fixture.

Thread Thread
 
sreidhark profile image
sreidhark

Hi
2) Sorry, forgot to mention. I need the report when NOT running from pytest. How do I pass these arguments when running from main?

Thanks
Sri

Thread Thread
 
mintzworld profile image
Michael Mintz

Hi Sri, those reports are specific to pytest plugins: pytest-html and allure-pytest. You'll need to use pytest for those reports to be generated.

Thread Thread
 
sreidhark profile image
sreidhark

Thanks