cucu 1.3.8__py3-none-any.whl → 1.3.10__py3-none-any.whl

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.

cucu/ansi_parser.py CHANGED
@@ -25,12 +25,13 @@ TRANSLATION = (
25
25
  ESC_SEQ + "55": "", # ignore HOME (num keypad)
26
26
  ESC_SEQ + "56": "", # ignore UP ARROW (num keypad)
27
27
  ESC_SEQ + "57": "", # ignore PAGE UP (num keypad)
28
+ ESC_SEQ + "1A": "", # ignore move cursor up one line
28
29
  }
29
30
  )
30
31
  RE_TO_HTML = re.compile("|".join(map(re.escape, TRANSLATION)))
31
32
 
32
33
  RE_TO_REMOVE = re.compile(
33
- r"\x1b\[(0;)?[0-9A-F]{1,2}m"
34
+ r"\x1b\[(0;)?[0-9A-F]{1,2}[mA]:?"
34
35
  ) # detect hex values, not just decimal digits
35
36
 
36
37
 
cucu/db.py CHANGED
@@ -123,16 +123,16 @@ class step(BaseModel):
123
123
  duration = FloatField(null=True)
124
124
  start_at = DateTimeField(null=True)
125
125
  end_at = DateTimeField(null=True)
126
- stdout = JSONField(null=True)
127
- stderr = JSONField(null=True)
126
+ stdout = JSONField()
127
+ stderr = JSONField()
128
128
  error_message = JSONField(null=True)
129
129
  exception = JSONField(null=True)
130
- debug_output = TextField(null=True)
131
- browser_info = JSONField(null=True)
130
+ debug_output = TextField()
131
+ browser_info = JSONField()
132
132
  text = JSONField(null=True)
133
133
  table_data = JSONField(null=True)
134
134
  location = TextField()
135
- browser_logs = TextField(null=True)
135
+ browser_logs = TextField()
136
136
  screenshots = JSONField(null=True)
137
137
 
138
138
 
@@ -213,6 +213,11 @@ def start_step_record(step_obj, scenario_run_id):
213
213
  is_substep=getattr(step_obj, "is_substep", False),
214
214
  has_substeps=getattr(step_obj, "has_substeps", False),
215
215
  section_level=getattr(step_obj, "section_level", None),
216
+ browser_info="",
217
+ browser_logs="",
218
+ debug_output="",
219
+ stderr=[],
220
+ stdout=[],
216
221
  )
217
222
 
218
223
 
cucu/formatter/junit.py CHANGED
@@ -10,6 +10,7 @@ from behave.model_core import Status
10
10
  from bs4.formatter import XMLFormatter
11
11
  from tenacity import RetryError
12
12
 
13
+ from cucu.ansi_parser import remove_ansi
13
14
  from cucu.config import CONFIG
14
15
  from cucu.utils import ellipsize_filename
15
16
 
@@ -286,7 +287,8 @@ class CucuJUnitFormatter(Formatter):
286
287
  if scenario["failure"] is not None:
287
288
  failure_message = "\n".join(scenario["failure"])
288
289
  failure = bs4.Tag(name="failure")
289
- failure.append(bs4.CData(failure_message))
290
+ cleaned_failure_message = remove_ansi(failure_message)
291
+ failure.append(bs4.CData(cleaned_failure_message))
290
292
  testcase.append(failure)
291
293
 
292
294
  if scenario["skipped"] is not None:
cucu/formatter/rundb.py CHANGED
@@ -132,6 +132,8 @@ class RundbFormatter(Formatter):
132
132
  def scenario(self, scenario):
133
133
  """Called before a scenario is executed (or ScenarioOutline scenarios)."""
134
134
  self._finish_scenario()
135
+ # Set after CONFIG.restore() in environment.before_scenario()
136
+ CONFIG["FEATURE_RUN_ID"] = scenario.feature.feature_run_id
135
137
 
136
138
  self.this_scenario = scenario
137
139
  self.this_steps = []
