Kea2-python 0.3.6__py3-none-any.whl → 1.0.0__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 Kea2-python might be problematic. Click here for more details.

@@ -279,13 +279,77 @@
279
279
  width: 8%;
280
280
  min-width: 70px;
281
281
  }
282
-
282
+
283
283
  .table-custom th:nth-child(7), .table-custom td:nth-child(7) { /* Error Details */
284
284
  width: 45%;
285
285
  min-width: 400px;
286
286
  text-align: center;
287
287
  position: relative;
288
288
  }
289
+
290
+ /* Property Checking Statistics specific adjustments */
291
+ .table-property-stats th,
292
+ .table-property-stats td {
293
+ padding: 20px 14px;
294
+ line-height: 1.65;
295
+ }
296
+
297
+ .table-property-stats th:nth-child(1),
298
+ .table-property-stats td:nth-child(1) {
299
+ width: 6%;
300
+ min-width: 60px;
301
+ }
302
+
303
+ .table-property-stats th:nth-child(2),
304
+ .table-property-stats td:nth-child(2) {
305
+ width: 22%;
306
+ min-width: 200px;
307
+ text-align: left;
308
+ }
309
+
310
+ .table-property-stats th:nth-child(3),
311
+ .table-property-stats td:nth-child(3) {
312
+ width: 10%;
313
+ min-width: 90px;
314
+ }
315
+
316
+ .table-property-stats th:nth-child(4),
317
+ .table-property-stats td:nth-child(4) {
318
+ width: 9%;
319
+ min-width: 80px;
320
+ }
321
+
322
+ .table-property-stats th:nth-child(5),
323
+ .table-property-stats td:nth-child(5) {
324
+ width: 9%;
325
+ min-width: 80px;
326
+ }
327
+
328
+ .table-property-stats th:nth-child(6),
329
+ .table-property-stats td:nth-child(6) {
330
+ width: 9%;
331
+ min-width: 80px;
332
+ }
333
+
334
+ .table-property-stats th:nth-child(7),
335
+ .table-property-stats td:nth-child(7) {
336
+ width: 9%;
337
+ min-width: 80px;
338
+ }
339
+
340
+ .table-property-stats th:nth-child(8),
341
+ .table-property-stats td:nth-child(8) {
342
+ width: 26%;
343
+ min-width: 260px;
344
+ text-align: left;
345
+ }
346
+
347
+ .table-property-stats td:nth-child(8) {
348
+ display: flex;
349
+ justify-content: flex-start;
350
+ align-items: center;
351
+ gap: 0.75rem;
352
+ }
289
353
 
