cucu 1.2.3__tar.gz → 1.2.4__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.

Potentially problematic release.


This version of cucu might be problematic. Click here for more details.

Files changed (94) hide show
  1. {cucu-1.2.3 → cucu-1.2.4}/PKG-INFO +12 -11
  2. {cucu-1.2.3 → cucu-1.2.4}/pyproject.toml +3 -3
  3. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/browser/selenium.py +7 -3
  4. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/config.py +8 -1
  5. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/templates/scenario.html +2 -2
  6. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/browser_steps.py +4 -4
  7. cucu-1.2.3/.gitignore +0 -191
  8. cucu-1.2.3/CHANGELOG.md +0 -424
  9. cucu-1.2.3/LICENSE +0 -32
  10. {cucu-1.2.3 → cucu-1.2.4}/README.md +0 -0
  11. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/__init__.py +0 -0
  12. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/ansi_parser.py +0 -0
  13. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/behave_tweaks.py +0 -0
  14. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/browser/__init__.py +0 -0
  15. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/browser/core.py +0 -0
  16. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/browser/frames.py +0 -0
  17. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/browser/selenium_tweaks.py +0 -0
  18. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/cli/__init__.py +0 -0
  19. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/cli/core.py +0 -0
  20. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/cli/run.py +0 -0
  21. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/cli/steps.py +0 -0
  22. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/cli/thread_dumper.py +0 -0
  23. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/edgedriver_autoinstaller/README.md +0 -0
  24. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/edgedriver_autoinstaller/__init__.py +0 -0
  25. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/edgedriver_autoinstaller/utils.py +0 -0
  26. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/environment.py +0 -0
  27. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/external/jquery/jquery-3.5.1.min.js +0 -0
  28. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/formatter/__init__.py +0 -0
  29. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/formatter/cucu.py +0 -0
  30. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/formatter/json.py +0 -0
  31. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/formatter/junit.py +0 -0
  32. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/fuzzy/__init__.py +0 -0
  33. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/fuzzy/core.py +0 -0
  34. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/fuzzy/fuzzy.js +0 -0
  35. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/helpers.py +0 -0
  36. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/hooks.py +0 -0
  37. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/.gitignore +0 -0
  38. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/README.md +0 -0
  39. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/cucurc.yml +0 -0
  40. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/data/www/example.html +0 -0
  41. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/cucurc.yml +0 -0
  42. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/environment.py +0 -0
  43. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/example.feature +0 -0
  44. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/lint_rules/sid.yaml +0 -0
  45. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/steps/__init__.py +0 -0
  46. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/init_data/features/steps/my_steps.py +0 -0
  47. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/language_server/__init__.py +0 -0
  48. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/language_server/core.py +0 -0
  49. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/lint/__init__.py +0 -0
  50. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/lint/linter.py +0 -0
  51. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/lint/rules/format.yaml +0 -0
  52. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/logger.py +0 -0
  53. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/matcher/__init__.py +0 -0
  54. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/matcher/core.py +0 -0
  55. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/page_checks.py +0 -0
  56. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/__init__.py +0 -0
  57. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/bootstrap.min.css +0 -0
  58. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/bootstrap.min.js +0 -0
  59. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/dataTables.bootstrap.min.css +0 -0
  60. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/dataTables.bootstrap.min.js +0 -0
  61. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/jquery-3.5.1.min.js +0 -0
  62. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/jquery.dataTables.min.js +0 -0
  63. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/external/popper.min.js +0 -0
  64. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/favicon.png +0 -0
  65. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/html.py +0 -0
  66. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/templates/feature.html +0 -0
  67. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/templates/flat.html +0 -0
  68. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/templates/index.html +0 -0
  69. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/reporter/templates/layout.html +0 -0
  70. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/__init__.py +0 -0
  71. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/base_steps.py +0 -0
  72. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/button_steps.py +0 -0
  73. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/checkbox_steps.py +0 -0
  74. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/command_steps.py +0 -0
  75. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/draggable_steps.py +0 -0
  76. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/dropdown_steps.py +0 -0
  77. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/file_input_steps.py +0 -0
  78. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/filesystem_steps.py +0 -0
  79. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/flow_control_steps.py +0 -0
  80. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/image_steps.py +0 -0
  81. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/input_steps.py +0 -0
  82. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/link_steps.py +0 -0
  83. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/menuitem_steps.py +0 -0
  84. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/platform_steps.py +0 -0
  85. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/radio_steps.py +0 -0
  86. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/section_steps.py +0 -0
  87. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/step_utils.py +0 -0
  88. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/tab_steps.py +0 -0
  89. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/table_steps.py +0 -0
  90. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/tables.js +0 -0
  91. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/text_steps.py +0 -0
  92. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/variable_steps.py +0 -0
  93. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/steps/webserver_steps.py +0 -0
  94. {cucu-1.2.3 → cucu-1.2.4}/src/cucu/utils.py +0 -0