@@ -139,7 +141,9 @@ class RundbFormatter(Formatter):
139
141
  scenario_run_id_seed = (
140
142
  f"{scenario.feature.feature_run_id}_{time.perf_counter()}"
141
143
  )
142
- scenario.scenario_run_id = generate_short_id(scenario_run_id_seed)
144
+ CONFIG["SCENARIO_RUN_ID"] = scenario.scenario_run_id = (
145
+ generate_short_id(scenario_run_id_seed)
146
+ )
143
147
  scenario.custom_data = {}
144
148
 
145
149
  # feature.scenarios is a mix of Scenario and ScenarioOutline objects with their own scenarios list
cucu/fuzzy/core.py CHANGED
@@ -97,6 +97,7 @@ def find(
97
97
  str(index),
98
98
  str(direction.value),
99
99
  name_within_thing,
100
+ "true"
100
101
  ]
101
102
 
102
103
  def execute_fuzzy_find():
@@ -104,4 +105,9 @@ def find(
104
105
  script = f"return cucu.fuzzy_find({','.join(args)});"
105
106
  return browser.execute(script)
106
107
 
107
- return search_in_all_frames(browser, execute_fuzzy_find)
108
+ fuzzy_return = search_in_all_frames(browser, execute_fuzzy_find)
109
+ if fuzzy_return is None:
110
+ logger.info("Fuzzy found no element.")
111
+ return None
112
+ logger.info("Fuzzy found element by search term {}".format(fuzzy_return[1]))
113
+ return fuzzy_return[0]
cucu/fuzzy/fuzzy.js CHANGED
@@ -54,13 +54,15 @@
54
54
  things,
55
55
  index=0,
56
56
  direction=LEFT_TO_RIGHT,
57
- name_within_thing=false) {
57
+ name_within_thing=false,
58
+ insert_label=false) {
58
59
  var elements = [];
60
+ var element_labels = [];
59
61
  var results = null;
60
62
  var attributes = ['aria-label', 'title', 'placeholder', 'value'];
61
63
  var matchers = ['has_text', 'contains'];
62
64
 
63
- name = name.replaceAll('"', '\\"')
65
+ name = name.replaceAll('"', '\\"');
64
66
 
65
67
  /*
66
68
  * try to match on exact text but ultimately fall back to matching on
@@ -75,24 +77,27 @@
75
77
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
76
78
  var thing = things[tIndex];
77
79
 
78
- /*
79
- * <thing>name</thing>
80
- */
81
- results = jqCucu(thing + ':vis:' + matcher + '("' + name + '")', document.body).toArray();
82
- if (cucu.debug) { console.log('<thing>name</thing>', results); }
80
+ var nameInTagContentLabel = `<${thing}>${name}</${thing}>`;
81
+ var nameInTagContentJq = `${thing}:vis:${matcher}("${name}")`;
82
+ results = jqCucu(nameInTagContentJq, document.body).toArray();
83
+ if (cucu.debug) { console.log(nameInTagContentLabel, results); }
83
84
  elements = elements.concat(results);
85
+ element_labels = element_labels.concat(results.map(x => nameInTagContentLabel));
84
86
 
85
- // <thing attribute="name"></thing>
86
87
  for(var aIndex=0; aIndex < attributes.length; aIndex++) {
87
88
  var attribute_name = attributes[aIndex];
89
+ var nameIsAttributeLabel = `<${thing} attribute="${attribute_name}"></${thing}>`;
88
90
  if (matcher == 'has_text') {
89
- results = jqCucu(thing + '[' + attribute_name + '="' + name + '"]:vis', document.body).toArray();
90
- if (cucu.debug) { console.log('<thing attribute="name"></thing>', results); }
91
+ var nameIsAttributeJq = `${thing}[${attribute_name}="${name}"]:vis`;
92
+ results = jqCucu(nameIsAttributeJq, document.body).toArray();
93
+ if (cucu.debug) { console.log(nameIsAttributeLabel, results); }
91
94
  } else if (matcher == 'contains') {
92
- results = jqCucu(thing + '[' + attribute_name + '*="' + name + '"]:vis', document.body).toArray();
93
- if (cucu.debug) { console.log('<thing attribute*="name"></thing>', results); }
95
+ var nameInAttributeJq = `${thing}[${attribute_name}*="${name}"]:vis`;
96
+ results = jqCucu(nameInAttributeJq, document.body).toArray();
97
+ if (cucu.debug) { console.log(nameIsAttributeLabel, results); }
94
98
  }
95
99
  elements = elements.concat(results);
100
+ element_labels = element_labels.concat(results.map(x => nameIsAttributeLabel));
96
101
  }
97
102
  }
