Skip to content

Commit 2d4b39c

Browse files
authored
Merge pull request #753 from seleniumbase/add-the-seleniumbase-dashboard
Add the option to generate a SeleniumBase Dashboard
2 parents dc20567 + 0736c41 commit 2d4b39c

33 files changed

+622
-150
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ html_report.html
9393
report.html
9494
report.xml
9595

96+
# Dashboard
97+
dashboard.html
98+
9699
# Allure Reports / Results
97100
allure_report
98101
allure-report

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
## <img src="https://cdn2.hubspot.net/hubfs/100006/images/super_square_logo_3.png" title="SeleniumBase" height="32"> CHANGELOG
1+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> CHANGELOG</h2>
22

3-
### See: [SeleniumBase/releases](https://github.com/seleniumbase/SeleniumBase/releases)
3+
<h3>See: [SeleniumBase/releases](https://github.com/seleniumbase/SeleniumBase/releases)</h3>

README.md

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
<meta property="og:description" content="Build fast, reliable, end-to-end tests." />
44
<meta property="og:keywords" content="Python, pytest, selenium, webdriver, test automation, testing, seleniumbase, test framework, RPA, reports, website tours, presentations">
55
<meta property="og:image" content="https://seleniumbase.io/cdn/img/sb_logo_dh.png" />
6-
<link rel="icon" href="https://seleniumbase.io/img/logo3a.png" />
6+
<link rel="icon" href="https://seleniumbase.io/img/logo6.png" />
77

88
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/">
9-
<img src="https://seleniumbase.io/cdn/img/sb_logo_b.png" alt="SeleniumBase" title="SeleniumBase" width="360" /></a></p>
9+
<img src="https://seleniumbase.io/cdn/img/mac_sb_logo_3.png" alt="SeleniumBase" title="SeleniumBase" width="360" /></a></p>
1010

1111
<!-- View on GitHub -->
1212
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/releases">
@@ -16,7 +16,7 @@
1616
<img src="https://badges.gitter.im/seleniumbase/SeleniumBase.svg" alt="SeleniumBase" /></a> <a href="https://seleniumbase.io">
1717
<img src="https://img.shields.io/badge/docs-%20seleniumbase.io-22BBAA.svg" alt="SeleniumBase.io Docs" /></a></p>
1818

19-
<p><b>SeleniumBase</b> is a complete framework for browser automation, end-to-end testing, reports, charts, presentations, website tours, and visual testing.
19+
<p><b>SeleniumBase</b> is a complete browser automation solution for end-to-end testing, reports, charts, presentations, website tours, and visual testing.
2020
Tests are run with <a href="https://docs.pytest.org/en/latest/index.html">pytest</a>. Browsers are controlled by <a href="https://www.w3.org/TR/webdriver2/#endpoints">WebDriver</a>.</p>
2121

2222
<p align="center">
@@ -48,11 +48,11 @@ Tests are run with <a href="https://docs.pytest.org/en/latest/index.html">pytest
4848
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a>
4949
</p>
5050

51-
* Simplifies the process of creating UI tests for websites.
52-
* Uses reliable, smart-waiting code to prevent flaky tests.
53-
* Includes tools for [logging, screenshots, and test reports](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md).
54-
* Has plugins that add new [pytest command-line options](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md).
55-
* Enhances Selenium's Python API with [versatile methods](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md).
51+
* Simplifies the creation of Web-UI tests.
52+
* Smart-waiting code keeps tests reliable.
53+
* Includes tools for [logging and reports](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md).
54+
* Has plugins that add new [pytest options](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md).
55+
* Has a vast library of [versatile methods](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md).
5656

5757
--------
5858

@@ -67,14 +67,14 @@ pytest test_swag_labs.py --demo
6767
--------
6868

6969
<a id="python_installation"></a>
70-
<h2><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Quick Start: 🚀</h2>
70+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Quick Start: 🚀</h2>
7171

7272
* Add **[Python](https://www.python.org/downloads/)** and **[Git](https://git-scm.com/)** to your System PATH.
7373

7474
* Create a **[Python virtual environment](https://seleniumbase.io/help_docs/virtualenv_instructions/)**.
7575

7676
<a id="install_seleniumbase"></a>
77-
<h2><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Install SeleniumBase:</h2>
77+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Install SeleniumBase:</h2>
7878

7979
* You can install ``seleniumbase`` from [pypi](https://pypi.python.org/pypi/seleniumbase):
8080

@@ -131,7 +131,7 @@ COMMANDS:
131131
* (Use "pytest" for running tests) *
132132
```
133133
134-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Download a webdriver:</h3>
134+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Download a webdriver:</h3>
135135
136136
SeleniumBase can download webdrivers to the [seleniumbase/drivers](https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/drivers) folder with the ``install`` command:
137137
@@ -150,7 +150,7 @@ sbase install chromedriver latest
150150
151151
(See [seleniumbase.io/seleniumbase/console_scripts/ReadMe/](https://seleniumbase.io/seleniumbase/console_scripts/ReadMe/) for more information on SeleniumBase console scripts.)
152152
153-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Create and run tests:</h3>
153+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Create and run tests:</h3>
154154
155155
* ``sbase mkdir DIR`` creates a folder with sample tests:
156156
@@ -261,7 +261,7 @@ self.save_screenshot(FILE_NAME) # Save a screenshot of the current page
261261
262262
For the complete list of SeleniumBase methods, see: <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">Method Summary</a></b>
263263
264-
<h2><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Learn More:</h2>
264+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Learn More:</h2>
265265
266266
<h4>Automatic WebDriver abilities:</h4>
267267
SeleniumBase automatically handles common WebDriver actions such as spinning up web browsers and saving screenshots during test failures. (<i><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">Read more about customizing test runs</a>.</i>)
@@ -317,7 +317,7 @@ For a full list of SeleniumBase features, <a href="https://github.com/seleniumba
317317
<a id="detailed_instructions"></a>
318318
<img src="https://seleniumbase.io/img/sb_logo_10.png" title="SeleniumBase" width="290">
319319
320-
<h2><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Detailed Instructions:</h2>
320+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Detailed Instructions:</h2>
321321
322322
<a id="seleniumbase_demo_mode"></a> <b>Use Demo Mode to help you see what tests are asserting.</b>
323323
@@ -444,7 +444,7 @@ To pass additional data from the command-line to tests, add ``--data="ANY STRING
444444
Inside your tests, you can use ``self.data`` to access that.
445445
446446
447-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Test Directory Customization:</h3>
447+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Test Directory Customization:</h3>
448448
449449
For running tests outside of the SeleniumBase repo with **Pytest**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** on the root folder. For running tests outside of the SeleniumBase repo with **Nosetests**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** on the root folder. (Subfolders should include a blank ``__init__.py`` file.) These files specify default configuration details for tests. (For nosetest runs, you can also specify a .cfg file by using ``--config``. Example ``nosetests [MY_TEST.py] --config=[MY_CONFIG.cfg]``)
450450
@@ -457,7 +457,7 @@ pytest test_demo_site.py
457457
```
458458
459459
460-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Logging / Results from Failing Tests:</h3>
460+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Logging / Results from Failing Tests:</h3>
461461
462462
Let's try an example of a test that fails:
463463
@@ -480,11 +480,34 @@ pytest test_fail.py
480480
481481
You'll notice that a logs folder, "latest_logs", was created to hold information about the failing test, and screenshots. During test runs, past results get moved to the archived_logs folder if you have ARCHIVE_EXISTING_LOGS set to True in [settings.py](https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py), or if your run tests with ``--archive-logs``. If you choose not to archive existing logs, they will be deleted and replaced by the logs of the latest test run.
482482
483+
--------
483484
484-
<a id="creating_visual_reports"></a>
485-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Creating Visual Test Suite Reports:</h3>
485+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> The SeleniumBase Dashboard:</h3>
486+
487+
The ``--dashboard`` option for pytest generates a SeleniumBase Dashboard located at ``dashboard.html``, which updates automatically as tests run and produce results.
488+
489+
<img src="https://seleniumbase.io/cdn/img/dashboard_1.png" alt="The SeleniumBase Dashboard" title="The SeleniumBase Dashboard" width="360" />
490+
491+
Additionally, you can host your own SeleniumBase Dashboard Server on a port of your choice. Here's an example of that using Python 3's ``http.server``:
492+
493+
```bash
494+
python -m http.server 1948
495+
```
496+
497+
Now you can navigate to ``http://localhost:1948/dashboard.html`` in order to view the served dashboard from a web browser. (Be sure to run that command in the same directory where you ran your tests.)
486498
487-
(NOTE: Several command-line args are different for Pytest vs Nosetests)
499+
Here's a full example of what the SeleniumBase Dashboard may look like:
500+
501+
```bash
502+
pytest test_suite.py --dashboard --rs --headless
503+
```
504+
505+
<img src="https://seleniumbase.io/cdn/img/dashboard_2.png" alt="The SeleniumBase Dashboard" title="The SeleniumBase Dashboard" width="480" />
506+
507+
--------
508+
509+
<a id="creating_visual_reports"></a>
510+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Creating Visual Test Suite Reports:</h3>
488511
489512
<h4><b>Pytest Reports:</b></h4>
490513
@@ -523,7 +546,7 @@ pytest test_suite.py --alluredir=allure_results
523546
```
524547
525548
526-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Using a Proxy Server:</h3>
549+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Using a Proxy Server:</h3>
527550
528551
If you wish to use a proxy server for your browser tests (Chrome and Firefox only), you can add ``--proxy=IP_ADDRESS:PORT`` as an argument on the command-line.
529552
@@ -544,7 +567,7 @@ pytest proxy_test.py --proxy=proxy1
544567
```
545568
546569
547-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Changing the User-Agent:</h3>
570+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Changing the User-Agent:</h3>
548571
549572
If you wish to change the User-Agent for your browser tests (Chromium and Firefox only), you can add ``--agent="USER AGENT STRING"`` as an argument on the command-line.
550573
@@ -553,13 +576,13 @@ pytest user_agent_test.py --agent="Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1
553576
```
554577
555578
556-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Building Guided Tours for Websites:</h3>
579+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Building Guided Tours for Websites:</h3>
557580
558581
Learn about <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">SeleniumBase Interactive Walkthroughs</a> (in the ``examples/tour_examples`` folder). It's great for prototyping a website onboarding experience.
559582
560583
561584
<a id="utilizing_advanced_features"></a>
562-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Production Environments & Integrations:</h3>
585+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Production Environments & Integrations:</h3>
563586
564587
Here are some things you can do to set up a production environment for your testing:
565588
@@ -580,7 +603,7 @@ pytest [YOUR_TEST_FILE.py] --with-db-reporting --with-s3-logging
580603
```
581604
582605
<a id="detailed_method_specifications"></a>
583-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Detailed Method Specifications and Examples:</h3>
606+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Detailed Method Specifications and Examples:</h3>
584607
585608
<h4>Navigating to a web page (and related commands)</h4>
586609
@@ -868,7 +891,7 @@ pytest --reruns 5 --reruns-delay 1
868891
Additionally, you can use the ``@retry_on_exception()`` decorator to specifically retry failing methods. (First import: ``from seleniumbase import decorators``) To learn more about SeleniumBase decorators, [click here](https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/common).
869892
870893
871-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Wrap-Up</h3>
894+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Wrap-Up</h3>
872895
873896
<b>Congratulations on getting started with SeleniumBase!</b>
874897

examples/ReadMe.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<img src="https://seleniumbase.io/cdn/img/super_logo_sb.png" title="SeleniumBase" width="300" />
22

3-
<h2><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Running Example Tests:</h2>
3+
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Running Example Tests:</h2>
44

55
<p align="left"><a align="center" href="https://github.com/seleniumbase/SeleniumBase/blob/master/README.md"><img align="center" src="https://seleniumbase.io/cdn/img/sb_demo_page.png" alt="SeleniumBase" width="420" /></a></p>
66

@@ -12,7 +12,7 @@
1212

1313
(NOTE: Some example tests fail on purpose to demonstrate [logging features](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md).)
1414

15-
<h3><img src="https://seleniumbase.io/img/logo3a.png" title="SeleniumBase" width="32" /> Example run commands to help you get started:</h3>
15+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Example run commands to help you get started:</h3>
1616

1717
Run an example test in Chrome: (Default: ``--browser=chrome``)
1818

examples/chart_maker/ReadMe.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h3 align="left"><img src="https://seleniumbase.io/cdn/img/sb_logo_b.png" alt="SeleniumBase" width="290" /></h3>
1+
<h3 align="left"><img src="https://seleniumbase.io/cdn/img/sb_logo_b.png" alt="SeleniumBase" width="360" /></h3>
22

33
<h3> 📊 ChartMaker 📈 </h3>
44

examples/chart_maker/test_area_chart.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class MyChartMakerClass(BaseCase):
55

6-
def test_chart_maker(self):
6+
def test_area_chart(self):
77
self.create_presentation(theme="moon")
88
self.create_area_chart(
99
title="Time Outside", subtitle="Last Week", unit="Minutes")

examples/chart_maker/test_line_chart.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class MyChartMakerClass(BaseCase):
55

6-
def test_chart_maker(self):
6+
def test_line_chart(self):
77
self.create_presentation()
88
self.create_line_chart(
99
title="Time Outside", subtitle="Last Week", unit="Minutes")

examples/chart_maker/test_multi_series.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class MyChartMakerClass(BaseCase):
55

6-
def test_multi_series_chart(self):
6+
def test_multi_series(self):
77
self.create_presentation(theme="league")
88

99
self.create_line_chart(

examples/decryption_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class MyTestClass(BaseCase):
1111

12-
def test_rate_limited_printing(self):
12+
def test_decrypt_password(self):
1313
self.open("https://www.saucedemo.com/")
1414
self.type("#user-name", "standard_user")
1515

0 commit comments

Comments
 (0)