@@ -1,23 +1,18 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: cucu
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Easy BDD web testing
5
- Project-URL: Homepage, https://github.com/dominodatalab/cucu/wiki
6
- Project-URL: Download, https://pypi.org/project/cucu/
7
- Project-URL: Source Code, https://github.com/dominodatalab/cucu
5
+ Keywords: cucumber,selenium,behave
6
+ Author: Domino Data Lab, Rodney Gomes, Cedric Young, Xin Dong, Kavya, Kevin Garton, Joy Liao
8
7
  Author-email: Domino Data Lab <open-source@dominodatalab.com>, Rodney Gomes <107359+rlgomes@users.noreply.github.com>, Cedric Young <4129217+ccedricyoung@users.noreply.github.com>, Xin Dong <104880864+ddl-xin@users.noreply.github.com>, Kavya <91882851+ddl-kavya@users.noreply.github.com>, Kevin Garton <71028750+ddl-kgarton@users.noreply.github.com>, Joy Liao <107583686+ddl-joy-liao@users.noreply.github.com>
9
- Maintainer-email: Domino Data Lab <open-source@dominodatalab.com>, Cedric Young <4129217+ccedricyoung@users.noreply.github.com>, Kevin Garton <71028750+ddl-kgarton@users.noreply.github.com>, Brian Colby <92048365+ddl-bcolby@users.noreply.github.com>
10
8
  License: The Clear BSD License
11
- License-File: LICENSE
12
- Keywords: behave,cucumber,selenium
13
9
  Classifier: Development Status :: 4 - Beta
14
10
  Classifier: Environment :: Console
15
11
  Classifier: Intended Audience :: Developers
16
12
  Classifier: License :: OSI Approved :: BSD License
17
- Classifier: Natural Language :: English
18
13
  Classifier: Operating System :: OS Independent
14
+ Classifier: Natural Language :: English
19
15
  Classifier: Topic :: Software Development :: Testing :: BDD
20
- Requires-Python: >=3.10
21
16
  Requires-Dist: beautifulsoup4~=4.13.3
22
17
  Requires-Dist: behave==1.2.6
23
18
  Requires-Dist: chromedriver-autoinstaller~=0.6.2
@@ -33,10 +28,16 @@ Requires-Dist: mpire~=2.10.2
33
28
  Requires-Dist: psutil>=6.0
34
29
  Requires-Dist: pygls~=1.3.1
35
30
  Requires-Dist: pyyaml~=6.0.1
36
- Requires-Dist: requests<3.0.0,>=2.31.0
31
+ Requires-Dist: requests>=2.31.0,<3.0.0
37
32
  Requires-Dist: selenium~=4.31
38
33
  Requires-Dist: tabulate~=0.9.0
39
34
  Requires-Dist: tenacity>=9.0
35
+ Maintainer: Domino Data Lab, Cedric Young, Kevin Garton, Brian Colby
36
+ Maintainer-email: Domino Data Lab <open-source@dominodatalab.com>, Cedric Young <4129217+ccedricyoung@users.noreply.github.com>, Kevin Garton <71028750+ddl-kgarton@users.noreply.github.com>, Brian Colby <92048365+ddl-bcolby@users.noreply.github.com>
37
+ Requires-Python: >=3.10
38
+ Project-URL: Download, https://pypi.org/project/cucu/
39
+ Project-URL: Homepage, https://github.com/dominodatalab/cucu/wiki
40
+ Project-URL: Source Code, https://github.com/dominodatalab/cucu
40
41
  Description-Content-Type: text/markdown
41
42
 