98
103
 
@@ -107,38 +112,44 @@
107
112
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
108
113
  var thing = things[tIndex];
109
114
 
110
- // <thing value="name"></thing>
111
115
  if (matcher == 'has_text') {
112
- results = jqCucu(thing + ':vis', document.body).filter(function(){
116
+ var nameIsValueLabel = `${thing} value="${name}"></${thing}>`;
117
+ var nameIsValueJq = `${thing}:vis`;
118
+ results = jqCucu(nameInValueJq, document.body).filter(function(){
113
119
  return this.value == name;
114
120
  }).toArray();
115
- if (cucu.debug) { console.log('<thing value="name"></thing>', results); }
121
+ if (cucu.debug) { console.log(nameIsValueLabel, results); }
116
122
  } else if (matcher == 'contains') {
117
- results = jqCucu(thing + ':vis', document.body).filter(function(){
123
+ var nameInValueLabel = `${thing} value*="${name}"></${thing}>`;
124
+ var nameInValueJq = `${thing}:vis`;
125
+ results = jqCucu(nameInValueJq, document.body).filter(function(){
118
126
  return this.value !== undefined && String(this.value).indexOf(name) != -1;
119
127
  }).toArray();
120
- if (cucu.debug) { console.log('<thing value*="name"></thing>', results); }
128
+ if (cucu.debug) { console.log(nameInValueLabel, results); }
121
129
  }
122
130
  elements = elements.concat(results);
131
+ element_labels = element_labels.concat(results.map(x => nameInValueLabel));
123
132
  }
124
133
 
125
134
  /*
126
135
  * element labeled by another using the for/id attributes
127
136
  */
128
- var labels = jqCucu('*[for]:vis:' + matcher + '("' + name + '")', document.body).toArray();
137
+ var labelForNameJq = `*[for]:vis:${matcher}("${name}")`
138
+ var labels = jqCucu(labelForNameJq, document.body).toArray();
129
139
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
130
140
  var thing = things[tIndex];
131
141
  results = [];
132
142
 
133
- /*
134
- * <* for=...>name</*>...<thing id=...></thing>
135
- */
143
+ var labelForNameLabel = `<* for=...>${name}</*>...<${thing} id=...></${thing}>`;
136
144
  for(var lIndex=0; lIndex < labels.length; lIndex++) {
137
145
  var label = labels[lIndex];
138
146
  var id = label.getAttribute('for');
139
- results = jqCucu(thing + '[id="' + id + '"]:vis', document.body).toArray();
140
- if (cucu.debug) { console.log('<* for=...>name</*>...<thing id=...></thing>', results); }
147
+ var idMatchesForLabelJq = `${thing}[id="${id}"]:vis`;
148
+ results = jqCucu(idMatchesForLabelJq, document.body).toArray();
149
+
150
+ if (cucu.debug) { console.log(labelForNameLabel, results); }
141
151
  elements = elements.concat(results);
152
+ element_labels = element_labels.concat(results.map(x => labelForNameLabel));
142
153
  }
143
154
  }
144
155
 
@@ -148,19 +159,23 @@
148
159
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
149
160
  var thing = things[tIndex];
150
161
 
151
- /*
152
- * <thing><*>...name...</*></thing>
153
- */
162
+ var nameInNestedChildLabel = `<${thing}><*>...${name}...</*></${thing}>`;
154
163
  results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).parents(thing).toArray();
155
- if (cucu.debug) { console.log('<thing><*>...name...</*></thing>', results); }
164
+ if (cucu.debug) { console.log(nameInNestedChildLabel, results); }
156
165
  elements = elements.concat(results);
166
+ if (results.length > 0) {
167
+ console.log('!*!*!* Found element labeled by nested child!');
168
+ console.log(`!*!*!* elements: ${elements}`);
169
+ }
170
+ element_labels = element_labels.concat(results.map(x => nameInNestedChildLabel));
157
171
 
158
- // <thing><* attribute="name"></*></thing>
159
172
  for(var aIndex=0; aIndex < attributes.length; aIndex++) {
160
173
  var attribute_name = attributes[aIndex];
161
- results = jqCucu('*:vis[' + attribute_name + '="' + name + '"]', document.body).parents(thing).toArray();
162
- if (cucu.debug) { console.log('<thing><* attibute="name"></*></thing>', results); }
174
+ var innerNestedElementsLabel = `<${thing}><* ${attribute_name}="${name}"></*></${thing}>`;
175
+ results = jqCucu(`*:vis[${attribute_name}="${name}"]`, document.body).parents(thing).toArray();
176
+ if (cucu.debug) { console.log(innerNestedElementsLabel, results); }
163
177
  elements = elements.concat(results);
178
+ element_labels = element_labels.concat(results.map(x => innerNestedElementsLabel));
164
179
  }
165
180
  }
