Kea2-python 1.1.3b0__tar.gz → 1.1.3b1__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.
Files changed (67) hide show
  1. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/PKG-INFO +1 -1
  2. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/PKG-INFO +1 -1
  3. kea2_python-1.1.3b1/kea2/assets/fastbot_libs/arm64-v8a/libfastbot_native.so +0 -0
  4. kea2_python-1.1.3b1/kea2/assets/fastbot_libs/armeabi-v7a/libfastbot_native.so +0 -0
  5. kea2_python-1.1.3b1/kea2/assets/fastbot_libs/x86/libfastbot_native.so +0 -0
  6. kea2_python-1.1.3b1/kea2/assets/fastbot_libs/x86_64/libfastbot_native.so +0 -0
  7. kea2_python-1.1.3b1/kea2/assets/monkeyq.jar +0 -0
  8. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/bug_report_generator.py +2 -3
  9. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/templates/bug_report_template.html +33 -1
  10. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/widget_coverage.py +18 -18
  11. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/pyproject.toml +1 -1
  12. kea2_python-1.1.3b0/kea2/assets/fastbot_libs/arm64-v8a/libfastbot_native.so +0 -0
  13. kea2_python-1.1.3b0/kea2/assets/fastbot_libs/armeabi-v7a/libfastbot_native.so +0 -0
  14. kea2_python-1.1.3b0/kea2/assets/fastbot_libs/x86/libfastbot_native.so +0 -0
  15. kea2_python-1.1.3b0/kea2/assets/fastbot_libs/x86_64/libfastbot_native.so +0 -0
  16. kea2_python-1.1.3b0/kea2/assets/monkeyq.jar +0 -0
  17. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/SOURCES.txt +0 -0
  18. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/dependency_links.txt +0 -0
  19. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/entry_points.txt +0 -0
  20. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/requires.txt +0 -0
  21. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/Kea2_python.egg-info/top_level.txt +0 -0
  22. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/LICENSE +0 -0
  23. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/README.md +0 -0
  24. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/__init__.py +0 -0
  25. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/adbUtils.py +0 -0
  26. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/config_version.json +0 -0
  27. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot-thirdpart.jar +0 -0
  28. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/abl.strings +0 -0
  29. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/awl.strings +0 -0
  30. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/max.config +0 -0
  31. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/max.fuzzing.strings +0 -0
  32. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/max.schema.strings +0 -0
  33. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/max.strings +0 -0
  34. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/max.tree.pruning +0 -0
  35. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/teardown.py +0 -0
  36. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/fastbot_configs/widget.block.py +0 -0
  37. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/framework.jar +0 -0
  38. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/kea2-thirdpart.jar +0 -0
  39. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/assets/quicktest.py +0 -0
  40. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/cli.py +0 -0
  41. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fastbotManager.py +0 -0
  42. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fastbotx/ActivityTimes.py +0 -0
  43. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fastbotx/ReuseEntry.py +0 -0
  44. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fastbotx/ReuseModel.py +0 -0
  45. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fastbotx/__init__.py +0 -0
  46. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fbm_parser.py +0 -0
  47. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/fs_lock.py +0 -0
  48. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/kea2_api.py +0 -0
  49. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/keaUtils.py +0 -0
  50. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/kea_launcher.py +0 -0
  51. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/logWatcher.py +0 -0
  52. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/mixin.py +0 -0
  53. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/__init__.py +0 -0
  54. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/mixin.py +0 -0
  55. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/report_merger.py +0 -0
  56. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/templates/merged_bug_report_template.html +0 -0
  57. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/report/utils.py +0 -0
  58. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/result.py +0 -0
  59. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/resultSyncer.py +0 -0
  60. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/state.py +0 -0
  61. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/typedefs.py +0 -0
  62. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/u2Driver.py +0 -0
  63. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/utils.py +0 -0
  64. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/kea2/version_manager.py +0 -0
  65. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/setup.cfg +0 -0
  66. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/tests/test_u2Selector.py +0 -0
  67. {kea2_python-1.1.3b0 → kea2_python-1.1.3b1}/tests/test_xpath.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Kea2-python
3
- Version: 1.1.3b0
3
+ Version: 1.1.3b1
4
4
  Summary: A python library for supporting and customizing automated UI testing for mobile apps
5
5
  Author-email: Xixian Liang <xixian@stu.ecnu.edu.cn>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Kea2-python
3
- Version: 1.1.3b0
3
+ Version: 1.1.3b1
4
4
  Summary: A python library for supporting and customizing automated UI testing for mobile apps
5
5
  Author-email: Xixian Liang <xixian@stu.ecnu.edu.cn>
6
6
  Requires-Python: >=3.8
@@ -613,13 +613,12 @@ class BugReportGenerator(CrashAnrMixin, PathParserMixin, ScreenshotsMixin):
613
613
 
614
614
  widget_coverage_trend = []
615
615
  with open(widget_coverage_log, "r", encoding="utf-8") as f:
616
- for line_number, line in enumerate(f, 1):
616
+ for line in f:
617
617
  line = line.strip()
618
618
  if not line:
619
619
  continue
620
620
  record = json.loads(line)
621
- if isinstance(record, dict):
622
- widget_coverage_trend.append(record)
621
+ widget_coverage_trend.append(record)
623
622
 
624
623
  return widget_coverage_trend
625
624
 
@@ -556,6 +556,32 @@
556
556
  background: linear-gradient(to right, var(--primary-color), var(--secondary-color));
557
557
  border-radius: 3px;
558
558
  }
559
+
560
+ .section-title .summary-link {
561
+ margin-left: 12px;
562
+ font-size: 0.85rem;
563
+ font-weight: 600;
564
+ text-decoration: none;
565
+ color: #1d4ed8;
566
+ background: rgba(59, 130, 246, 0.12);
567
+ border: 1px solid rgba(59, 130, 246, 0.25);
568
+ padding: 4px 10px;
569
+ border-radius: 999px;
570
+ display: inline-flex;
571
+ align-items: center;
572
+ gap: 6px;
573
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
574
+ }
575
+
576
+ .section-title .summary-link:hover {
577
+ background: rgba(59, 130, 246, 0.2);
578
+ border-color: rgba(59, 130, 246, 0.45);
579
+ color: #1e3a8a;
580
+ }
581
+
582
+ .section-title .summary-link i {
583
+ font-size: 0.9em;
584
+ }
559
585
 
560
586
  .section-block {
561
587
  margin-bottom: 70px;
@@ -1465,7 +1491,13 @@
1465
1491
 
1466
1492
  <!-- Widget Coverage Trend Chart -->
1467
1493
  <div class="section-block">
1468
- <h2 class="section-title">Widget Coverage Trend</h2>
1494
+ <h2 class="section-title">
1495
+ Widget Coverage Trend
1496
+ <a href="output_{{ log_stamp }}/widget_coverage_report.txt" class="summary-link" title="Open widget_coverage_report.txt">
1497
+ Widget Coverage Report
1498
+ <i class="bi bi-box-arrow-up-right"></i>
1499
+ </a>
1500
+ </h2>
1469
1501
  <div class="chart-container">
1470
1502
  <canvas id="widgetCoverageChart"></canvas>
1471
1503
  </div>
@@ -62,9 +62,9 @@ class WidgetCoverage:
62
62
  with open(output_file, "w", encoding="utf-8") as f:
63
63
  f.writelines(f"{w}\n" for w in triggered_widgets)
64
64
 
65
- def __dump_coverage_log(self, records: Deque[str]):
65
+ def __dump_coverage_log(self, records: List[dict]):
66
66
  with open(self.coverage_log, "w", encoding="utf-8") as f:
67
- f.writelines(f"{r}\n" for r in records)
67
+ f.writelines(f"{w}\n" for w in records)
68
68
 
69
69
  def _analyze_steps(self, profile_period: int):
70
70
  triggered_widgets: Set[str] = set()
@@ -73,6 +73,14 @@ class WidgetCoverage:
73
73
  last_recorded_step = -1
74
74
  final_steps_count = None # track the last steps count seen
75
75
 
76
+ def __record_coverage(steps_count: int):
77
+ coverage_records.append(
78
+ json.dumps({
79
+ "stepsCount": steps_count,
80
+ "coverage": len(triggered_widgets),
81
+ })
82
+ )
83
+
76
84
  with open(self.steps_log, "r", encoding="utf-8") as f:
77
85
  for line in f:
78
86
  data = json.loads(line)
@@ -83,24 +91,16 @@ class WidgetCoverage:
83
91
  steps_count = int(data.get("MonkeyStepsCount", 0))
84
92
  final_steps_count = steps_count
85
93
 
86
- if (
87
- steps_count > 0
88
- and steps_count % profile_period == 0
89
- and steps_count != last_recorded_step
90
- ):
91
- coverage_records.append(
92
- {
93
- "stepsCount": steps_count,
94
- "coverage": len(triggered_widgets),
95
- }
96
- )
94
+ if steps_count % profile_period == 0:
95
+ __record_coverage(steps_count)
97
96
  last_recorded_step = steps_count
98
97
 
99
-
100
- if final_steps_count is not None and final_steps_count > 0 and final_steps_count != last_recorded_step:
101
- coverage_records.append(
102
- {"stepsCount": final_steps_count, "coverage": len(triggered_widgets)}
103
- )
98
+ # Record the last step; avoid duplicate if it's already recorded at a period boundary.
99
+ if (
100
+ final_steps_count
101
+ and final_steps_count != last_recorded_step
102
+ ):
103
+ __record_coverage(final_steps_count)
104
104
 
105
105
  return triggered_widgets, coverage_records
106
106
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Kea2-python"
3
- version = "1.1.3b0"
3
+ version = "1.1.3b1"
4
4
  description = "A python library for supporting and customizing automated UI testing for mobile apps"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
Binary file
File without changes
File without changes
File without changes
File without changes