agentic-qe 2.0.0 → 2.1.0
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/.claude/agents/qx-partner.md +17 -4
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +71 -20
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/SKILL.md +172 -538
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +48 -0
- package/README.md +23 -16
- package/dist/agents/QXPartnerAgent.d.ts +8 -1
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +1174 -112
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +14 -0
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
- package/dist/core/optimization/SwarmOptimizer.js +17 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
- package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/types/qx.d.ts +39 -7
- package/dist/types/qx.d.ts.map +1 -1
- package/dist/types/qx.js.map +1 -1
- package/dist/visualization/api/RestEndpoints.js +1 -1
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/package.json +13 -55
|
@@ -1,219 +1,171 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: holistic-testing-
|
|
3
|
-
description: Apply the Holistic Testing Model evolved with PACT (Proactive, Autonomous, Collaborative, Targeted) principles. Use when designing comprehensive test strategies for Classical, AI-assisted, Agent based, or Agentic Systems building quality into the team, or implementing whole-team quality practices.
|
|
2
|
+
name: holistic-testing-pact
|
|
3
|
+
description: "Apply the Holistic Testing Model evolved with PACT (Proactive, Autonomous, Collaborative, Targeted) principles. Use when designing comprehensive test strategies for Classical, AI-assisted, Agent based, or Agentic Systems building quality into the team, or implementing whole-team quality practices."
|
|
4
|
+
category: testing-methodologies
|
|
5
|
+
priority: critical
|
|
6
|
+
tokenEstimate: 1100
|
|
7
|
+
agents: [qe-fleet-commander, qe-test-generator, qe-quality-analyzer, qe-requirements-validator]
|
|
8
|
+
implementation_status: optimized
|
|
9
|
+
optimization_version: 1.0
|
|
10
|
+
last_optimized: 2025-12-02
|
|
11
|
+
dependencies: []
|
|
12
|
+
quick_reference_card: true
|
|
13
|
+
tags: [holistic, pact, quality, whole-team, proactive, autonomous, collaborative, targeted]
|
|
4
14
|
---
|
|
5
15
|
|
|
6
16
|
# Holistic Testing Model with PACT Principles
|
|
7
17
|
|
|
8
|
-
|
|
18
|
+
<default_to_action>
|
|
19
|
+
When designing test strategies or building quality into teams:
|
|
20
|
+
1. APPLY PACT principles: Proactive (test before bugs), Autonomous (teams own quality), Collaborative (whole-team responsibility), Targeted (risk-focused)
|
|
21
|
+
2. IDENTIFY quadrant focus: Technology-facing (unit, integration, performance) or Business-facing (acceptance, exploratory, usability)
|
|
22
|
+
3. SELECT agents based on PACT dimension and testing quadrant
|
|
23
|
+
4. IMPLEMENT feedback loops that catch issues in minutes, not days
|
|
24
|
+
5. MEASURE outcomes (bug escape rate, release confidence) not activities (test count)
|
|
25
|
+
|
|
26
|
+
**Quick PACT Application:**
|
|
27
|
+
- Proactive → Design testability into architecture, risk analysis during refinement
|
|
28
|
+
- Autonomous → Devs run tests locally, CI pipeline with no manual gates
|
|
29
|
+
- Collaborative → Three Amigos, QE pairs with dev, shared test ownership
|
|
30
|
+
- Targeted → Risk-based planning, focus on critical flows, kill valueless tests
|
|
31
|
+
|
|
32
|
+
**Critical Success Factors:**
|
|
33
|
+
- Quality is a whole-team responsibility, not a QA phase
|
|
34
|
+
- QA as enablers (build infrastructure, coach), not gatekeepers
|
|
35
|
+
- Fast feedback during development, not after
|
|
36
|
+
</default_to_action>
|
|
37
|
+
|
|
38
|
+
## Quick Reference Card
|
|
39
|
+
|
|
40
|
+
### When to Use
|
|
41
|
+
- Designing comprehensive test strategies
|
|
42
|
+
- Building quality culture in teams
|
|
43
|
+
- Choosing testing approach for new projects
|
|
44
|
+
- Evolving from sequential QA to concurrent quality
|
|
45
|
+
|
|
46
|
+
### PACT Principles
|
|
47
|
+
| Principle | Focus | Anti-Pattern |
|
|
48
|
+
|-----------|-------|--------------|
|
|
49
|
+
| **Proactive** | Test before code, design testability | Waiting for bugs to find you |
|
|
50
|
+
| **Autonomous** | Teams deploy when ready | QA as manual gatekeepers |
|
|
51
|
+
| **Collaborative** | Whole-team quality thinking | QA works in isolation |
|
|
52
|
+
| **Targeted** | Risk-based, high-value tests | Exhaustive checkbox testing |
|
|
53
|
+
|
|
54
|
+
### Holistic Testing Quadrants
|
|
55
|
+
| Quadrant | Purpose | Examples |
|
|
56
|
+
|----------|---------|----------|
|
|
57
|
+
| Tech + Support | Fast feedback | Unit, component, integration tests |
|
|
58
|
+
| Tech + Critique | Find limits | Performance, security, chaos |
|
|
59
|
+
| Business + Support | Shared understanding | BDD, acceptance tests |
|
|
60
|
+
| Business + Critique | Discover unknowns | Exploratory, usability, A/B |
|
|
61
|
+
|
|
62
|
+
### Agent Selection by PACT + Quadrant
|
|
63
|
+
| PACT Dimension | Agents |
|
|
64
|
+
|----------------|--------|
|
|
65
|
+
| Proactive + Tech | qe-test-generator, qe-requirements-validator |
|
|
66
|
+
| Autonomous + Tech | qe-test-executor, qe-coverage-analyzer |
|
|
67
|
+
| Collaborative | qe-fleet-commander (orchestration) |
|
|
68
|
+
| Targeted | qe-regression-risk-analyzer, qe-quality-gate |
|
|
9
69
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## PACT Principles
|
|
13
|
-
|
|
14
|
-
### Proactive
|
|
15
|
-
**Stop waiting for bugs to find you.**
|
|
16
|
-
|
|
17
|
-
- Test before code exists (risk analysis during refinement)
|
|
18
|
-
- Design testability into architecture
|
|
19
|
-
- Identify failure modes during design reviews
|
|
20
|
-
- Create feedback loops that catch issues in minutes, not days
|
|
21
|
-
|
|
22
|
-
**Example:** During API design, ask: "How will we know if this endpoint times out under load?" Build observability in from the start.
|
|
23
|
-
|
|
24
|
-
### Autonomous
|
|
25
|
-
**Empower the team to own quality.**
|
|
26
|
-
|
|
27
|
-
- Developers run tests locally before pushing
|
|
28
|
-
- Automated checks in CI pipeline (no manual gates)
|
|
29
|
-
- Self-service test environments
|
|
30
|
-
- Teams deploy when ready, not when QA says so
|
|
31
|
-
|
|
32
|
-
**Anti-pattern:** QA as gatekeepers who manually test every change. That's a bottleneck, not quality.
|
|
33
|
-
|
|
34
|
-
**Better:** QA as enablers who build test infrastructure, coach teams, and explore what automation misses.
|
|
35
|
-
|
|
36
|
-
### Collaborative
|
|
37
|
-
**Quality work requires whole-team thinking.**
|
|
38
|
-
|
|
39
|
-
- QE pairs with dev during feature work
|
|
40
|
-
- Product owner clarifies acceptance criteria with QE input
|
|
41
|
-
- Ensemble testing sessions for complex scenarios
|
|
42
|
-
- Shared ownership of test code
|
|
43
|
-
|
|
44
|
-
**Practical:** Three Amigos meetings aren't theater. They're where you discover the edge cases, clarify assumptions, and design better solutions.
|
|
45
|
-
|
|
46
|
-
### Targeted
|
|
47
|
-
**Test what matters, skip what doesn't.**
|
|
48
|
-
|
|
49
|
-
- Risk-based test planning (not exhaustive checkbox testing)
|
|
50
|
-
- Focus on business-critical flows and recent changes
|
|
51
|
-
- Adjust depth based on risk profile
|
|
52
|
-
- Kill tests that don't provide value
|
|
53
|
-
|
|
54
|
-
**Example:** E-commerce checkout? Test thoroughly. Admin panel used twice a month? Lighter touch.
|
|
55
|
-
|
|
56
|
-
## The Holistic Testing Dimensions
|
|
57
|
-
|
|
58
|
-
### 1. Technology-Facing Tests
|
|
59
|
-
|
|
60
|
-
**Supporting the Team (Building Quality In)**
|
|
61
|
-
- Unit tests (TDD both schools)
|
|
62
|
-
- Component tests
|
|
63
|
-
- Integration tests
|
|
64
|
-
- API contract tests
|
|
65
|
-
|
|
66
|
-
**Goal:** Fast feedback during development. Developers can refactor fearlessly.
|
|
67
|
-
|
|
68
|
-
**Critique the Team (Finding Issues)**
|
|
69
|
-
- Performance testing
|
|
70
|
-
- Security testing
|
|
71
|
-
- Load/stress testing
|
|
72
|
-
- Chaos engineering
|
|
73
|
-
|
|
74
|
-
**Goal:** Validate non-functional requirements. Find limits before customers do.
|
|
75
|
-
|
|
76
|
-
### 2. Business-Facing Tests
|
|
77
|
-
|
|
78
|
-
**Supporting the Team (Defining Expected Behavior)**
|
|
79
|
-
- Acceptance tests (BDD/Specification by Example)
|
|
80
|
-
- Prototypes and simulations
|
|
81
|
-
- Example-driven development
|
|
82
|
-
|
|
83
|
-
**Goal:** Shared understanding of what we're building and why.
|
|
84
|
-
|
|
85
|
-
**Critique the Product (Discovering What We Don't Know)**
|
|
86
|
-
- Exploratory testing
|
|
87
|
-
- Usability testing
|
|
88
|
-
- User acceptance testing
|
|
89
|
-
- A/B testing in production
|
|
90
|
-
|
|
91
|
-
**Goal:** Uncover issues automation can't find. Validate actual user value.
|
|
70
|
+
---
|
|
92
71
|
|
|
93
|
-
##
|
|
72
|
+
## PACT in Practice
|
|
94
73
|
|
|
95
|
-
###
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
74
|
+
### Proactive: Test Before Bugs
|
|
75
|
+
```javascript
|
|
76
|
+
// During API design, ask: "How will we know if this times out under load?"
|
|
77
|
+
// Build observability from start
|
|
78
|
+
await Task("Risk Analysis", {
|
|
79
|
+
phase: 'refinement',
|
|
80
|
+
question: 'What could go wrong and how will we know?'
|
|
81
|
+
}, "qe-requirements-validator");
|
|
82
|
+
```
|
|
99
83
|
|
|
100
|
-
###
|
|
84
|
+
### Autonomous: Teams Own Quality
|
|
101
85
|
- Developers run full test suite locally
|
|
102
86
|
- CI fails fast with clear diagnostics
|
|
103
87
|
- No manual deployment approvals
|
|
88
|
+
- Self-service test environments
|
|
104
89
|
|
|
105
|
-
###
|
|
106
|
-
- Pair on complex test scenarios
|
|
107
|
-
- Shared test code ownership
|
|
108
|
-
- Mob on test infrastructure
|
|
109
|
-
|
|
110
|
-
### Technology + Targeted
|
|
111
|
-
- Test pyramid (many unit, some integration, few E2E)
|
|
112
|
-
- Skip tests for deprecated features
|
|
113
|
-
- Focus on changed areas
|
|
114
|
-
|
|
115
|
-
### Business + Proactive
|
|
116
|
-
- Risk workshops before sprint starts
|
|
117
|
-
- Example mapping in refinement
|
|
118
|
-
- Test ideas in prototypes
|
|
119
|
-
|
|
120
|
-
### Business + Autonomous
|
|
121
|
-
- Product owners write acceptance criteria
|
|
122
|
-
- Designers validate UX before dev
|
|
123
|
-
- Teams decide when to release
|
|
124
|
-
|
|
125
|
-
### Business + Collaborative
|
|
90
|
+
### Collaborative: Whole-Team Thinking
|
|
126
91
|
- QE attends planning and refinement
|
|
127
92
|
- Three Amigos for every user story
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
Example: "Let's add unit tests (technology-supporting) and have devs run them locally before pushing (autonomous)."
|
|
141
|
-
|
|
142
|
-
### Measure What Matters
|
|
143
|
-
- Time from code complete to production
|
|
144
|
-
- Bug escape rate to production
|
|
145
|
-
- Mean time to detect/resolve issues
|
|
146
|
-
- Team confidence in releases
|
|
147
|
-
|
|
148
|
-
**Don't measure:** Test count, code coverage percentage, number of test cases executed. Those are vanity metrics.
|
|
149
|
-
|
|
150
|
-
### Common Challenges
|
|
151
|
-
|
|
152
|
-
**"We don't have time for testing."**
|
|
153
|
-
You're already testing - manually, in production, with real users. Shift that effort left.
|
|
154
|
-
|
|
155
|
-
**"Our code isn't testable."**
|
|
156
|
-
Then you have a design problem, not a testing problem. Refactor for testability.
|
|
157
|
-
|
|
158
|
-
**"QA is too slow."**
|
|
159
|
-
QA shouldn't be on the critical path. If they are, you're doing it wrong.
|
|
160
|
-
|
|
161
|
-
**"100% automation is the goal."**
|
|
162
|
-
No. Automation supports testing, it doesn't replace human judgment. Keep exploring.
|
|
163
|
-
|
|
164
|
-
## Evolution from Traditional Models
|
|
165
|
-
|
|
166
|
-
### Old Way (Sequential)
|
|
167
|
-
1. Dev writes code
|
|
168
|
-
2. QA tests code
|
|
169
|
-
3. QA finds bugs
|
|
170
|
-
4. Dev fixes bugs
|
|
171
|
-
5. Repeat until "done"
|
|
172
|
-
|
|
173
|
-
**Problem:** Slow feedback, finger-pointing, quality as gatekeeping.
|
|
174
|
-
|
|
175
|
-
### Holistic + PACT Way (Concurrent)
|
|
176
|
-
1. Team discusses what to build and how to test it
|
|
177
|
-
2. Write tests that define success
|
|
178
|
-
3. Build with tests running continuously
|
|
179
|
-
4. Deploy with confidence
|
|
180
|
-
5. Monitor and learn
|
|
181
|
-
|
|
182
|
-
**Benefit:** Fast feedback, shared ownership, quality as enabler.
|
|
183
|
-
|
|
184
|
-
## Tools Support the Model, Not Define It
|
|
93
|
+
- Shared ownership of test code
|
|
94
|
+
- Ensemble testing for complex scenarios
|
|
95
|
+
|
|
96
|
+
### Targeted: Test What Matters
|
|
97
|
+
```javascript
|
|
98
|
+
// E-commerce checkout? Test thoroughly.
|
|
99
|
+
// Admin panel used twice a month? Lighter touch.
|
|
100
|
+
await Task("Risk-Based Planning", {
|
|
101
|
+
critical: ['checkout', 'payment'],
|
|
102
|
+
light: ['admin-panel', 'settings']
|
|
103
|
+
}, "qe-regression-risk-analyzer");
|
|
104
|
+
```
|
|
185
105
|
|
|
186
|
-
|
|
187
|
-
- Jest or JUnit
|
|
188
|
-
- Playwright or Cypress
|
|
189
|
-
- Postman or REST-assured
|
|
190
|
-
- Cucumber or plain code
|
|
106
|
+
---
|
|
191
107
|
|
|
192
|
-
|
|
108
|
+
## Evolution from Traditional
|
|
193
109
|
|
|
194
|
-
|
|
110
|
+
| Old Way (Sequential) | Holistic + PACT (Concurrent) |
|
|
111
|
+
|---------------------|------------------------------|
|
|
112
|
+
| Dev writes → QA tests → bugs found → fixes | Team discusses what to build and how to test |
|
|
113
|
+
| Slow feedback, finger-pointing | Fast feedback, shared ownership |
|
|
114
|
+
| Quality as gatekeeping | Quality as enabler |
|
|
115
|
+
| QA on critical path | QA builds infrastructure, coaches |
|
|
195
116
|
|
|
196
|
-
|
|
197
|
-
**Autonomous:** "Can the team move forward without waiting for someone else?"
|
|
198
|
-
**Collaborative:** "Who else needs to be part of this conversation?"
|
|
199
|
-
**Targeted:** "What's the highest risk here, and are we testing it?"
|
|
117
|
+
---
|
|
200
118
|
|
|
201
119
|
## Success Signals
|
|
202
120
|
|
|
203
121
|
- Features deploy multiple times per day
|
|
204
122
|
- Bug escape rate trending down
|
|
205
|
-
- Team discusses quality naturally
|
|
123
|
+
- Team discusses quality naturally
|
|
206
124
|
- Developers write tests without being told
|
|
207
|
-
- Retrospectives focus on system improvements, not blame
|
|
208
125
|
- Releases are boring (in a good way)
|
|
209
126
|
|
|
210
|
-
|
|
127
|
+
---
|
|
211
128
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
129
|
+
## Agent Coordination Hints
|
|
130
|
+
|
|
131
|
+
### Memory Namespace
|
|
132
|
+
```
|
|
133
|
+
aqe/holistic-testing/
|
|
134
|
+
├── pact-assessment/* - PACT maturity analysis
|
|
135
|
+
├── quadrant-coverage/* - Coverage per quadrant
|
|
136
|
+
├── team-metrics/* - Quality ownership metrics
|
|
137
|
+
└── feedback-loops/* - Cycle time data
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Fleet Coordination
|
|
141
|
+
```typescript
|
|
142
|
+
const holisticFleet = await FleetManager.coordinate({
|
|
143
|
+
strategy: 'holistic-testing',
|
|
144
|
+
pact: { proactive: true, autonomous: true, collaborative: true, targeted: true },
|
|
145
|
+
agents: [
|
|
146
|
+
'qe-fleet-commander', // Orchestration
|
|
147
|
+
'qe-test-generator', // Tech quadrant
|
|
148
|
+
'qe-requirements-validator', // Business quadrant
|
|
149
|
+
'qe-quality-analyzer' // Metrics
|
|
150
|
+
],
|
|
151
|
+
topology: 'mesh'
|
|
152
|
+
});
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Related Skills
|
|
158
|
+
- [agentic-quality-engineering](../agentic-quality-engineering/) - Agent coordination
|
|
159
|
+
- [context-driven-testing](../context-driven-testing/) - Adapt to context
|
|
160
|
+
- [shift-left-testing](../shift-left-testing/) - Proactive testing
|
|
161
|
+
- [risk-based-testing](../risk-based-testing/) - Targeted testing
|
|
162
|
+
|
|
163
|
+
---
|
|
216
164
|
|
|
217
165
|
## Remember
|
|
218
166
|
|
|
219
|
-
|
|
167
|
+
**PACT = Proactive + Autonomous + Collaborative + Targeted**
|
|
168
|
+
|
|
169
|
+
Quality is built in, not tested in. Teams own quality. QA enables, doesn't gate. Test what matters, skip what doesn't. Measure outcomes, not activities.
|
|
170
|
+
|
|
171
|
+
**With Agents:** Agents analyze PACT maturity, recommend quadrant coverage, and coordinate whole-team quality. Use agents to scale holistic thinking while maintaining human judgment.
|
|
@@ -1,22 +1,65 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: localization-testing
|
|
3
|
-
description: Internationalization (i18n) and localization (l10n) testing for global products including translations, locale formats, RTL languages, and cultural appropriateness. Use when launching in new markets or building multi-language products.
|
|
3
|
+
description: "Internationalization (i18n) and localization (l10n) testing for global products including translations, locale formats, RTL languages, and cultural appropriateness. Use when launching in new markets or building multi-language products."
|
|
4
|
+
category: specialized-testing
|
|
5
|
+
priority: medium
|
|
6
|
+
tokenEstimate: 800
|
|
7
|
+
agents: [qe-test-generator, qe-test-executor, qe-visual-tester]
|
|
8
|
+
implementation_status: optimized
|
|
9
|
+
optimization_version: 1.0
|
|
10
|
+
last_optimized: 2025-12-02
|
|
11
|
+
dependencies: []
|
|
12
|
+
quick_reference_card: true
|
|
13
|
+
tags: [localization, i18n, l10n, translation, rtl, unicode, locale]
|
|
4
14
|
---
|
|
5
15
|
|
|
6
16
|
# Localization & Internationalization Testing
|
|
7
17
|
|
|
8
|
-
|
|
18
|
+
<default_to_action>
|
|
19
|
+
When testing multi-language/region support:
|
|
20
|
+
1. VERIFY translation coverage (all strings translated)
|
|
21
|
+
2. TEST locale-specific formats (date, time, currency, numbers)
|
|
22
|
+
3. VALIDATE RTL layout (Arabic, Hebrew)
|
|
23
|
+
4. CHECK character encoding (UTF-8, unicode)
|
|
24
|
+
5. CONFIRM cultural appropriateness (icons, colors, content)
|
|
25
|
+
|
|
26
|
+
**Quick i18n Checklist:**
|
|
27
|
+
- All user-facing strings externalized
|
|
28
|
+
- No hardcoded text in code
|
|
29
|
+
- Date/time/currency formatted per locale
|
|
30
|
+
- RTL languages flip layout correctly
|
|
31
|
+
- Unicode characters display properly
|
|
32
|
+
|
|
33
|
+
**Critical Success Factors:**
|
|
34
|
+
- Don't hardcode strings - externalize everything
|
|
35
|
+
- Test with real speakers, not just translation files
|
|
36
|
+
- RTL requires mirrored UI layout
|
|
37
|
+
</default_to_action>
|
|
38
|
+
|
|
39
|
+
## Quick Reference Card
|
|
40
|
+
|
|
41
|
+
### When to Use
|
|
42
|
+
- Launching in new markets
|
|
43
|
+
- Adding language support
|
|
44
|
+
- Before international releases
|
|
45
|
+
- After UI changes
|
|
46
|
+
|
|
47
|
+
### i18n vs l10n
|
|
48
|
+
| Term | Full Name | Focus |
|
|
49
|
+
|------|-----------|-------|
|
|
50
|
+
| **i18n** | Internationalization | Building for localization |
|
|
51
|
+
| **l10n** | Localization | Adapting for specific locale |
|
|
52
|
+
|
|
53
|
+
### Common Locale Formats
|
|
54
|
+
| Type | US (en-US) | UK (en-GB) | Japan (ja-JP) |
|
|
55
|
+
|------|------------|------------|---------------|
|
|
56
|
+
| **Date** | 10/24/2025 | 24/10/2025 | 2025/10/24 |
|
|
57
|
+
| **Currency** | $1,234.56 | £1,234.56 | ¥1,235 |
|
|
58
|
+
| **Number** | 1,234.56 | 1,234.56 | 1,234.56 |
|
|
9
59
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
i18n testing ensures software supports multiple languages, regions, and cultures without code changes.
|
|
13
|
-
|
|
14
|
-
## i18n vs l10n
|
|
15
|
-
|
|
16
|
-
**Internationalization (i18n):** Building software to support localization
|
|
17
|
-
**Localization (l10n):** Adapting software for specific locale
|
|
60
|
+
---
|
|
18
61
|
|
|
19
|
-
##
|
|
62
|
+
## Translation Coverage Testing
|
|
20
63
|
|
|
21
64
|
```javascript
|
|
22
65
|
test('all strings are translated', () => {
|
|
@@ -29,8 +72,9 @@ test('all strings are translated', () => {
|
|
|
29
72
|
expect(esKeys).toEqual(enKeys);
|
|
30
73
|
});
|
|
31
74
|
|
|
32
|
-
test('no missing translation placeholders', () => {
|
|
33
|
-
|
|
75
|
+
test('no missing translation placeholders', async ({ page }) => {
|
|
76
|
+
await page.goto('/?lang=fr');
|
|
77
|
+
const text = await page.textContent('body');
|
|
34
78
|
|
|
35
79
|
// Should not see placeholder keys
|
|
36
80
|
expect(text).not.toContain('translation.missing');
|
|
@@ -38,6 +82,8 @@ test('no missing translation placeholders', () => {
|
|
|
38
82
|
});
|
|
39
83
|
```
|
|
40
84
|
|
|
85
|
+
---
|
|
86
|
+
|
|
41
87
|
## Date/Time/Currency Formats
|
|
42
88
|
|
|
43
89
|
```javascript
|
|
@@ -52,16 +98,18 @@ test('date formats by locale', () => {
|
|
|
52
98
|
test('currency formats by locale', () => {
|
|
53
99
|
const amount = 1234.56;
|
|
54
100
|
|
|
55
|
-
expect(formatCurrency(amount, 'USD')).toBe('$1,234.56');
|
|
56
|
-
expect(formatCurrency(amount, 'EUR')).toBe('
|
|
57
|
-
expect(formatCurrency(amount, 'JPY')).toBe('¥1,235');
|
|
101
|
+
expect(formatCurrency(amount, 'en-US', 'USD')).toBe('$1,234.56');
|
|
102
|
+
expect(formatCurrency(amount, 'de-DE', 'EUR')).toBe('1.234,56 €');
|
|
103
|
+
expect(formatCurrency(amount, 'ja-JP', 'JPY')).toBe('¥1,235');
|
|
58
104
|
});
|
|
59
105
|
```
|
|
60
106
|
|
|
107
|
+
---
|
|
108
|
+
|
|
61
109
|
## RTL (Right-to-Left) Testing
|
|
62
110
|
|
|
63
111
|
```javascript
|
|
64
|
-
test('layout flips for RTL languages', async () => {
|
|
112
|
+
test('layout flips for RTL languages', async ({ page }) => {
|
|
65
113
|
await page.goto('/?lang=ar'); // Arabic
|
|
66
114
|
|
|
67
115
|
const dir = await page.locator('html').getAttribute('dir');
|
|
@@ -69,41 +117,105 @@ test('layout flips for RTL languages', async () => {
|
|
|
69
117
|
|
|
70
118
|
// Navigation should be on right
|
|
71
119
|
const nav = await page.locator('nav');
|
|
72
|
-
const styles = await nav.evaluate(
|
|
120
|
+
const styles = await nav.evaluate(el =>
|
|
73
121
|
window.getComputedStyle(el)
|
|
74
122
|
);
|
|
75
123
|
expect(styles.direction).toBe('rtl');
|
|
76
124
|
});
|
|
125
|
+
|
|
126
|
+
test('icons/images appropriate for RTL', async ({ page }) => {
|
|
127
|
+
await page.goto('/?lang=he'); // Hebrew
|
|
128
|
+
|
|
129
|
+
// Back arrow should point right in RTL
|
|
130
|
+
const backIcon = await page.locator('.back-icon');
|
|
131
|
+
expect(await backIcon.getAttribute('class')).toContain('rtl-flipped');
|
|
132
|
+
});
|
|
77
133
|
```
|
|
78
134
|
|
|
79
|
-
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Unicode Character Support
|
|
80
138
|
|
|
81
139
|
```javascript
|
|
82
|
-
test('supports unicode characters', async () => {
|
|
140
|
+
test('supports unicode characters', async ({ page }) => {
|
|
83
141
|
// Japanese
|
|
84
142
|
await page.fill('#name', '山田太郎');
|
|
143
|
+
await page.click('#submit');
|
|
144
|
+
|
|
145
|
+
const saved = await db.users.findOne({ /* ... */ });
|
|
146
|
+
expect(saved.name).toBe('山田太郎');
|
|
85
147
|
|
|
86
148
|
// Arabic
|
|
87
149
|
await page.fill('#name', 'محمد');
|
|
88
|
-
|
|
89
150
|
// Emoji
|
|
90
|
-
await page.fill('#
|
|
151
|
+
await page.fill('#bio', '👋🌍');
|
|
91
152
|
|
|
92
|
-
|
|
93
|
-
const saved = await db.users.findOne({ id: userId });
|
|
94
|
-
expect(saved.name).toBe('👋🌍');
|
|
153
|
+
expect(saved.bio).toBe('👋🌍');
|
|
95
154
|
});
|
|
96
155
|
```
|
|
97
156
|
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Agent-Driven Localization Testing
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Comprehensive localization validation
|
|
163
|
+
await Task("Localization Testing", {
|
|
164
|
+
url: 'https://example.com',
|
|
165
|
+
locales: ['en-US', 'fr-FR', 'de-DE', 'ja-JP', 'ar-SA'],
|
|
166
|
+
checks: ['translations', 'formats', 'rtl', 'unicode'],
|
|
167
|
+
detectHardcodedStrings: true
|
|
168
|
+
}, "qe-test-generator");
|
|
169
|
+
|
|
170
|
+
// Returns:
|
|
171
|
+
// {
|
|
172
|
+
// locales: 5,
|
|
173
|
+
// missingTranslations: 3,
|
|
174
|
+
// formatIssues: 1,
|
|
175
|
+
// rtlIssues: 0,
|
|
176
|
+
// hardcodedStrings: ['button.submit', 'header.title']
|
|
177
|
+
// }
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Agent Coordination Hints
|
|
183
|
+
|
|
184
|
+
### Memory Namespace
|
|
185
|
+
```
|
|
186
|
+
aqe/localization-testing/
|
|
187
|
+
├── translations/* - Translation coverage
|
|
188
|
+
├── formats/* - Locale-specific formats
|
|
189
|
+
├── rtl-validation/* - RTL layout checks
|
|
190
|
+
└── unicode/* - Character encoding tests
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Fleet Coordination
|
|
194
|
+
```typescript
|
|
195
|
+
const l10nFleet = await FleetManager.coordinate({
|
|
196
|
+
strategy: 'localization-testing',
|
|
197
|
+
agents: [
|
|
198
|
+
'qe-test-generator', // Generate l10n tests
|
|
199
|
+
'qe-test-executor', // Execute across locales
|
|
200
|
+
'qe-visual-tester' // RTL visual validation
|
|
201
|
+
],
|
|
202
|
+
topology: 'parallel'
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Related Skills
|
|
209
|
+
- [accessibility-testing](../accessibility-testing/) - Language accessibility
|
|
210
|
+
- [compatibility-testing](../compatibility-testing/) - Cross-platform i18n
|
|
211
|
+
- [visual-testing-advanced](../visual-testing-advanced/) - RTL visual regression
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
98
215
|
## Remember
|
|
99
216
|
|
|
100
|
-
**Don't hardcode. Externalize all user-facing strings.**
|
|
217
|
+
**Don't hardcode. Externalize all user-facing strings.** Every string visible to users must come from translation files, not code.
|
|
101
218
|
|
|
102
|
-
Test
|
|
103
|
-
- Translation completeness
|
|
104
|
-
- Locale-specific formats (date, time, currency)
|
|
105
|
-
- RTL layout (Arabic, Hebrew)
|
|
106
|
-
- Character encoding (UTF-8)
|
|
107
|
-
- Cultural appropriateness
|
|
219
|
+
**Test with native speakers, not just translation files.** Machine translations and translation files can have context issues that only native speakers catch.
|
|
108
220
|
|
|
109
|
-
**With Agents:** Agents validate translation coverage, detect hardcoded strings,
|
|
221
|
+
**With Agents:** Agents validate translation coverage, detect hardcoded strings, test locale-specific formatting, and verify RTL layouts automatically across all supported languages.
|