166
181
 
@@ -174,10 +189,11 @@
174
189
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
175
190
  var thing = things[tIndex];
176
191
 
177
- // <*>name</*><thing/>
178
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).next(thing + ':vis').toArray();
179
- if (cucu.debug) { console.log('<*>name</*><thing/>', results); }
192
+ var nameIsPreviousSiblingLabel = `<*>${name}</*><${thing}/>`;
193
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).next(thing + ':vis').toArray();
194
+ if (cucu.debug) { console.log(nameIsPreviousSiblingLabel, results); }
180
195
  elements = elements.concat(results);
196
+ element_labels = element_labels.concat(results.map(x => nameIsPreviousSiblingLabel));
181
197
  }
182
198
  }
183
199
 
@@ -186,10 +202,11 @@
186
202
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
187
203
  var thing = things[tIndex];
188
204
 
189
- // <thing/><*>name</*>
190
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).prev(thing).toArray();
191
- if (cucu.debug) { console.log('<thing/><*>name</*>', results); }
205
+ var nameIsNextSiblingLabel = `<${thing}/><*>${name}</*>`;
206
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).prev(thing).toArray();
207
+ if (cucu.debug) { console.log(nameIsNextSiblingLabel, results); }
192
208
  elements = elements.concat(results);
209
+ element_labels = element_labels.concat(results.map(x => nameIsNextSiblingLabel));
193
210
  }
194
211
  }
195
212
 
@@ -199,12 +216,11 @@
199
216
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
200
217
  var thing = things[tIndex];
201
218
 
202
- /*
203
- * <*><thing></thing>name</*>
204
- */
205
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).children(thing + ':vis').toArray();
206
- if (cucu.debug) { console.log('<*><thing></thing>name</*>', results); }
219
+ var nameIsTextSiblingLabel = `<*><${thing}></${thing}>${name}</*>`;
220
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).children(thing + ':vis').toArray();
221
+ if (cucu.debug) { console.log(nameIsTextSiblingLabel, results); }
207
222
  elements = elements.concat(results);
223
+ element_labels = element_labels.concat(results.map(x => nameIsTextSiblingLabel));
208
224
  }
209
225
 
210
226
  // element labeled with any previous sibling
@@ -212,17 +228,19 @@
212
228
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
213
229
  var thing = things[tIndex];
214
230
 
215
- // <*>name</*>...<thing>...
216
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).nextAll(thing + ':vis').toArray();
217
- if (cucu.debug) { console.log('<*>name</*>...<thing>...', results); }
231
+ var leftToRightLabel = `<*>${name}</*>...<${thing}>...`;
232
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).nextAll(thing + ':vis').toArray();
233
+ if (cucu.debug) { console.log(leftToRightLabel, results); }
218
234
  elements = elements.concat(results);
