faf-taf-git 2.0.4
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/.faf +126 -0
- package/.faf-dna +95 -0
- package/.fafignore +41 -0
- package/.taf +21 -0
- package/CHANGELOG.md +208 -0
- package/CLAUDE.md +30 -0
- package/CONTRIBUTING.md +286 -0
- package/LICENSE +21 -0
- package/README.md +496 -0
- package/action.yml +42 -0
- package/dist/bundle/index.js +36554 -0
- package/dist/cli.d.ts +31 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +380 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36560 -0
- package/dist/index.js.map +1 -0
- package/dist/licenses.txt +148 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +147 -0
- package/dist/main.js.map +1 -0
- package/dist/parsers/jest.d.ts +38 -0
- package/dist/parsers/jest.d.ts.map +1 -0
- package/dist/parsers/jest.js +87 -0
- package/dist/parsers/jest.js.map +1 -0
- package/dist/sourcemap-register.js +1 -0
- package/dist/taf-core.d.ts +12 -0
- package/dist/taf-core.d.ts.map +1 -0
- package/dist/taf-core.js +136 -0
- package/dist/taf-core.js.map +1 -0
- package/docs/RELEASE-NOTES.md +200 -0
- package/docs/USER-GUIDE.md +301 -0
- package/jest.config.js +13 -0
- package/package.json +47 -0
- package/project.faf +259 -0
- package/src/cli.ts +393 -0
- package/src/index.ts +131 -0
- package/src/parsers/jest.ts +104 -0
- package/src/taf-core.ts +139 -0
- package/test-mcp.ts +83 -0
- package/test-standalone.ts +87 -0
- package/tests/jest-parser.test.ts +122 -0
- package/tests/wjttc-taf.test.ts +470 -0
- package/tsconfig.json +18 -0
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Contributing to FAF TAF Action
|
|
2
|
+
|
|
3
|
+
Thank you for considering contributing to the FAF TAF Action!
|
|
4
|
+
|
|
5
|
+
## Philosophy
|
|
6
|
+
|
|
7
|
+
We follow the **WJTTC (WolfeJam Technical & Testing Center)** philosophy:
|
|
8
|
+
|
|
9
|
+
> "We break things so others never know they were broken."
|
|
10
|
+
|
|
11
|
+
This means:
|
|
12
|
+
- Test everything
|
|
13
|
+
- Find bugs early
|
|
14
|
+
- Fix them immediately
|
|
15
|
+
- Maintain championship standards
|
|
16
|
+
|
|
17
|
+
## Code of Conduct
|
|
18
|
+
|
|
19
|
+
- Be professional
|
|
20
|
+
- Be respectful
|
|
21
|
+
- Focus on facts
|
|
22
|
+
- Trust is everything
|
|
23
|
+
- No BS - only verified claims
|
|
24
|
+
|
|
25
|
+
## Development Setup
|
|
26
|
+
|
|
27
|
+
### Prerequisites
|
|
28
|
+
|
|
29
|
+
- Node.js 20+
|
|
30
|
+
- npm or yarn
|
|
31
|
+
- Git
|
|
32
|
+
- TypeScript knowledge
|
|
33
|
+
|
|
34
|
+
### Getting Started
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Clone the repository
|
|
38
|
+
git clone https://github.com/Wolfe-Jam/faf-taf-action.git
|
|
39
|
+
cd faf-taf-action
|
|
40
|
+
|
|
41
|
+
# Install dependencies
|
|
42
|
+
npm install
|
|
43
|
+
|
|
44
|
+
# Build the project
|
|
45
|
+
npm run build
|
|
46
|
+
|
|
47
|
+
# Run tests
|
|
48
|
+
npm test
|
|
49
|
+
|
|
50
|
+
# Run integration tests
|
|
51
|
+
npx tsx test-standalone.ts
|
|
52
|
+
npx tsx test-mcp.ts
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Project Structure
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
faf-taf-action/
|
|
59
|
+
├── src/
|
|
60
|
+
│ ├── index.ts # Main action entry point
|
|
61
|
+
│ ├── taf-core.ts # MCP-portable TAF operations
|
|
62
|
+
│ └── parsers/
|
|
63
|
+
│ └── jest.ts # Jest output parser
|
|
64
|
+
├── tests/
|
|
65
|
+
│ └── jest-parser.test.ts # Unit tests
|
|
66
|
+
├── docs/
|
|
67
|
+
│ ├── USER-GUIDE.md # User documentation
|
|
68
|
+
│ └── RELEASE-NOTES.md # Release history
|
|
69
|
+
├── action.yml # Action definition
|
|
70
|
+
└── package.json # Dependencies
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## How to Contribute
|
|
74
|
+
|
|
75
|
+
### 1. Report Bugs
|
|
76
|
+
|
|
77
|
+
Open an issue with:
|
|
78
|
+
- Clear description
|
|
79
|
+
- Steps to reproduce
|
|
80
|
+
- Expected vs actual behavior
|
|
81
|
+
- Environment details
|
|
82
|
+
- Minimal reproduction case
|
|
83
|
+
|
|
84
|
+
### 2. Suggest Features
|
|
85
|
+
|
|
86
|
+
Open an issue with:
|
|
87
|
+
- Use case description
|
|
88
|
+
- Why it's valuable
|
|
89
|
+
- Proposed implementation (optional)
|
|
90
|
+
- Alternatives considered
|
|
91
|
+
|
|
92
|
+
### 3. Submit Code
|
|
93
|
+
|
|
94
|
+
1. Fork the repository
|
|
95
|
+
2. Create a feature branch
|
|
96
|
+
3. Make your changes
|
|
97
|
+
4. Add tests
|
|
98
|
+
5. Update documentation
|
|
99
|
+
6. Submit a pull request
|
|
100
|
+
|
|
101
|
+
## Coding Standards
|
|
102
|
+
|
|
103
|
+
### TypeScript
|
|
104
|
+
|
|
105
|
+
- Use strict mode (already configured)
|
|
106
|
+
- Explicit types everywhere
|
|
107
|
+
- No `any` unless absolutely necessary
|
|
108
|
+
- Descriptive variable names
|
|
109
|
+
- Functions should be pure when possible
|
|
110
|
+
|
|
111
|
+
### Testing
|
|
112
|
+
|
|
113
|
+
- All new code must have tests
|
|
114
|
+
- Maintain 100% coverage for critical paths
|
|
115
|
+
- Use descriptive test names
|
|
116
|
+
- Test both success and failure cases
|
|
117
|
+
|
|
118
|
+
### Documentation
|
|
119
|
+
|
|
120
|
+
- Update README.md for user-facing changes
|
|
121
|
+
- Update USER-GUIDE.md for new features
|
|
122
|
+
- Add inline comments for complex logic
|
|
123
|
+
- Keep CLAUDE.md synchronized
|
|
124
|
+
|
|
125
|
+
### Commits
|
|
126
|
+
|
|
127
|
+
Follow our git protocol:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
<type>: <what changed>
|
|
131
|
+
|
|
132
|
+
- <specific change 1>
|
|
133
|
+
- <specific change 2>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Types:** `fix:` `feat:` `docs:` `refactor:` `chore:` `test:`
|
|
137
|
+
|
|
138
|
+
**Examples:**
|
|
139
|
+
```
|
|
140
|
+
fix: Handle Jest output with skipped tests
|
|
141
|
+
|
|
142
|
+
- Add skipped count parsing
|
|
143
|
+
- Update test result interface
|
|
144
|
+
- Add unit tests for skipped tests
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
feat: Add Mocha parser support
|
|
149
|
+
|
|
150
|
+
- Create mocha.ts parser
|
|
151
|
+
- Add Mocha output format detection
|
|
152
|
+
- Update documentation
|
|
153
|
+
- Add integration tests
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Never:**
|
|
157
|
+
- No exclamation marks
|
|
158
|
+
- No emotion or hype
|
|
159
|
+
- No "finally" or "at last"
|
|
160
|
+
- Keep it boring and professional
|
|
161
|
+
|
|
162
|
+
## Adding Test Framework Support
|
|
163
|
+
|
|
164
|
+
To add support for a new test framework:
|
|
165
|
+
|
|
166
|
+
### 1. Create Parser
|
|
167
|
+
|
|
168
|
+
Create `src/parsers/[framework].ts`:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
export interface TestResults {
|
|
172
|
+
total: number;
|
|
173
|
+
passed: number;
|
|
174
|
+
failed: number;
|
|
175
|
+
skipped?: number;
|
|
176
|
+
result: 'PASSED' | 'FAILED' | 'IMPROVED' | 'DEGRADED';
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export function parseFrameworkOutput(output: string): TestResults | null {
|
|
180
|
+
// Parse framework-specific output
|
|
181
|
+
// Return null if output doesn't match format
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 2. Add Tests
|
|
186
|
+
|
|
187
|
+
Create `tests/[framework]-parser.test.ts`:
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import { parseFrameworkOutput } from '../src/parsers/framework';
|
|
191
|
+
|
|
192
|
+
describe('Framework Parser', () => {
|
|
193
|
+
it('should parse all passing tests', () => {
|
|
194
|
+
const output = `...`;
|
|
195
|
+
const result = parseFrameworkOutput(output);
|
|
196
|
+
expect(result?.total).toBe(10);
|
|
197
|
+
// ... more assertions
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Test all output variations
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 3. Update Main Entry
|
|
205
|
+
|
|
206
|
+
Modify `src/index.ts` to detect and use the new parser.
|
|
207
|
+
|
|
208
|
+
### 4. Update Documentation
|
|
209
|
+
|
|
210
|
+
- Add to README.md supported frameworks list
|
|
211
|
+
- Add examples to USER-GUIDE.md
|
|
212
|
+
- Update RELEASE-NOTES.md
|
|
213
|
+
|
|
214
|
+
## Testing Requirements
|
|
215
|
+
|
|
216
|
+
Before submitting a PR:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# All unit tests must pass
|
|
220
|
+
npm test
|
|
221
|
+
|
|
222
|
+
# Build must succeed with no errors
|
|
223
|
+
npm run build
|
|
224
|
+
|
|
225
|
+
# Integration tests must pass
|
|
226
|
+
npx tsx test-standalone.ts
|
|
227
|
+
npx tsx test-mcp.ts
|
|
228
|
+
|
|
229
|
+
# TypeScript must compile with no errors
|
|
230
|
+
npx tsc --noEmit
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Review Process
|
|
234
|
+
|
|
235
|
+
1. **Automated Checks**
|
|
236
|
+
- TypeScript compilation
|
|
237
|
+
- Test suite (must be 100%)
|
|
238
|
+
- Linting
|
|
239
|
+
|
|
240
|
+
2. **Code Review**
|
|
241
|
+
- Architecture fit
|
|
242
|
+
- Code quality
|
|
243
|
+
- Test coverage
|
|
244
|
+
- Documentation
|
|
245
|
+
|
|
246
|
+
3. **Testing**
|
|
247
|
+
- Manual testing if needed
|
|
248
|
+
- Integration verification
|
|
249
|
+
|
|
250
|
+
4. **Approval & Merge**
|
|
251
|
+
- Squash and merge
|
|
252
|
+
- Clean commit history
|
|
253
|
+
|
|
254
|
+
## Release Process
|
|
255
|
+
|
|
256
|
+
Releases follow semantic versioning:
|
|
257
|
+
|
|
258
|
+
- **Major** (v2.0.0): Breaking changes
|
|
259
|
+
- **Minor** (v1.1.0): New features, backward compatible
|
|
260
|
+
- **Patch** (v1.0.1): Bug fixes
|
|
261
|
+
|
|
262
|
+
Release checklist:
|
|
263
|
+
1. Update version in package.json
|
|
264
|
+
2. Update RELEASE-NOTES.md
|
|
265
|
+
3. Run full test suite
|
|
266
|
+
4. Build and verify dist/
|
|
267
|
+
5. Create git tag
|
|
268
|
+
6. Push to GitHub
|
|
269
|
+
7. Create GitHub release
|
|
270
|
+
8. Announce in discussions
|
|
271
|
+
|
|
272
|
+
## Championship Standards
|
|
273
|
+
|
|
274
|
+
We maintain F1-inspired engineering standards:
|
|
275
|
+
|
|
276
|
+
- **Methodical**: Not a race, do it right
|
|
277
|
+
- **Tested**: WJTTC certified
|
|
278
|
+
- **Professional**: Boring is good
|
|
279
|
+
- **Trusted**: Facts only, no hype
|
|
280
|
+
|
|
281
|
+
## Questions?
|
|
282
|
+
|
|
283
|
+
- GitHub Discussions: https://github.com/Wolfe-Jam/faf/discussions
|
|
284
|
+
- Email: team@faf.one
|
|
285
|
+
|
|
286
|
+
Thank you for contributing to the Golden Triangle!
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Wolfe James (wolfejam)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|