setup-selenium-testing 0.1.3__tar.gz → 0.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {setup_selenium_testing-0.1.3 → setup_selenium_testing-0.1.6}/PKG-INFO +2 -3
- {setup_selenium_testing-0.1.3 → setup_selenium_testing-0.1.6}/pyproject.toml +45 -67
- setup_selenium_testing-0.1.6/setup_selenium/__init__.py +1 -0
- setup_selenium_testing-0.1.3/setup_selenium/selenium_module.py → setup_selenium_testing-0.1.6/setup_selenium/setup_selenium.py +22 -4
- setup_selenium_testing-0.1.3/setup_selenium/__init__.py +0 -1
- {setup_selenium_testing-0.1.3 → setup_selenium_testing-0.1.6}/LICENSE +0 -0
- {setup_selenium_testing-0.1.3 → setup_selenium_testing-0.1.6}/README.md +0 -0
- {setup_selenium_testing-0.1.3 → setup_selenium_testing-0.1.6}/setup_selenium/py.typed +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: setup-selenium-testing
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.6
|
4
4
|
Summary: Setup Selenium for automation testing
|
5
5
|
Home-page: https://github.com/bandophahita/setup_selenium
|
6
6
|
License: MIT
|
@@ -21,10 +21,9 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
21
|
Provides-Extra: dev
|
22
22
|
Provides-Extra: test
|
23
23
|
Requires-Dist: black ; extra == "dev"
|
24
|
-
Requires-Dist: isort ; extra == "dev"
|
25
24
|
Requires-Dist: mypy ; extra == "dev"
|
26
25
|
Requires-Dist: pytest ; extra == "dev" or extra == "test"
|
27
|
-
Requires-Dist: ruff ; extra == "dev"
|
26
|
+
Requires-Dist: ruff (>=0.2.0) ; extra == "dev"
|
28
27
|
Requires-Dist: selenium (>=4.7.0)
|
29
28
|
Requires-Dist: semantic-version
|
30
29
|
Requires-Dist: tox ; extra == "dev" or extra == "test"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "setup-selenium-testing"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.6"
|
4
4
|
description = "Setup Selenium for automation testing"
|
5
5
|
authors = ["Marcel Wilson <trenchrats@gmail.com>"]
|
6
6
|
license = "MIT"
|
@@ -31,9 +31,8 @@ typing-extensions = "*"
|
|
31
31
|
pytest = {version="*", optional = true}
|
32
32
|
black = {version="*", optional = true}
|
33
33
|
mypy = {version="*", optional = true}
|
34
|
-
ruff = {version="
|
34
|
+
ruff = {version = ">=0.2.0", optional = true}
|
35
35
|
tox = {version="*", optional = true}
|
36
|
-
isort = {version = "*", optional = true}
|
37
36
|
|
38
37
|
[tool.poetry.extras]
|
39
38
|
dev = [
|
@@ -41,7 +40,6 @@ dev = [
|
|
41
40
|
"black",
|
42
41
|
"mypy",
|
43
42
|
"ruff",
|
44
|
-
"isort",
|
45
43
|
"tox",
|
46
44
|
]
|
47
45
|
test = [
|
@@ -50,15 +48,6 @@ test = [
|
|
50
48
|
]
|
51
49
|
|
52
50
|
|
53
|
-
[tool.isort]
|
54
|
-
line_length = 88
|
55
|
-
multi_line_output = 3
|
56
|
-
include_trailing_comma = "True"
|
57
|
-
use_parentheses = "True"
|
58
|
-
combine_as_imports = "True"
|
59
|
-
skip = [".idea", ".tox"]
|
60
|
-
|
61
|
-
|
62
51
|
[build-system]
|
63
52
|
requires = ["poetry-core>=1.2.0"]
|
64
53
|
build-backend = "poetry.core.masonry.api"
|
@@ -77,9 +66,36 @@ build-backend = "poetry.core.masonry.api"
|
|
77
66
|
|
78
67
|
|
79
68
|
[tool.ruff]
|
80
|
-
|
81
|
-
|
82
|
-
|
69
|
+
target-version = "py38"
|
70
|
+
line-length = 88
|
71
|
+
extend-exclude = [
|
72
|
+
".github",
|
73
|
+
".pytest_cache",
|
74
|
+
".venv",
|
75
|
+
"venv",
|
76
|
+
"dockerfiles",
|
77
|
+
"docs",
|
78
|
+
".coverage",
|
79
|
+
".coveragerc",
|
80
|
+
".env",
|
81
|
+
".env.example",
|
82
|
+
".flake8",
|
83
|
+
".gitignore",
|
84
|
+
"alembic.ini",
|
85
|
+
"bandit.yaml",
|
86
|
+
"docker-compose-dev.yaml",
|
87
|
+
"docker-compose-pro.yaml",
|
88
|
+
"Makefile",
|
89
|
+
"mkdocks.yml",
|
90
|
+
"mypy.ini",
|
91
|
+
"poetry.lock",
|
92
|
+
"pyproject.toml",
|
93
|
+
"pytest.ini",
|
94
|
+
"README.md",
|
95
|
+
".idea",
|
96
|
+
]
|
97
|
+
|
98
|
+
[tool.ruff.lint]
|
83
99
|
select = [
|
84
100
|
"A", # flake8-builtins
|
85
101
|
"ANN", # flake8-annotations # coming back to this one later to compare against mypy
|
@@ -163,43 +179,9 @@ ignore = [
|
|
163
179
|
"UP038", # Use `X | Y` in `isinstance` call instead of `(X, Y)`
|
164
180
|
]
|
165
181
|
|
166
|
-
# Same as Black.
|
167
|
-
line-length = 88
|
168
|
-
target-version = "py310"
|
169
|
-
|
170
|
-
exclude = [
|
171
|
-
".github",
|
172
|
-
".pytest_cache",
|
173
|
-
".venv",
|
174
|
-
"venv",
|
175
|
-
"dockerfiles",
|
176
|
-
"docs",
|
177
|
-
".coverage",
|
178
|
-
".coveragerc",
|
179
|
-
".env",
|
180
|
-
".env.example",
|
181
|
-
".flake8",
|
182
|
-
".gitignore",
|
183
|
-
"alembic.ini",
|
184
|
-
"bandit.yaml",
|
185
|
-
"docker-compose-dev.yaml",
|
186
|
-
"docker-compose-pro.yaml",
|
187
|
-
"Makefile",
|
188
|
-
"mkdocks.yml",
|
189
|
-
"mypy.ini",
|
190
|
-
"poetry.lock",
|
191
|
-
"pyproject.toml",
|
192
|
-
"pytest.ini",
|
193
|
-
"README.md",
|
194
|
-
".idea",
|
195
|
-
]
|
196
|
-
|
197
|
-
[tool.ruff.lint]
|
198
182
|
extend-safe-fixes = [
|
199
|
-
"EM101",
|
200
|
-
"EM102",
|
183
|
+
"EM101", "EM102",
|
201
184
|
"TCH001", "TCH002", "TCH003", "TCH004",
|
202
|
-
# "SIM108"
|
203
185
|
"C419",
|
204
186
|
"D200", "D205",
|
205
187
|
"PT003", "PT006", "PT018",
|
@@ -207,28 +189,24 @@ extend-safe-fixes = [
|
|
207
189
|
"UP007",
|
208
190
|
]
|
209
191
|
|
210
|
-
[tool.ruff.
|
192
|
+
[tool.ruff.lint.flake8-pytest-style]
|
193
|
+
mark-parentheses = false
|
194
|
+
|
195
|
+
[tool.ruff.lint.pycodestyle]
|
196
|
+
ignore-overlong-task-comments = true
|
197
|
+
|
198
|
+
[tool.ruff.lint.isort]
|
199
|
+
combine-as-imports = true
|
200
|
+
split-on-trailing-comma = false
|
201
|
+
|
202
|
+
[tool.ruff.lint.per-file-ignores]
|
211
203
|
"__init__.py" = ["F401"]
|
212
204
|
"tests/**" = [
|
213
205
|
"D", # we don't need public-API-polished docstrings in tests.
|
214
206
|
"FBT", # using a boolean as a test object is useful!
|
215
207
|
"PLR", # likewise using specific numbers and strings in tests.
|
216
208
|
]
|
217
|
-
|
218
|
-
[tool.ruff.isort]
|
219
|
-
combine-as-imports = true
|
220
|
-
split-on-trailing-comma = true
|
221
|
-
|
222
|
-
|
223
|
-
[tool.ruff.flake8-pytest-style]
|
224
|
-
mark-parentheses = false
|
225
|
-
|
226
|
-
|
227
|
-
[tool.ruff.pycodestyle]
|
228
|
-
ignore-overlong-task-comments = true
|
229
|
-
|
230
|
-
|
231
|
-
[tool.ruff.flake8-annotations]
|
209
|
+
[tool.ruff.lint.flake8-annotations]
|
232
210
|
# ignore returns types for functions that implicity or explicitly only return None
|
233
211
|
suppress-none-returning = true
|
234
212
|
allow-star-arg-any = true
|
@@ -0,0 +1 @@
|
|
1
|
+
from .setup_selenium import Browser, SetupSelenium, set_logger
|
@@ -8,7 +8,7 @@ import os as os
|
|
8
8
|
from enum import Enum
|
9
9
|
from typing import TYPE_CHECKING, Optional, Union
|
10
10
|
|
11
|
-
from selenium import webdriver
|
11
|
+
from selenium import __version__, webdriver
|
12
12
|
from selenium.common.exceptions import NoSuchWindowException, WebDriverException
|
13
13
|
from selenium.webdriver.chrome.service import Service as ChromeService
|
14
14
|
from selenium.webdriver.common.selenium_manager import SeleniumManager
|
@@ -28,6 +28,11 @@ if TYPE_CHECKING:
|
|
28
28
|
webdriver.FirefoxOptions, webdriver.ChromeOptions, webdriver.EdgeOptions
|
29
29
|
]
|
30
30
|
|
31
|
+
NEW_SELENIUM = False
|
32
|
+
if Version(__version__) >= Version("4.20.0"):
|
33
|
+
NEW_SELENIUM = True
|
34
|
+
|
35
|
+
|
31
36
|
__all__ = ["SetupSelenium"]
|
32
37
|
|
33
38
|
|
@@ -171,7 +176,11 @@ class SetupSelenium:
|
|
171
176
|
driver_version = driver_version or None
|
172
177
|
|
173
178
|
sm = SeleniumManager()
|
174
|
-
|
179
|
+
|
180
|
+
if NEW_SELENIUM:
|
181
|
+
args = [f"{sm._get_binary()}", "--browser", browser]
|
182
|
+
else:
|
183
|
+
args = [f"{sm.get_binary()}", "--browser", browser] # type: ignore[attr-defined]
|
175
184
|
|
176
185
|
if browser_version:
|
177
186
|
args.append("--browser-version")
|
@@ -187,7 +196,12 @@ class SetupSelenium:
|
|
187
196
|
args.append("--browser-path")
|
188
197
|
args.append(browser_path)
|
189
198
|
|
190
|
-
|
199
|
+
if NEW_SELENIUM:
|
200
|
+
args.append("--output")
|
201
|
+
args.append("json")
|
202
|
+
output = sm._run(args)
|
203
|
+
else:
|
204
|
+
output = sm.run(args) # type: ignore[attr-defined]
|
191
205
|
driver_path = output["driver_path"]
|
192
206
|
browser_path = output["browser_path"]
|
193
207
|
|
@@ -288,10 +302,14 @@ class SetupSelenium:
|
|
288
302
|
# log file. if we enable root logging, we can capture the logging from
|
289
303
|
# geckodriver, ourselves.
|
290
304
|
logpath = os.path.devnull
|
291
|
-
options.log.level = "fatal" # type: ignore[assignment]
|
292
305
|
if enable_log_driver:
|
293
306
|
lp = os.path.abspath(os.path.expanduser(log_dir))
|
294
307
|
logpath = os.path.join(lp, "geckodriver.log")
|
308
|
+
if not options.log.level:
|
309
|
+
options.log.level = "trace" # type: ignore[assignment]
|
310
|
+
|
311
|
+
if not options.log.level:
|
312
|
+
options.log.level = "fatal" # type: ignore[assignment]
|
295
313
|
|
296
314
|
if driver_path:
|
297
315
|
service = FirefoxService(
|
@@ -1 +0,0 @@
|
|
1
|
-
from .selenium_module import Browser, SetupSelenium, set_logger
|
File without changes
|
File without changes
|
File without changes
|