235
+ element_labels = element_labels.concat(results.map(x => leftToRightLabel));
219
236
 
220
- // <...><*>name</*></...>...<...><thing></...>
237
+ var leftToRightGrandpaLabel = `<...><*>${name}</*></...>...<...><${thing}></...>`;
221
238
  // XXX: this rule is horribly complicated and I'd rather see it gone
222
239
  // basically: common great grandpranet
223
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).nextAll().find(thing + ':vis').toArray();
224
- if (cucu.debug) { console.log('<...><*>name</*></...>...<...><thing></...>', results); }
240
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).nextAll().find(thing + ':vis').toArray();
241
+ if (cucu.debug) { console.log(leftToRightGrandpaLabel, results); }
225
242
  elements = elements.concat(results);
243
+ element_labels = element_labels.concat(results.map(x => leftToRightGrandpaLabel));
226
244
  }
227
245
  }
228
246
 
@@ -231,22 +249,29 @@
231
249
  for(var tIndex = 0; tIndex < things.length; tIndex++) {
232
250
  var thing = things[tIndex];
233
251
 
234
- // next siblings: <thing>...<*>name</*>...
235
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).prevAll(thing).toArray();
236
- if (cucu.debug) { console.log('<thing>...<*>name</*>...', results); }
252
+ var rightToLeftLabel = `<${thing}>...<*>${name}</*>...`;
253
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).prevAll(thing).toArray();
254
+ if (cucu.debug) { console.log(rightToLeftLabel, results); }
237
255
  elements = elements.concat(results);
256
+ element_labels = element_labels.concat(results.map(x => rightToLeftLabel));
238
257
 
239
- // <...><thing></...>...<...><*>name</*></...>
258
+ var rightToLeftGrandpaLabel = `<...><${thing}></...>...<...><*>${name}</*></...>`;
240
259
  // XXX: this rule is horribly complicated and I'd rather see it gone
241
- results = jqCucu('*:vis:' + matcher + '("' + name + '")', document.body).prevAll().find(thing + ':vis').toArray();
242
- if (cucu.debug) { console.log('<...><thin></...>...<...><*>name</*></...>', results); }
260
+ results = jqCucu(`*:vis:${matcher}("${name}")`, document.body).prevAll().find(thing + ':vis').toArray();
261
+ if (cucu.debug) { console.log(rightToLeftGrandpaLabel, results); }
243
262
  elements = elements.concat(results);
263
+ element_labels = element_labels.concat(results.map(x => rightToLeftGrandpaLabel));
244
264
  }
245
265
  }
246
266
  }
247
267
 
248
268
  if (cucu.debug) {
249
269
  console.log(elements);
270
+ console.log(element_labels);
271
+ }
272
+
273
+ if (elements.length > 0 && insert_label) {
274
+ return [elements[index], element_labels[index]];
250
275
  }
251
276
  return elements[index];
252
277
  };
@@ -87,6 +87,9 @@
87
87
  {% endif %}
88
88
  {% if step['result'] is defined %}
89
89
  {% set step_status = step['result']['status'] %}
90
+ {% if step['result']['status'] == 'skipped' %}
91
+ {% set step_status = 'untested' %}
92
+ {% endif %}
90
93
  {% if step['result']['status'] in ('failed', 'passed') and step["result"]["timestamp"] %}
91
94
  {% set step_timing = "{} for {:.3f}s".format(step["result"]["timestamp"].strftime("%H:%M:%S"), step["result"]["duration"]) %}
