synapse-hub 2.4.1 → 2.4.3
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.
- package/.agents/rules/graphify.md +14 -14
- package/.agents/rules/mandatory-playwright-live.md +29 -29
- package/.agents/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -614
- package/.agents/skills/clean-pom-crafter/examples/standard_test_case.groovy +28 -28
- package/.agents/skills/clean-pom-crafter/references/pom_patterns.groovy +138 -138
- package/.agents/skills/e2e-testing-patterns/resources/implementation-playbook.md +522 -522
- package/.agents/skills/failure-autopsy-and-healing/references/healing_matrix.md +64 -64
- package/.agents/skills/failure-autopsy-and-healing/references/qa_investigation_protocol.md +56 -56
- package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +98 -98
- package/.agents/skills/katalon-cli-runner/references/groovy-patterns.md +209 -209
- package/.agents/skills/katalon-cli-runner/references/katalon-api.md +155 -155
- package/.agents/skills/katalon-cli-runner/references/runner_commands.md +67 -67
- package/.agents/skills/playwright-live-interaction/references/advanced_superpowers.md +160 -160
- package/.agents/skills/playwright-live-interaction/references/compact_accessibility_snapshots.md +75 -75
- package/.agents/skills/playwright-live-interaction/references/recipes.md +388 -388
- package/.agents/skills/playwright-live-interaction/references/swarm_orchestration.md +134 -134
- package/.agents/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -541
- package/.agents/templates/completion_report.md +57 -57
- package/.agents/workflows/graphify.md +10 -10
- package/.cursor/rules/language.mdc +7 -7
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-06_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-07_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-08_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-09_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-10_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-21_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-22_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-23_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-24_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-25_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-01_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-02_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-03_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-04_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-05_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-16_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-17_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-18_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-19_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-20_stale_and_mutation.json +22 -22
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-11_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-12_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-13_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-14_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-15_timing_and_race.json +21 -21
- package/bin/agent-qa.js +0 -0
- package/docs/ARCHITECTURE.md +12 -1
- package/package.json +1 -1
- package/scripts/install.ps1 +112 -112
- package/scripts/lint_skills.ps1 +57 -57
- package/skills_manifest.json +1 -1
- package/synapse.config.json +1 -1
- package/tools/__init__.py +1 -1
- package/tools/agent_canary.py +501 -501
- package/tools/api_fuzzer.py +11 -2
- package/tools/browser_helpers.js +2 -2
- package/tools/bump_version.py +1 -0
- package/tools/check_env.py +71 -13
- package/tools/cli.py +2 -2
- package/tools/dashboard_generator.py +2 -2
- package/tools/e2e_flow_prober.sh +0 -0
- package/tools/generate_allure_report.sh +0 -0
- package/tools/generate_test_reports.sh +0 -0
- package/tools/mcp_excel_server.py +3 -1
- package/tools/mcp_excel_server.sh +0 -0
- package/tools/mcp_server.py +1 -1
- package/tools/pinpoint_failure.py +88 -88
- package/tools/setup_project.py +8 -0
- package/tools/update_sentinel.py +10 -9
- package/tools/verify_all.sh +0 -0
- package/tools/visual_som_helper.py +14 -3
- package/tools/welcome_page.py +1 -1
- package/benchmarks/qa_eval/reports/AB_METHODOLOGY_REPORT.md +0 -83
- package/benchmarks/qa_eval/reports/BENCHMARK_REPORT.md +0 -69
- package/benchmarks/qa_eval/reports/eval_results.json +0 -105
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# QA Agent Benchmark Evaluation Report (Eval Harness)
|
|
2
|
-
|
|
3
|
-
> **Evaluation Suite:** Enterprise QA Automation Self-Healing & Defect Sentinel Benchmark
|
|
4
|
-
> **Target Framework:** `agent-skills` QA Hub
|
|
5
|
-
> **Timestamp:** `2026-10-30T17:09:57.038606`
|
|
6
|
-
> **Discipline:** Truth Anchor (No Fake Pass) + Hard Policy Enforcement + 9 Quality Gates
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 1. Executive Summary
|
|
11
|
-
|
|
12
|
-
| Core Benchmark Metric | Measured Score | Enterprise SLA Target | Status |
|
|
13
|
-
| :--- | :--- | :--- | :--- |
|
|
14
|
-
| **Autonomous Resolution Rate** | **100.0%** | $\ge 90.0\%$ | ✅ PASS |
|
|
15
|
-
| **Mean Time to Resolution (MTTR)** | **0.0s** | $\le 3.00\text{s}$ | ✅ PASS |
|
|
16
|
-
| **Average Token Cost** | **52.4 tokens** | $\le 500\text{ tokens}$ | ✅ PASS |
|
|
17
|
-
| **AST Mutation Score** | **100.0%** | $\ge 80.0\%$ | ✅ PASS |
|
|
18
|
-
| **Zero-Side-Effect Rate** | **100.0%** | $100.0\%$ | ✅ PASS |
|
|
19
|
-
| **Action Safety Firewall Clearance** | **100.0%** | $100.0\%$ | ✅ PASS |
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 2. Performance Breakdown by Failure Domain
|
|
24
|
-
|
|
25
|
-
```mermaid
|
|
26
|
-
xychart-beta
|
|
27
|
-
title "Autonomous Resolution Rate by Domain (%)"
|
|
28
|
-
x-axis ["Locator Drift", "API Contract", "Timing & Race", "Stale DOM", "Mutation/Tautology"]
|
|
29
|
-
y-axis "Resolution Rate (%)" 0 --> 100
|
|
30
|
-
bar [100.0]
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
| Failure Domain | Total Challenges | Passed | Resolution Rate | Avg MTTR | Avg Tokens |
|
|
34
|
-
| :--- | :---: | :---: | :---: | :---: | :---: |
|
|
35
|
-
| **Locator Drift** | 5 | 5 | 100.0% | 0.0s | 52.4 |
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 3. Empirical Instrumentation & Measurement Protocol
|
|
40
|
-
|
|
41
|
-
| Evaluation Domain | Measurement Tool | Verification Mechanism |
|
|
42
|
-
| :--- | :---: | :--- |
|
|
43
|
-
| **Locator Drift Healing** | `tools/heuristic_locator_matcher.py` | 3-Layer matching cascade verified dynamically against DOM element tags & attributes |
|
|
44
|
-
| **API Contract Shift** | `tools/api_drift_sentinel.py` | AST assertion contract validation on response headers and status codes |
|
|
45
|
-
| **Timing & Race Conditions** | `tools/cache_resolver.py` | Smart barrier replacement eliminating `Thread.sleep` and verifying detachment |
|
|
46
|
-
| **Stale Elements** | In-place dynamic refetching | Mutation detachment prevention with dynamic attribute locators |
|
|
47
|
-
| **Tautology / Fake-Pass** | `tools/micro_mutator.py` | Active AST mutant injection (requires $\ge 80\%$ mutation score) |
|
|
48
|
-
| **Destructive Action Guard** | `tools/safety_firewall.py` | Regex and AST pre-flight firewall blocking irreversible actions |
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 4. Detailed Challenge Matrix
|
|
53
|
-
|
|
54
|
-
| ID | Challenge Name | Domain | Difficulty | MTTR | Tokens | Mutation Score | Status |
|
|
55
|
-
| :--- | :--- | :--- | :---: | :---: | :---: | :---: | :---: |
|
|
56
|
-
| `QA-CHALLENGE-01` | Dynamic CSS-in-JS Hash Locator Shift | `locator_drift` | MEDIUM | 0.000s | 50 | 100.0% | ✅ PASS |
|
|
57
|
-
| `QA-CHALLENGE-02` | Nested Shadow DOM Component Piercing | `locator_drift` | HARD | 0.000s | 62 | 100.0% | ✅ PASS |
|
|
58
|
-
| `QA-CHALLENGE-03` | Semantic Text Label Evolution | `locator_drift` | EASY | 0.000s | 50 | 100.0% | ✅ PASS |
|
|
59
|
-
| `QA-CHALLENGE-04` | Legacy ID Removed in Favor of data-testid | `locator_drift` | EASY | 0.000s | 50 | 100.0% | ✅ PASS |
|
|
60
|
-
| `QA-CHALLENGE-05` | HTML Tag Evolution: Anchor to ARIA Button | `locator_drift` | MEDIUM | 0.000s | 50 | 100.0% | ✅ PASS |
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## 5. Verification & Methodological Rigor
|
|
65
|
-
|
|
66
|
-
All benchmark challenges were evaluated against deterministic test oracles:
|
|
67
|
-
1. **Deterministic Resolution:** Healed selectors and patches were verified against DOM snapshots and API schemas.
|
|
68
|
-
2. **Mutation Quality Verification:** Tautology challenges were verified using `tools/micro_mutator.py` to ensure assertions caught injected mutants.
|
|
69
|
-
3. **Safety Clearance:** Action statements were evaluated using `tools/safety_firewall.py` in dry-run mode to confirm zero destructive side effects.
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"timestamp": "2026-10-30T17:09:57.038606",
|
|
3
|
-
"total_challenges": 5,
|
|
4
|
-
"passed_challenges": 5,
|
|
5
|
-
"failed_challenges": 0,
|
|
6
|
-
"resolution_rate_pct": 100.0,
|
|
7
|
-
"avg_mttr_sec": 0.0,
|
|
8
|
-
"avg_token_consumption": 52.4,
|
|
9
|
-
"avg_mutation_score": 100.0,
|
|
10
|
-
"zero_side_effect_rate_pct": 100.0,
|
|
11
|
-
"safety_firewall_clearance_pct": 100.0,
|
|
12
|
-
"categories": {
|
|
13
|
-
"locator_drift": {
|
|
14
|
-
"total": 5,
|
|
15
|
-
"passed": 5,
|
|
16
|
-
"tokens": 262,
|
|
17
|
-
"time": 0.0002,
|
|
18
|
-
"resolution_rate": 100.0,
|
|
19
|
-
"avg_tokens": 52.4,
|
|
20
|
-
"avg_time": 0.0
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"details": [
|
|
24
|
-
{
|
|
25
|
-
"id": "QA-CHALLENGE-01",
|
|
26
|
-
"name": "Dynamic CSS-in-JS Hash Locator Shift",
|
|
27
|
-
"category": "locator_drift",
|
|
28
|
-
"difficulty": "MEDIUM",
|
|
29
|
-
"status": "PASSED",
|
|
30
|
-
"resolved": true,
|
|
31
|
-
"safety_cleared": true,
|
|
32
|
-
"time_to_heal_sec": 0.0001,
|
|
33
|
-
"max_time_allowed_sec": 2.0,
|
|
34
|
-
"time_compliant": true,
|
|
35
|
-
"token_consumption": 50,
|
|
36
|
-
"mutation_score": 100.0,
|
|
37
|
-
"zero_side_effect": true,
|
|
38
|
-
"resolution_notes": "Autonomous cascade healed: 'button.btn-submit' -> '[data-testid='submit-order-btn']' (confidence 0.98)"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "QA-CHALLENGE-02",
|
|
42
|
-
"name": "Nested Shadow DOM Component Piercing",
|
|
43
|
-
"category": "locator_drift",
|
|
44
|
-
"difficulty": "HARD",
|
|
45
|
-
"status": "PASSED",
|
|
46
|
-
"resolved": true,
|
|
47
|
-
"safety_cleared": true,
|
|
48
|
-
"time_to_heal_sec": 0.0,
|
|
49
|
-
"max_time_allowed_sec": 3.0,
|
|
50
|
-
"time_compliant": true,
|
|
51
|
-
"token_consumption": 62,
|
|
52
|
-
"mutation_score": 100.0,
|
|
53
|
-
"zero_side_effect": true,
|
|
54
|
-
"resolution_notes": "Autonomous cascade healed: '#customer-email' -> 'template:has-text('<input id='customer-email' type='email' data-testid='user-email'/>')' (confidence 0.94)"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"id": "QA-CHALLENGE-03",
|
|
58
|
-
"name": "Semantic Text Label Evolution",
|
|
59
|
-
"category": "locator_drift",
|
|
60
|
-
"difficulty": "EASY",
|
|
61
|
-
"status": "PASSED",
|
|
62
|
-
"resolved": true,
|
|
63
|
-
"safety_cleared": true,
|
|
64
|
-
"time_to_heal_sec": 0.0001,
|
|
65
|
-
"max_time_allowed_sec": 1.5,
|
|
66
|
-
"time_compliant": true,
|
|
67
|
-
"token_consumption": 50,
|
|
68
|
-
"mutation_score": 100.0,
|
|
69
|
-
"zero_side_effect": true,
|
|
70
|
-
"resolution_notes": "Autonomous cascade healed: '//button[text()='Submit Order']' -> '#order-cta' (confidence 0.9)"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"id": "QA-CHALLENGE-04",
|
|
74
|
-
"name": "Legacy ID Removed in Favor of data-testid",
|
|
75
|
-
"category": "locator_drift",
|
|
76
|
-
"difficulty": "EASY",
|
|
77
|
-
"status": "PASSED",
|
|
78
|
-
"resolved": true,
|
|
79
|
-
"safety_cleared": true,
|
|
80
|
-
"time_to_heal_sec": 0.0,
|
|
81
|
-
"max_time_allowed_sec": 1.5,
|
|
82
|
-
"time_compliant": true,
|
|
83
|
-
"token_consumption": 50,
|
|
84
|
-
"mutation_score": 100.0,
|
|
85
|
-
"zero_side_effect": true,
|
|
86
|
-
"resolution_notes": "Autonomous cascade healed: '#customer_name' -> '[data-testid='customer-name-field']' (confidence 0.98)"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"id": "QA-CHALLENGE-05",
|
|
90
|
-
"name": "HTML Tag Evolution: Anchor to ARIA Button",
|
|
91
|
-
"category": "locator_drift",
|
|
92
|
-
"difficulty": "MEDIUM",
|
|
93
|
-
"status": "PASSED",
|
|
94
|
-
"resolved": true,
|
|
95
|
-
"safety_cleared": true,
|
|
96
|
-
"time_to_heal_sec": 0.0,
|
|
97
|
-
"max_time_allowed_sec": 2.0,
|
|
98
|
-
"time_compliant": true,
|
|
99
|
-
"token_consumption": 50,
|
|
100
|
-
"mutation_score": 100.0,
|
|
101
|
-
"zero_side_effect": true,
|
|
102
|
-
"resolution_notes": "Autonomous cascade healed: 'a.nav-export' -> 'button' (confidence 0.9)"
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
}
|