Add shortcuts for using "Chrome for Testing" and "Chrome-Headless-Shell"
This commit is contained in:
parent
36bdf1499c
commit
c167a23a06
|
@ -337,6 +337,8 @@ pytest --headless -n8 --dashboard --html=report.html -v --rs --crumbs
|
|||
|
||||
The above not only runs tests in parallel processes, but it also tells tests in the same process to share the same browser session, runs the tests in headless mode, displays the full name of each test on a separate line, creates a real-time dashboard of the test results, and creates a full report after all tests complete.
|
||||
|
||||
--------
|
||||
|
||||
🎛️ For extra speed, run your tests using `chrome-headless-shell`:
|
||||
|
||||
First, get `chrome-headless-shell` if you don't already have it:
|
||||
|
@ -345,10 +347,10 @@ First, get `chrome-headless-shell` if you don't already have it:
|
|||
sbase get chs
|
||||
```
|
||||
|
||||
Then, run scripts with `binary_location` / `bl` set to `"chs"`:
|
||||
Then, run scripts with `--chs` / `chs=True`:
|
||||
|
||||
```bash
|
||||
pytest --bl="chs" -n8 --dashboard --html=report.html -v --rs
|
||||
pytest --chs -n8 --dashboard --html=report.html -v --rs
|
||||
```
|
||||
|
||||
That makes your tests run very quickly in headless mode.
|
||||
|
@ -486,6 +488,26 @@ With the `SB()` and `Driver()` formats, the binary location is set via the `bina
|
|||
|
||||
--------
|
||||
|
||||
🎛️ To use the special `Chrome for Testing` binary:
|
||||
|
||||
```bash
|
||||
sbase get cft
|
||||
```
|
||||
|
||||
Then, run scripts with `--cft` / `cft=True`:
|
||||
|
||||
```bash
|
||||
pytest --cft -n8 --dashboard --html=report.html -v --rs --headless
|
||||
```
|
||||
|
||||
--------
|
||||
|
||||
(Note that `--chs` / `chs=True` activates `Chrome-Headless-Shell`)
|
||||
|
||||
`Chrome-Headless-Shell` is the fastest version of Chrome, designed specifically for headless automation. (This mode is NOT compatible with UC Mode!)
|
||||
|
||||
--------
|
||||
|
||||
<h3><img src="https://seleniumbase.github.io/img/green_logo.png" title="SeleniumBase" width="32" /> Customizing default settings:</h3>
|
||||
|
||||
🎛️ An easy way to override [seleniumbase/config/settings.py](https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py) is by using a custom settings file.
|
||||
|
|
|
@ -137,6 +137,8 @@ def Driver(
|
|||
guest=None, # Shortcut / Duplicate of "guest_mode".
|
||||
wire=None, # Shortcut / Duplicate of "use_wire".
|
||||
pls=None, # Shortcut / Duplicate of "page_load_strategy".
|
||||
cft=None, # Use "Chrome for Testing"
|
||||
chs=None, # Use "Chrome-Headless-Shell"
|
||||
):
|
||||
"""
|
||||
* SeleniumBase Driver as a Python Context Manager or a returnable object. *
|
||||
|
@ -550,6 +552,14 @@ def Driver(
|
|||
if arg.startswith("--bl="):
|
||||
binary_location = arg.split("--bl=")[1]
|
||||
break
|
||||
if cft and not binary_location:
|
||||
binary_location = "cft"
|
||||
elif chs and not binary_location:
|
||||
binary_location = "chs"
|
||||
if "--cft" in sys_argv and not binary_location:
|
||||
binary_location = "cft"
|
||||
elif "--chs" in sys_argv and not binary_location:
|
||||
binary_location = "chs"
|
||||
if (
|
||||
binary_location
|
||||
and binary_location.lower() == "chs"
|
||||
|
|
|
@ -184,6 +184,20 @@ def pytest_addoption(parser):
|
|||
default=False,
|
||||
help="""Shortcut for --browser=safari""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--cft",
|
||||
action="store_true",
|
||||
dest="use_cft",
|
||||
default=False,
|
||||
help="""Shortcut for using `Chrome for Testing`""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--chs",
|
||||
action="store_true",
|
||||
dest="use_chs",
|
||||
default=False,
|
||||
help="""Shortcut for using `Chrome-Headless-Shell`""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--with-selenium",
|
||||
action="store_true",
|
||||
|
@ -1575,6 +1589,10 @@ def pytest_configure(config):
|
|||
sb_config.extension_dir = config.getoption("extension_dir")
|
||||
sb_config.disable_features = config.getoption("disable_features")
|
||||
sb_config.binary_location = config.getoption("binary_location")
|
||||
if config.getoption("use_cft") and not sb_config.binary_location:
|
||||
sb_config.binary_location = "cft"
|
||||
elif config.getoption("use_chs") and not sb_config.binary_location:
|
||||
sb_config.binary_location = "chs"
|
||||
if (
|
||||
sb_config.binary_location
|
||||
and sb_config.binary_location.lower() == "chs"
|
||||
|
|
|
@ -119,6 +119,8 @@ def SB(
|
|||
pls=None, # Shortcut / Duplicate of "page_load_strategy".
|
||||
sjw=None, # Shortcut / Duplicate of "skip_js_waits".
|
||||
wfa=None, # Shortcut / Duplicate of "wait_for_angularjs".
|
||||
cft=None, # Use "Chrome for Testing"
|
||||
chs=None, # Use "Chrome-Headless-Shell"
|
||||
save_screenshot=None, # Save a screenshot at the end of each test.
|
||||
no_screenshot=None, # No screenshots saved unless tests directly ask it.
|
||||
page_load_strategy=None, # Set Chrome PLS to "normal", "eager", or "none".
|
||||
|
@ -588,6 +590,14 @@ def SB(
|
|||
if arg.startswith("--bl="):
|
||||
binary_location = arg.split("--bl=")[1]
|
||||
break
|
||||
if cft and not binary_location:
|
||||
binary_location = "cft"
|
||||
elif chs and not binary_location:
|
||||
binary_location = "chs"
|
||||
if "--cft" in sys_argv and not binary_location:
|
||||
binary_location = "cft"
|
||||
elif "--chs" in sys_argv and not binary_location:
|
||||
binary_location = "chs"
|
||||
if (
|
||||
binary_location
|
||||
and binary_location.lower() == "chs"
|
||||
|
|
|
@ -144,6 +144,20 @@ class SeleniumBrowser(Plugin):
|
|||
default=False,
|
||||
help="""Shortcut for --browser=safari""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--cft",
|
||||
action="store_true",
|
||||
dest="use_cft",
|
||||
default=False,
|
||||
help="""Shortcut for using `Chrome for Testing`""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--chs",
|
||||
action="store_true",
|
||||
dest="use_chs",
|
||||
default=False,
|
||||
help="""Shortcut for using `Chrome-Headless-Shell`""",
|
||||
)
|
||||
parser.addoption(
|
||||
"--cap_file",
|
||||
"--cap-file",
|
||||
|
@ -1203,6 +1217,10 @@ class SeleniumBrowser(Plugin):
|
|||
test.test.extension_dir = self.options.extension_dir
|
||||
test.test.disable_features = self.options.disable_features
|
||||
test.test.binary_location = self.options.binary_location
|
||||
if self.options.use_cft and not test.test.binary_location:
|
||||
test.test.binary_location = "cft"
|
||||
elif self.options.use_chs and not test.test.binary_location:
|
||||
test.test.binary_location = "chs"
|
||||
if (
|
||||
test.test.binary_location
|
||||
and test.test.binary_location.lower() == "chs"
|
||||
|
|
Loading…
Reference in New Issue