92
95
  {% set step_start = step["result"]["timestamp"] %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: cucu
3
- Version: 1.3.8
3
+ Version: 1.3.10
4
4
  Summary: Easy BDD web testing
5
5
  Keywords: cucumber,selenium,behave
6
6
  Author: Domino Data Lab, Rodney Gomes, Cedric Young, Xin Dong, Kavya Yakkati, Kevin Garton, Joy Liao
@@ -1,5 +1,5 @@
1
1
  cucu/__init__.py,sha256=YtuajsJBj3_DgNoygHen9gKojeQF523Oc27kyCUzoG0,1013
2
- cucu/ansi_parser.py,sha256=_yTlqr6KruLsqgWR6BkpJUC3bmlQy_9JbkuxFx6Jrbo,2213
2
+ cucu/ansi_parser.py,sha256=gjAWBShqsm0GFdJWv8ptsN8he4HgaT18E7GNl3Po46o,2280
3
3
  cucu/behave_tweaks.py,sha256=MqIL9BDHMvmyXyzkVGbD3wd8IP38_8pgp3NPGDWudm8,6873
4
4
  cucu/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cucu/browser/core.py,sha256=Ixcqr8l4xshzdW4AKcl1IkH98xHwRYsbt4snV7wUDlo,2692
@@ -12,7 +12,7 @@ cucu/cli/run.py,sha256=XIGIACPieywM5Mi3k_CycM9eiRElzGNZdHlV0_TDSVY,6118
12
12
  cucu/cli/steps.py,sha256=lg5itVH_C-0_3RelWXv9X2qQUHggdxuxLCGwH5l1bf4,4210
13
13
  cucu/cli/thread_dumper.py,sha256=Z3XnYSxidx6pqjlQ7zu-TKMIYZWk4z9c5YLdPkcemiU,1593
14
14
  cucu/config.py,sha256=5AE6GrkqzjNhzzrB-eZrINgeztV7CCGuSdWJ-5GtWhk,14939
15
- cucu/db.py,sha256=iJ5NXECcqVbPdqozuQrdRGpCX1EgEENwDEGEsLUxpRs,14513
15
+ cucu/db.py,sha256=0aT4h1hGeToIBXlPoxkuB7dBpQ3lMlUHWfq-J3WJINA,14581
16
16
  cucu/edgedriver_autoinstaller/README.md,sha256=tDkAWIqgRdCjt-oX1nYqikIC_FfiOEM2-pc5S5VbRLo,84
17
17
  cucu/edgedriver_autoinstaller/__init__.py,sha256=fo6xJJPvcc5Xvni8epXfxDoPxJH5_b6Vk2jD9JTwfRs,969
18
18
  cucu/edgedriver_autoinstaller/utils.py,sha256=iRKTww77CGaTAntt_QDvxlKPxpMU4otx95OeD97khcM,6802
@@ -21,11 +21,11 @@ cucu/external/jquery/jquery-3.5.1.min.js,sha256=9_aliU8dGd2tb6OSsuzixeV4y_faTqgF
21
21
  cucu/formatter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  cucu/formatter/cucu.py,sha256=NRLFsd6xl3uwUk45ihKN2OEioOeAqeTURrcQgscDGnU,9351
23
23
  cucu/formatter/json.py,sha256=fJ1dZBGwYD4OkhQFDE49MRKGNzsrhDzQYq-dUfsYh94,10589
24
- cucu/formatter/junit.py,sha256=aJ9dGLbamMH-wUi_msF66_-_c_YUq07-8_wCNEjUju4,10129
25
- cucu/formatter/rundb.py,sha256=7gKVPbSg7bCuAt972XRs5vRjeowLzVZPaOHCIxUazrE,7668
24
+ cucu/formatter/junit.py,sha256=dCyS47iHOqn5AZjsRpWCsDRkxxJ67IZy3wIlE5jjhoM,10249
25
+ cucu/formatter/rundb.py,sha256=dKNlD-LXmrJ1Gm4OHI7Cs49eMuBGlBfwLz7NLISF5sg,7857
26
26
  cucu/fuzzy/__init__.py,sha256=ce4JRmaBF6oab6U99Qbpt7DrD3elhH32__-ND6fw5xc,104
27
- cucu/fuzzy/core.py,sha256=tmQKX_Ni-2ohoxzctRUg2x7zMeEW8MlJJmpU3PfTmvQ,3153
28
- cucu/fuzzy/fuzzy.js,sha256=ee-TytISLyUo7cMAkuVI5qbLXdt0eoFWczTsoU4zYhg,11618
27
+ cucu/fuzzy/core.py,sha256=-H2xL0d1LmH9G_34GvLby7fr3o2sRlXUFsDml0cSG58,3380
28
+ cucu/fuzzy/fuzzy.js,sha256=7ppPmR8szoEQ2rfIsyTmtYDgTrNwXrP_g11y-qEITGk,13882
29
29
  cucu/helpers.py,sha256=l_YMmbuXjtBRo-MER-qe6soUIyjt0ey2BoSgWs4zYwA,36285
30
30
  cucu/hooks.py,sha256=3Z1mavU42XMQ0DZ7lVWwTB-BJYHRyYUOzzOtmkdIsow,7117
31
31
  cucu/init_data/.gitignore,sha256=FgMovmORdGgSvRH6EoFK6ch_EyCMyQof61yamXG0P50,137
@@ -61,7 +61,7 @@ cucu/reporter/templates/feature.html,sha256=IBkwGiul-sRO5lT8q8VFXMUJx1owsAd1YbdD
61
61
  cucu/reporter/templates/flat.html,sha256=JGsMq-IWz6YUpJX9hcN65-15HxcX3NJclOmMDtW3HZE,2358
62
62
  cucu/reporter/templates/index.html,sha256=xgPYNU-sozN-iOaEzyymoQ4LDRI75eHXngbAP0xDYls,2770
63
63
  cucu/reporter/templates/layout.html,sha256=2iDRbm8atO8mgHWgijIvDCrBMKvcP6YHrmr95WtJiE4,4561
64
- cucu/reporter/templates/scenario.html,sha256=Vo1s95qr4_cK1nPREp01lC0f1CHOhPDKAVorkuKiPJU,10974
64
+ cucu/reporter/templates/scenario.html,sha256=zxVCBLHqaeai6mcRGbpXmREvNeSAyQrygXLzdF30xb0,11120
65
65
  cucu/steps/__init__.py,sha256=seSmASBlWu6-6wbFbvEbPwigBcRXiYP18C4X_2cW8Ng,753
66
66
  cucu/steps/base_steps.py,sha256=0fPvdaKoan8lMAKrDnK0-zrALpxm11P1zVAY5CN7iXA,1893
67
67
  cucu/steps/browser_steps.py,sha256=iTRl5ffpf2YrFk5qh655WFHAeSOwoE3HFhmXhjsZtao,12687
@@ -88,7 +88,7 @@ cucu/steps/text_steps.py,sha256=Jj_GHoHeemNwVdUOdqcehArNp7WM-WMjljA4w0pLXuw,2576
88
88
  cucu/steps/variable_steps.py,sha256=WSctH3_xcxjijGPYZlxp-foC_SIAAKtF__saNtgZJbk,2966
89
89
  cucu/steps/webserver_steps.py,sha256=wWkpSvcSMdiskPkh4cqlepWx1nkvEpTU2tRXQmPDbyo,1410
90
90
  cucu/utils.py,sha256=LCcs8sMzvdvH05N8P5QYO4lO6j-_PQC530mEAD96go8,10957
91
- cucu-1.3.8.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
92
- cucu-1.3.8.dist-info/entry_points.txt,sha256=11WRIhQM7LuUnQg1lAoZQoNvvBvYNN1maDgQS4djwJo,40
93
- cucu-1.3.8.dist-info/METADATA,sha256=Q0no8PrSLllg8AYZP4lAVH10CmInJt2p2bEhwhDgUYw,16721
94
- cucu-1.3.8.dist-info/RECORD,,
91
+ cucu-1.3.10.dist-info/WHEEL,sha256=-neZj6nU9KAMg2CnCY6T3w8J53nx1kFGw_9HfoSzM60,79
92
+ cucu-1.3.10.dist-info/entry_points.txt,sha256=11WRIhQM7LuUnQg1lAoZQoNvvBvYNN1maDgQS4djwJo,40
93
+ cucu-1.3.10.dist-info/METADATA,sha256=9dT2yBir4G_XbcEOLVUidh5wQK0ukiNvM3x4EVy-mZo,16722
94
+ cucu-1.3.10.dist-info/RECORD,,
File without changes