290
354
  .table-custom tbody tr:nth-of-type(odd) {
291
355
  background-color: rgba(0, 0, 0, 0.02);
@@ -1340,6 +1404,7 @@
1340
1404
 
1341
1405
  <!-- Screenshots Section -->
1342
1406
  {% if take_screenshots %}
1407
+ {% if screenshots %}
1343
1408
  <div class="section-block">
1344
1409
  <h2 class="section-title">Test Screenshots</h2>
1345
1410
  <div class="card">
@@ -1357,6 +1422,14 @@
1357
1422
  </div>
1358
1423
  </div>
1359
1424
  </div>
1425
+ {% else %}
1426
+ <div class="section-block">
1427
+ <h2 class="section-title">Test Screenshots</h2>
1428
+ <div class="alert alert-info text-center">
1429
+ <i class="bi bi-info-circle"></i> No screenshots captured in this test session.
1430
+ </div>
1431
+ </div>
1432
+ {% endif %}
1360
1433
  {% endif %}
1361
1434
 
1362
1435
  <!-- Crash Analysis Section -->
@@ -1398,6 +1471,9 @@
1398
1471
  <th>Time</th>
1399
1472
  <th>Exception</th>
1400
1473
  <th>Process</th>
1474
+ {% if take_screenshots %}
1475
+ <th>Interaction Scenario Pages</th>
1476
+ {% endif %}
1401
1477
  <th>Details</th>
1402
1478
  </tr>
1403
1479
  </thead>
@@ -1408,20 +1484,31 @@
1408
1484
  <td>{{ crash.time }}</td>
1409
1485
  <td>{{ crash.exception_type }}</td>
1410
1486
  <td>{{ crash.process }}</td>
1487
+ {% if take_screenshots %}
1411
1488
  <td>
1412
- <button class="btn btn-sm btn-outline-primary" type="button"
1413
- data-bs-toggle="collapse" data-bs-target="#crash-detail-{{ loop.index }}"
1489
+ {% if crash.screenshot_id %}
1490
+ <a href="#{{ crash.screenshot_id }}" class="link-button" onclick="scrollToScreenshot('{{ crash.screenshot_id }}')">
1491
+ <i class="bi bi-camera"></i> Screenshot {{ crash.screenshot_id }}
1492
+ </a>
1493
+ {% else %}
1494
+ <span class="text-muted">No screenshot</span>
1495
+ {% endif %}
1496
+ </td>
1497
+ {% endif %}
1498
+ <td>
1499
+ <button class="btn btn-sm btn-outline-primary" type="button"
1500
+ data-bs-toggle="collapse" data-bs-target="#crash-detail-{{ loop.index }}"
1414
1501
  aria-expanded="false" aria-controls="crash-detail-{{ loop.index }}">
1415
1502
  <i class="bi bi-eye"></i> Details
1416
1503
  </button>
1417
- <button class="btn btn-sm btn-outline-secondary copy-stack-btn"
1504
+ <button class="btn btn-sm btn-outline-secondary copy-stack-btn"
1418
1505
  data-stack-index="{{ loop.index }}">
1419
1506
  <i class="bi bi-clipboard"></i> Copy
1420
1507
  </button>
1421
1508
  </td>
1422
1509
  </tr>
1423
1510
  <tr class="collapse" id="crash-detail-{{ loop.index }}">
1424
- <td colspan="5">
1511
+ <td colspan="{% if take_screenshots %}6{% else %}5{% endif %}">
1425
1512
  <div class="bg-light p-3 rounded">
1426
1513
  <h6 class="text-danger">Stack Trace:</h6>
1427
1514
  <pre class="text-danger mb-0 text-start" id="stack-trace-{{ loop.index }}" style="font-size: 0.9em; white-space: pre-wrap; text-align: left;">{{ crash.stack_trace }}</pre>
@@ -1436,20 +1523,31 @@
1436
1523
  <td>{{ anr.time }}</td>
1437
1524
  <td>{{ anr.reason }}</td>
1438
1525
  <td>{{ anr.process }}</td>
1526
+ {% if take_screenshots %}
1439
1527
  <td>
1440
- <button class="btn btn-sm btn-outline-primary" type="button"
1441
- data-bs-toggle="collapse" data-bs-target="#anr-detail-{{ loop.index }}"
1528
+ {% if anr.screenshot_id %}
1529
+ <a href="#{{ anr.screenshot_id }}" class="link-button" onclick="scrollToScreenshot('{{ anr.screenshot_id }}')">
1530
+ <i class="bi bi-camera"></i> Screenshot {{ anr.screenshot_id }}
1531
+ </a>
1532
+ {% else %}
1533
+ <span class="text-muted">No screenshot</span>
1534
+ {% endif %}
1535
+ </td>
1536
+ {% endif %}
1537
+ <td>
1538
+ <button class="btn btn-sm btn-outline-primary" type="button"
1539
+ data-bs-toggle="collapse" data-bs-target="#anr-detail-{{ loop.index }}"
1442
1540
  aria-expanded="false" aria-controls="anr-detail-{{ loop.index }}">
1443
1541
  <i class="bi bi-eye"></i> Details
1444
1542
  </button>
1445
- <button class="btn btn-sm btn-outline-secondary copy-stack-btn"
1543
+ <button class="btn btn-sm btn-outline-secondary copy-stack-btn"
1446
1544
  data-stack-index="anr-{{ loop.index }}">
1447
1545
  <i class="bi bi-clipboard"></i> Copy
1448
1546
  </button>
1449
1547
  </td>
1450
1548
  </tr>
1451
1549
  <tr class="collapse" id="anr-detail-{{ loop.index }}">
1452
- <td colspan="5">
1550
+ <td colspan="{% if take_screenshots %}6{% else %}5{% endif %}">
1453
1551
  <div class="bg-light p-3 rounded">
1454
1552
  <h6 class="text-dark">ANR Details:</h6>
1455
1553
  <pre class="text-dark mb-0 text-start" id="stack-trace-anr-{{ loop.index }}" style="font-size: 0.9em; white-space: pre-wrap; text-align: left;">{{ anr.trace }}</pre>
@@ -1576,13 +1674,14 @@
1576
1674
  </div>
1577
1675
 
1578
1676
  <div class="table-responsive">
1579
- <table class="table table-custom">
1677
+ <table class="table table-custom table-property-stats">
1580
1678
  <thead>
1581
1679
  <tr>
1582
1680
  <th>Index</th>
1583
1681
  <th>Property Name <span class="badge bg-primary ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_properties }}</span></th>
1584
1682
  <th>Precondition Satisfied <span class="badge bg-success ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_precond_satisfied }}</span></th>
1585
1683
  <th>Executed <span class="badge bg-info ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_executed }}</span></th>
1684
+ <th>Passes <span class="badge bg-secondary ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_passes }}</span></th>
1586
1685
  <th>Fails <span class="badge bg-danger ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_fails }}</span> <i class="bi bi-arrow-down-up text-muted sort-icon" id="fails-sort" data-column="fails" data-order="none" style="cursor: pointer;"></i></th>
1587
1686
  <th>Errors <span class="badge bg-warning ms-2" style="font-size: 0.9rem; font-weight: 600;">{{ property_stats_summary.total_errors }}</span> <i class="bi bi-arrow-down-up text-muted sort-icon" id="errors-sort" data-column="errors" data-order="none" style="cursor: pointer;"></i></th>
1588
1687
  <th>Error Details</th>
@@ -1595,12 +1694,14 @@
1595
1694
  data-property-name="{{ property_name }}"
1596
1695
  data-precond-satisfied="{{ test_result.precond_satisfied|default(0) }}"
1597
1696
  data-executed="{{ test_result.executed|default(0) }}"
1697
+ data-pass="{{ test_result.pass_count|default(0) }}"
1598
1698
  data-fails="{{ test_result.fail|default(0) }}"
1599
1699
  data-errors="{{ test_result.error|default(0) }}">
1600
1700
  <td>{{ loop.index }}</td>
1601
1701
  <td><span class="badge bg-light text-dark badge-custom">{{ property_name }}</span></td>
1602
1702
  <td>{{ test_result.precond_satisfied|default(0) }}</td>
1603
1703
  <td>{{ test_result.executed|default(0) }}</td>
1704
+ <td>{{ test_result.pass_count|default(0) }}</td>
1604
1705
  <td><span class="badge bg-danger text-white">{{ test_result.fail|default(0) }}</span></td>
1605
1706
  <td><span class="badge bg-warning text-dark">{{ test_result.error|default(0) }}</span></td>
1606
1707
  <td>
@@ -1633,7 +1734,7 @@
1633
1734
  {% if error_list|length == 1 %}
1634
1735
  <!-- Single error detail row -->
1635
1736
  <tr class="collapse" id="single-error-detail-{{ property_index }}">
1636
- <td colspan="7">
1737
+ <td colspan="8">
1637
1738
  <div class="bg-light p-3 rounded">
1638
1739
  <div class="mb-2">
1639
1740
  <span class="badge bg-{{ 'danger' if error_list[0].state == 'fail' else 'warning' }}">
@@ -1665,7 +1766,7 @@
1665
1766
  {% else %}
1666
1767
  <!-- Multiple errors detail row -->
1667
1768
  <tr class="collapse" id="multi-error-detail-{{ property_index }}">
1668
- <td colspan="7">
1769
+ <td colspan="8">
1669
1770
  <div class="bg-light p-3 rounded">
1670
1771
  <!-- Error summary -->
1671
1772
  <div class="mb-3">
@@ -3502,6 +3603,31 @@
3502
3603
  }
3503
3604
  return 1;
3504
3605
  }
3606
+
3607
+ // Function to scroll to screenshot by ID
3608
+ function scrollToScreenshot(screenshotId) {
3609
+ const screenshotElement = document.getElementById(screenshotId);
3610
+ if (screenshotElement) {
3611
+ // Scroll to the screenshot with smooth behavior
3612
+ screenshotElement.scrollIntoView({
3613
+ behavior: 'smooth',
3614
+ block: 'center'
3615
+ });
3616
+
3617
+ // Add a highlight effect
3618
+ screenshotElement.style.border = '3px solid #007bff';
3619
+ screenshotElement.style.borderRadius = '8px';
3620
+ screenshotElement.style.transition = 'border 0.3s ease';
3621
+
3622
+ // Remove highlight after 3 seconds
3623
+ setTimeout(() => {
3624
+ screenshotElement.style.border = '';
3625
+ screenshotElement.style.borderRadius = '';
3626
+ }, 3000);
3627
+ } else {
3628
+ console.warn('Screenshot with ID', screenshotId, 'not found');
3629
+ }
3630
+ }
3505
3631
  </script>
3506
3632
  </body>
3507
- </html>
3633
+ </html>