42
43
  [![pypi](https://img.shields.io/pypi/v/cucu.svg)](https://pypi.org/project/cucu/)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cucu"
3
- version = "1.2.3"
3
+ version = "1.2.4"
4
4
  description = "Easy BDD web testing"
5
5
  readme = "README.md"
6
6
  license = { text = "The Clear BSD License" }
@@ -65,8 +65,8 @@ Download = "https://pypi.org/project/cucu/"
65
65
  cucu = "cucu.cli:main"
66
66
 
67
67
  [build-system]
68
- requires = ["hatchling"]
69
- build-backend = "hatchling.build"
68
+ requires = ["uv_build>=0.7.19,<0.8.0"]
69
+ build-backend = "uv_build"
70
70
 
71
71
  [tool.hatch.build.targets.sdist]
72
72
  include = [
@@ -258,18 +258,22 @@ class Selenium(Browser):
258
258
  }
259
259
 
260
260
  def get_all_tabs_info(self):
261
+ window_handles = self.driver.window_handles
262
+ current_window = self.driver.current_window_handle
261
263
  tabs_info = []
262
- handles = self.driver.window_handles
263
- for idx, handle in enumerate(handles):
264
+
265
+ for handle in window_handles:
264
266
  self.driver.switch_to.window(handle)
265
267
  tabs_info.append(
266
268
  {
267
- "index": idx,
268
269
  "title": self.driver.title,
269
270
  "url": self.driver.current_url,
270
271
  }
271
272
  )
272
273
 
274
+ # Switch back to the original window
275
+ self.driver.switch_to.window(current_window)
276
+
273
277
  return tabs_info
274
278
 
275
279
  def back(self):
@@ -313,7 +313,14 @@ class Config(dict):
313
313
  v = f"'{v}'"
314
314
  config[k] = v
315
315
 
316
- return yaml.dump(config)
316
+ # Resolve non-atomic classes to their string representation
317
+ yaml.representer.SafeRepresenter.add_representer(
318
+ None,
319
+ lambda dumper, data: dumper.represent_scalar(
320
+ "tag:yaml.org,2002:str", str(data)
321
+ ),
322
+ )
323
+ return yaml.safe_dump(config)
317
324
 
318
325
 
319
326
  # global config object
@@ -75,7 +75,7 @@
75
75
  {% endif %}
76
76
  </td>
77
77
  <td style="text-align: right; margin-top: auto;" class="col-2">
78
- <pre style="display: inline; color: gray;">Offset and Duration (s)</pre>
78
+ <pre style="display: inline; color: gray;">Start Time and Duration (s)</pre>
79
79
  </td>
80
80
  </tr>
81
81
  {% for step in steps %}
@@ -88,7 +88,7 @@
88
88
  {% if step['result'] is defined %}
89
89
  {% set step_status = step['result']['status'] %}
90
90
  {% if step['result']['status'] == 'failed' or step['result']['status'] == 'passed' %}
91
- {% set step_timing = "{} for {:.3f}s".format(step["result"]["time_offset"].strftime("%H:%M:%S"), step["result"]["duration"]) %}
91
+ {% set step_timing = "{} for {:.3f}s".format(step["result"]["timestamp"].strftime("%H:%M:%S"), step["result"]["duration"]) %}
92
92
  {% set step_start = step["result"]["timestamp"] %}
93
93
  {% endif %}
94
94
  {% else %}
@@ -254,8 +254,8 @@ def save_browser_tabs_info_to_variable(ctx, variable):
254
254
  ctx.check_browser_initialized()
255
255
  tabs_info = ctx.browser.get_all_tabs_info()
256
256
  lst_tab_info = [
257
- f"tab({tab['index'] + 1}): {tab['title']}, url: {tab['url']}"
258
- for tab in tabs_info
257
+ f"tab({index + 1}): {tab['title']}, url: {tab['url']}"
258
+ for index, tab in enumerate(tabs_info)
259
259
  ]
260
260
  config.CONFIG[variable] = lst_tab_info
261
261
 
@@ -274,8 +274,8 @@ def list_current_browser_tab_info(ctx):
274
274
  def list_browser_tabs_info(ctx):
275
275
  ctx.check_browser_initialized()
276
276
  all_tabs_info = ctx.browser.get_all_tabs_info()
277
- for tab in all_tabs_info:
278
- tab_index = tab["index"] + 1
277
+ for index, tab in enumerate(all_tabs_info):
278
+ tab_index = index + 1
279
279
  title = tab["title"]
280
280
  url = tab["url"]
281
281
  print(f"\ntab({tab_index}): {title}\nurl: {url}\n")
cucu-1.2.3/.gitignore DELETED
@@ -1,191 +0,0 @@
1
- dist
2
- .cache
3
- .coverage.*
4
- .DS_Store
5
- *.egg-info
6
- htmlcov
7
- .nox
8
- .ruff_cache
9
- terraform.tfstate
10
- terraform.tfstate.backup
11
- .terraform
12
- .pytest_cache
13
- __pycache__
14
- *.pyc
15
- pygls.log
16
- junit_results/
17
- report/
18
- results/
19
- .monitor.png
20
- geckodriver.log
21
-
22
- # Byte-compiled / optimized / DLL files
23
- __pycache__/
24
- *.py[cod]
25
- *$py.class
26
-
27
- # C extensions
28
- *.so
29
-
30
- # Distribution / packaging
31
- .Python
32
- build/
33
- develop-eggs/
34
- dist/
35
- downloads/
36
- eggs/
37
- .eggs/
38
- lib/
39
- lib64/
40
- parts/
41
- sdist/
42
- var/
43
- wheels/
44
- share/python-wheels/
45
- *.egg-info/
46
- .installed.cfg
47
- *.egg
48
- MANIFEST
49
-
50
- ## COMMON - PYTHON (from https://github.com/github/gitignore/blob/main/Python.gitignore)
51
- # PyInstaller
52
- # Usually these files are written by a python script from a template
53
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
54
- *.manifest
55
- *.spec
56
-
57
- # Installer logs
58
- pip-log.txt
59
- pip-delete-this-directory.txt
60
-
61
- # Unit test / coverage reports
62
- htmlcov/
63
- .tox/
64
- .nox/
65
- .coverage
66
- .coverage.*
67
- .cache
68
- nosetests.xml
69
- coverage.xml
70
- coverage.json
71
- *.cover
72
- *.py,cover
73
- .hypothesis/
74
- .pytest_cache/
75
- cover/
76
-
77
- # Translations
78
- *.mo
79
- *.pot
80
-
81
- # Django stuff:
82
- local_settings.py
83
- db.sqlite3
84
- db.sqlite3-journal
85
-
86
- # Flask stuff:
87
- instance/
88
- .webassets-cache
89
-
90
- # Scrapy stuff:
91
- .scrapy
92
-
93
- # Sphinx documentation
94
- docs/_build/
95
-
96
- # PyBuilder
97
- .pybuilder/
98
- target/
99
-
100
- # Jupyter Notebook
101
- .ipynb_checkpoints
102
-
103
- # IPython
104
- profile_default/
105
- ipython_config.py
106
-
107
-
108
- # PEP 582; used by e.g. github.com/David-OConnor/pyflow
109
- __pypackages__/
110
-
111
- # Celery stuff
112
- celerybeat-schedule
113
- celerybeat.pid
114
-
115
- # SageMath parsed files
116
- *.sage.py
117
-
118
- # Environments
119
- .venv
120
- env/
121
- venv/
122
- ENV/
123
- env.bak/
124
- venv.bak/
125
-
126
- # Spyder project settings
127
- .spyderproject
128
- .spyproject
129
-
130
- # Rope project settings
131
- .ropeproject
132
-
133
- # mkdocs documentation
134
- /site
135
-
136
- # mypy
137
- .mypy_cache/
138
- .dmypy.json
139
- dmypy.json
140
-
141
- # Pyre type checker
142
- .pyre/
143
-
144
- # pytype static type analyzer
145
- .pytype/
146
-
147
- # Cython debug symbols
148
- cython_debug/
149
-
150
-
151
- ## COMMON - TERRAFORM (from https://github.com/github/gitignore/blob/main/Terraform.gitignore)
152
- # Local .terraform directories
153
- **/.terraform/*
154
-
155
- # .tfstate files
156
- *.tfstate
157
- *.tfstate.*
158
-
159
- # Crash log files
160
- crash.log
161
- crash.*.log
162
-
163
- # Exclude all .tfvars files, which are likely to contain sensitive data, such as
164
- # password, private keys, and other secrets. These should not be part of version
165
- # control as they are data points which are potentially sensitive and subject
166
- # to change depending on the environment.
167
- *.tfvars
168
- *.tfvars.json
169
-
170
- # Ignore override files as they are usually used to override resources locally and so
171
- # are not checked in
172
- override.tf
173
- override.tf.json
174
- *_override.tf
175
- *_override.tf.json
176
-
177
- # Include override files you do wish to add to version control using negated pattern
178
- # !example_override.tf
179
-
180
- # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
181
- # example: *tfplan*
182
-
183
- # Ignore CLI configuration files
184
- .terraformrc
185
- terraform.rc
186
-
187
- # VSCode
188
- .vscode
189
-
190
- # generated during test run
191
- skip_first_scenario.txt
cucu-1.2.3/CHANGELOG.md DELETED
@@ -1,424 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project closely adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## 1.2.3
9
- - Add - additional tab information steps
10
- - Change - retry open a browser
11
-
12
- ## 1.2.2
13
- - Chore - make lint also run ruff format --check
14
- - Add - tags command to list tags and affected scenario counts
15
- - Add - click parent label of an input element when the size of the input element is zero
16
-
17
- ## 1.2.1
18
- - Add - tab information to html report and cucu debug console log
19
-
20
- ## 1.2.0
21
- - Add - levels 2-4 to section step
22
- - Change - rename comment step to section step
23
- - Add - linting for section step
24
- - Change - min python to 3.10
25
-
26
- ## 1.1.2
27
- - Add - `cucu init` command to setup new projects
28
-
29
- ## 1.1.1
30
- - Chore - bump coverage lib from 7.6.12 to 7.8.0
31
- - Chore - change CI to not use experimental COVERAGE_CORE=sysmon
32
-
33
- ## 1.1.0
34
- - Add - now python 3.13 compatible
35
- - Change - use stdlib pdb instead of unsupported ipdb
36
- - Change - rename CUCU_IPDB_ON_FAILURE => to CUCU_DEBUG_ON_FAILURE
37
- - Chore - bump selenium lib to 4.31.0
38
-
39
- ## 1.0.13
40
- - Change - rename logger.warn to logger.warning
41
-
42
- ## 1.0.12
43
- - Chore - add coverage badge
44
- - Chore - add docs on dev automation
45
- - CI - fix renovate config
46
- - CI - change renovate to ignore python minor versions
47
- - CI - fix for bots
48
- - Chore - bump dep versions
49
-
50
- ## 1.0.11
51
- - Chore - bump psutil
52
-
53
- ## 1.0.10
54
- - Chore - change package homepage to wiki page
55
-
56
- ## 1.0.9
57
- - Chore - update for selenium 4.28
58
- - Chore - update CI with selenium docker images to 126
59
-
60
- ## 1.0.8
61
- - Chore - bump pypi publishing GH action version
62
-
63
- ## 1.0.7
64
- - Fix - stablize CI runs (increase workers, add envvar tweaks)
65
- - Fix - parse --workers correctly
66
- - Fix - Ctrl-C to terminate for multi-workers
67
- - Fix - ensure testing webserver is online
68
- - Change - use fork when not MacOS for multi-worker
69
- - Chore - bump jellyfish to 1.1.3
70
-
71
- ## 1.0.6
72
- - Chore - relax required versions for requests library
73
-
74
- ## 1.0.5
75
- - Fix - Resolved issues with the drag-and-drop feature to ensure compatibility with all input options.
76
-
77
- ## 1.0.4
78
- - Change - for retry steps, also log before and after call messages
79
-
80
- ## 1.0.3
81
- - Add - functional test for drag and drop file functionality
82
-
83
- ## 1.0.2
84
- - Chore - fix logo for pypi
85
-
86
- ## 1.0.1
87
- - Chore - fix pyproject.toml authors and urls
88
- - Change - add pre-commit to makefile
89
-
90
- ## 1.0.0
91
- - Change to 1.0.0!
92
- - Chore - fix GH workflow for test publish
93
-
94
- ## 0.207.0
95
- - Chore - prep for publish - p2
96
- - Replace poetry with uv
97
- - Set default local python to 3.12
98
- - Run pre-commit with uv
99
- - Fix isort with ruff
100
-
101
- ## 0.206.0
102
- - Chore - prep for publish
103
- - Replace black with ruff
104
- - Remove detect-secrets to be replaced by GH repo security
105
- - Remove bandit to be replaced by GH CodeQL
106
- - Cleanup makefile
107
-
108
- ## 0.205.0
109
- - Change - increase information logged for failing before_scenario_hooks
110
-
111
- ## 0.204.0
112
- - Chore - add gh workflows for publishing
113
- - Chore - fix project metadata
114
-
115
- ## 0.203.0
116
- - Chore - move repo GH org locations
117
- - Chore - remove sonarqube
118
-
119
- ## 0.202.0
120
- - Add - wait step to saving values from any table cells to a variable
121
-
122
- ## 0.201.0
123
- - Change - add report path to the JUnit files when available
124
-
125
- ## 0.200.0
126
- - Change - increase the log level of scheduling a feature file
127
-
128
- ## 0.199.0
129
- - Chore - remove deprecated CI
130
- - Chore - add PR template
131
-
132
- ## 0.198.0
133
- - Chore - add sonarqube
134
- - Chore - refactor circle config (config-drive executor, embed commands, move workflows up)
135
- - Chore - configure renovate
136
- - Chore - remove dependabot config (duplicates renovate)
137
- - Chore - remove safety (duplicates sonarqube)
138
- - Change - swap pebble for mpire, kill procs on run timeout
139
-
140
- ## 0.197.0
141
- - Fix - before all hooks are now executed
142
-
143
- ## 0.196.0
144
- - Fix - after scenario hook error message unintentionally replaces scenario error message
145
-
146
- ## 0.195.0
147
- - Fix - HTML report is generated into a wrong folder
148
- - Change - `&` is replaced in file name
149
- - Change - shortened feature name and scenario name are recorded in JUnit
150
-
151
- ## 0.194.0
152
- - Fix - Ignore exceptions while key in desired dynamic dropdown value
153
-
154
- ## 0.193.0
155
- - Change - Set default value of `CUCU_SKIP_HIGHLIGHT_BORDER` to `True`
156
-
157
- ## 0.192.0
158
- - Fix - test status should be independent of ‘mht data' and 'browser logs' download status.
159
-
160
- ## 0.191.0
161
- - Change - shorten fienames and paths, remove quotes, '{,},#' from file names.
162
-
163
- ## 0.190.0
164
- - Add - screenshot highlight on find functions
165
- - Change - highlight to be separate overlay element
166
- - Change - enable element border highlight be default
167
- - Change - enable CUCU_MONITOR_PNG by default
168
- - Chore - CI downgrade to python 3.11 for stability
169
- - Chore - CI unpin remote docker executor
170
- - Chore - bump packages
171
- | | Package | From | To |
172
- |--|--------------------------------------------------------------------|-----------|----------|
173
- | | [coverage](https://github.com/nedbat/coveragepy) | `7.4.2` | `7.4.3` |
174
- | | [importlib-metadata](https://github.com/python/importlib_metadata) | `6.11.0` | `7.0.1` |
175
- | | [black](https://github.com/psf/black) | `23.12.1` | `24.2.0` |
176
- | | [pytest](https://github.com/pytest-dev/pytest) | `7.4.4` | `8.0.2` |
177
- | | [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.2.2` |
178
- | | [safety](https://github.com/pyupio/safety) | `2.4.0b2` | `3.0.1` |
179
- | | bandit | `1.7.5` | `1.7.7` |
180
- | | jinja2 | `3.1.2` | `3.1.3` |
181
- - Chore - black format files
182
-
183
- ## 0.189.0
184
- - Change - after-hook failures will report as 'passed' instead of 'failed/errored' to testrail and html reports
185
-
186
- ## 0.188.0
187
- - Fix - how element size is gotten in fuzzy find
188
-
189
- ## 0.187.0
190
- - Fix - clearing input sometimes causes the input to be not interactable
191
-
192
- ## 0.186.0
193
- - Fix - handle mht data response that is not of type dictionary
194
-
195
- ## 0.185.0
196
- - Change - hook failures will report as 'errored' instead of 'failed' to testrail and html reports
197
-
198
- ## 0.184.0
199
- - Change - Added step duration to failure step
200
-
201
- ## 0.183.0
202
- - Change - Added ability to take multiple screenshots per step
203
-
204
- ## 0.182.0
205
- - Chore - Update docker README for ARM64 based CPU
206
- - Chore - Add seleniarm_hub bash file
207
-
208
- ## 0.181.0
209
- - Change - only obfuscate values in config yaml file
210
-
211
- ## 0.180.0
212
- - Change - only obfuscate certain parts in json output
213
-
214
- ## 0.179.0
215
- - Fix - step that expects to not see a table
216
-
217
- ## 0.178.0
218
- - Add - error message to json and junit
219
- - Change - print expected and found tables on fail
220
- - Chore - bump pebble
221
-
222
- ## 0.177.0
223
- - Fix - text regex steps mess up the fuzzy find js code
224
- - Chore - bump dependencies
225
- - Chore - update pip in CI pre-commit
226
- - Chore - group dependabot updates
227
-
228
- ## 0.176.0
229
- - Add - preliminary border injection behind feature flag
230
-
231
- ## 0.175.0
232
- - Change - left pad duration with zeroes for better alphabetical sorting in flat.html report
233
-
234
- ## 0.174.0
235
- - Chore - prevent secrets from being merged to main
236
- - Chore - stabilize CI by reducing workers
237
-
238
- ## 0.173.0
239
- - Add - functions and steps for dragging and dropping elements
240
- - Add - add helper function for two interacting elements
241
-
242
- ## 0.172.0
243
- - Add repository and homepage fields to solve an issue with pip/poetry failing to install this package.
244
-
245
- ## 0.171.0
246
- - Change - shorten image filenames for OS compatibiltiy
247
- - Add - enable install on python 3.12
248
- - Change - CI - use python 3.12
249
- - Change - CI - use selenium 117 images
250
- - Change - CI - chain jobs
251
- - Change - CI - pre-commit use smaller resource
252
- - Change - increase runtime-timeout values
253
-
254
- ## 0.170.0
255
- - Change - retry ElementNotInteractableException exception when clicking a dynamically generated dropdown option
256
-
257
- ## 0.169.0
258
- - Add - step and test for waiting until a table has a certain number of rows
259
-
260
- ## 0.168.0
261
- - Add - step and test for clicking a table column within a table row that has specified text
262
-
263
- ## 0.167.0
264
- - Fix - fuzzy JS code injection in web page redirection
265
-
266
- ## 0.166.0
267
- - Add - functions and steps for clicking a row in a table
268
-
269
- ## 0.165.0
270
- - Change - update dependencies
271
-
272
- ## 0.164.0
273
- - Change - improve colorized log html file
274
-
275
- ## 0.163.0
276
- - Change - enable color output in cucu logs when running in parallel
277
-
278
- ## 0.162.0
279
- - Fix - use absolute path when uploading files using drag and drop
280
-
281
- ## 0.161.0
282
- - Change - add .txt as browser console log file suffix
283
-
284
- ## 0.160.0
285
- - Add - drag and drop file upload step
286
-
287
- ## 0.159.0
288
- - Change - ignore exceptions from sub_headers hook
289
- - Security - update Certifi to remove e-Tugra root certificate
290
- - Change - use isinstance instead of direct type compare
291
-
292
- ## 0.158.0
293
- - Add - steps to handle dynamic dropdown
294
- - Change - improve the robustness of selecting options in a dropdown
295
- - Change - fuzzy find won't consider elements with either 0 width or 0 height
296
-
297
- ## 0.157.0
298
- - Add - differentiate between cucu built-in and custom steps
299
- ## 0.156.0
300
- - Add - option to only find web elements with the name inside in fuzzy find
301
- - Change - when finding dropdown options when the dropdown is not a select element, only considers name inside option
302
-
303
- ## 0.155.0
304
- - Add - timestamp tooltip to steps in html report
305
-
306
- ## 0.154.0
307
- - Add - steps to check if the nth button is disabled
308
-
309
- ## 0.153.0
310
- - Fix - js function fails because element text is undefined
311
-
312
- ## 0.152.0
313
- - Change - exact text match has higher priority in fuzzy find
314
- - Change - immediate sibling has higher priority in fuzzy find
315
-
316
- ## 0.151.0
317
- - Fix - standardize junit.xml names to match with feature names
318
-
319
- ## 0.150.0
320
- - Fix - standardize json and log file names to match with feature names
321
-
322
- ## 0.149.0
323
- - Fix - run_steps re-raise StopRetryException
324
-
325
- ## 0.148.0
326
- - Fix - step image filenames that have redacted secrets
327
-
328
- ## 0.147.0
329
- - Change - move config reload earlier
330
-
331
- ## 0.146.0
332
- - Add - reload saved scenario config in reporting
333
- - Change - report shows "flat.html" link in stdout
334
-
335
- ## 0.145.0
336
- - Fix - reporting when file names have secrets
337
-
338
- ## 0.144.0
339
- - Fix - preserve parent security CUCU_SECRETS setting
340
- - Change - ignore objects in hide_secrets
341
- - Change - skip secrets in config dump
342
-
343
- ## 0.143.0
344
- - Fix - fuzzy find detect text with padding for radio buttons
345
-
346
- ## 0.142.0
347
- - Change - hooks to LIFO order
348
-
349
- ## 0.141.0
350
- - Fix - runtime dependency
351
-
352
- ## 0.140.0
353
- - Add - favicon to HTML report
354
- - Add - save config per scenario
355
- - Change - enable MHT web page snapshot for all chrome scenarios
356
- - Dev - move hide_secrets into Config
357
- - Dev - update CI to use python 3.11
358
- - Dev - update CI to use selenium-standalone 114.0
359
-
360
- ## 0.139.0
361
- - Change - migrate to pygls 1.x
362
- - Change - move configs into pyproject.toml
363
- - Change - pyproject.toml author to ddl
364
- - Change - update packages
365
- - Dev - build remove unneeded upload artifacts
366
- - Dev - removed pyenv since using poetry
367
- - Fix - makefile test command
368
-
369
- ## 0.138.0
370
- - Change - cucu to load unique named jQuery
371
-
372
- ## 0.137.0
373
- - Add - MHT web page snapshot
374
- - Change - Output table indecies to stdout
375
-
376
- ## 0.136.0
377
- - Add - more debug logs in cucu steps
378
-
379
- ## 0.135.0
380
-
381
- Prep for packaging
382
-
383
- ### Add
384
- - add various project files
385
- - CHANGELOG.md
386
- - CODE_OF_CONDUCT.md
387
- - CONTRIBUTING.md - content moved from README.md
388
- - CONTRIBUTORS.md
389
- - LICENSE
390
- - logo.png
391
- - add dev tools
392
- - detect private keys in pre-commit
393
- - bandit secure patterns
394
- - isort linter
395
- - ruff linter
396
- - safety deps checker
397
-
398
- ### Change
399
- - change makefile
400
- - change tooling and pyproject.toml
401
- - add project classifiers
402
-
403
- ### Remove
404
- - remove unused libs (nox, retrying, strip-ansi, flake8)
405
- - remove noxfile.py
406
- - remove unused DESIGN.md
407
-
408
- ### Fix
409
- - fix many import sorts
410
-
411
- ### Secure
412
- - add bandit and safety
413
- - ignore with noseq for subprocess and html
414
-
415
- ----
416
- # Template
417
- ## [{version}]
418
-
419
- ### Add
420
- ### Change
421
- ### Deprecate
422
- ### Remove
423
- ### Fix
424
- ### Secure
cucu-1.2.3/LICENSE DELETED
@@ -1,32 +0,0 @@
1
- The Clear BSD License
2
-
3
- Copyright (c) 2023 "Domino Data Lab <open-source@dominodatalab.com>"
4
- All rights reserved.
5
-
6
- Redistribution and use in source and binary forms, with or without
7
- modification, are permitted (subject to the limitations in the disclaimer
8
- below) provided that the following conditions are met:
9
-
10
- * Redistributions of source code must retain the above copyright notice,
11
- this list of conditions and the following disclaimer.
12
-
13
- * Redistributions in binary form must reproduce the above copyright
14
- notice, this list of conditions and the following disclaimer in the
15
- documentation and/or other materials provided with the distribution.
16
-
17
- * Neither the name of the copyright holder nor the names of its
18
- contributors may be used to endorse or promote products derived from this
19
- software without specific prior written permission.
20
-
21
- NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY
22
- THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
23
- CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
25
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
26
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
29
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
30
- IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
- POSSIBILITY OF SUCH DAMAGE.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes