Skip to content

Commit 880904f

Browse files
Feat/organise by suite (#7)
1 parent e91c6c9 commit 880904f

File tree

6 files changed

+213
-27
lines changed

6 files changed

+213
-27
lines changed

README.md

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,62 @@ We’d love your feedback, <a href="https://app.formbricks.com/s/cmefs524mhlh1tl
3333
npm install ctrf
3434
```
3535

36-
## API reference
37-
38-
See [API reference](./docs) for more details.
36+
## API Reference
37+
38+
### Schema Types
39+
40+
- [Attachment](docs/interfaces/Attachment.md)
41+
- [Baseline](docs/interfaces/Baseline.md)
42+
- [Environment](docs/interfaces/Environment.md)
43+
- [InsightsMetric](docs/interfaces/InsightsMetric.md)
44+
- [Report](docs/interfaces/Report.md)
45+
- [Results](docs/interfaces/Results.md)
46+
- [RetryAttempt](docs/interfaces/RetryAttempt.md)
47+
- [RootInsights](docs/interfaces/RootInsights.md)
48+
- [Step](docs/interfaces/Step.md)
49+
- [Summary](docs/interfaces/Summary.md)
50+
- [Test](docs/interfaces/Test.md)
51+
- [TestInsights](docs/interfaces/TestInsights.md)
52+
- [Tool](docs/interfaces/Tool.md)
53+
- [TestStatus](docs/type-aliases/TestStatus.md)
54+
55+
### File Operations Methods
56+
57+
- [readReportFromFile](docs/functions/readReportFromFile.md)
58+
- [readReportsFromDirectory](docs/functions/readReportsFromDirectory.md)
59+
- [readReportsFromGlobPattern](docs/functions/readReportsFromGlobPattern.md)
60+
61+
### Report Processing Methods
62+
63+
- [enrichReportWithInsights](docs/functions/enrichReportWithInsights.md)
64+
- [mergeReports](docs/functions/mergeReports.md)
65+
- [sortReportsByTimestamp](docs/functions/sortReportsByTimestamp.md)
66+
- [storePreviousResults](docs/functions/storePreviousResults.md)
67+
68+
### Validation Methods
69+
70+
- [isValidCtrfReport](docs/functions/isValidCtrfReport.md)
71+
- [validateReport](docs/functions/validateReport.md)
72+
- [validateReportStrict](docs/functions/validateReportStrict.md)
73+
74+
### Tree Operations Methods
75+
76+
- [findSuiteByName](docs/functions/findSuiteByName.md)
77+
- [findTestByName](docs/functions/findTestByName.md)
78+
- [flattenTree](docs/functions/flattenTree.md)
79+
- [getAllTests](docs/functions/getAllTests.md)
80+
- [getSuiteStats](docs/functions/getSuiteStats.md)
81+
- [organizeTestsBySuite](docs/functions/organizeTestsBySuite.md)
82+
- [traverseTree](docs/functions/traverseTree.md)
83+
84+
### Utility Types
85+
86+
- [SortOrder](docs/enumerations/SortOrder.md) (enumeration)
87+
- [TestTree](docs/interfaces/TestTree.md)
88+
- [TreeNode](docs/interfaces/TreeNode.md)
89+
- [TreeOptions](docs/interfaces/TreeOptions.md)
90+
- [ValidationResult](docs/interfaces/ValidationResult.md)
91+
- [TreeTest](docs/type-aliases/TreeTest.md)
3992

4093
## TypeScript Types
4194

docs/README.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,34 @@
2121
- [Tool](interfaces/Tool.md)
2222
- [TestStatus](type-aliases/TestStatus.md)
2323

24-
## Methods
24+
## File Operations
25+
26+
- [readReportFromFile](functions/readReportFromFile.md)
27+
- [readReportsFromDirectory](functions/readReportsFromDirectory.md)
28+
- [readReportsFromGlobPattern](functions/readReportsFromGlobPattern.md)
29+
30+
## Report Processing
2531

2632
- [enrichReportWithInsights](functions/enrichReportWithInsights.md)
33+
- [mergeReports](functions/mergeReports.md)
34+
- [sortReportsByTimestamp](functions/sortReportsByTimestamp.md)
35+
- [storePreviousResults](functions/storePreviousResults.md)
36+
37+
## Validation
38+
39+
- [isValidCtrfReport](functions/isValidCtrfReport.md)
40+
- [validateReport](functions/validateReport.md)
41+
- [validateReportStrict](functions/validateReportStrict.md)
42+
43+
## Tree Operations
44+
2745
- [findSuiteByName](functions/findSuiteByName.md)
2846
- [findTestByName](functions/findTestByName.md)
2947
- [flattenTree](functions/flattenTree.md)
3048
- [getAllTests](functions/getAllTests.md)
3149
- [getSuiteStats](functions/getSuiteStats.md)
32-
- [isValidCtrfReport](functions/isValidCtrfReport.md)
33-
- [mergeReports](functions/mergeReports.md)
3450
- [organizeTestsBySuite](functions/organizeTestsBySuite.md)
35-
- [readReportFromFile](functions/readReportFromFile.md)
36-
- [readReportsFromDirectory](functions/readReportsFromDirectory.md)
37-
- [readReportsFromGlobPattern](functions/readReportsFromGlobPattern.md)
38-
- [sortReportsByTimestamp](functions/sortReportsByTimestamp.md)
39-
- [storePreviousResults](functions/storePreviousResults.md)
4051
- [traverseTree](functions/traverseTree.md)
41-
- [validateReport](functions/validateReport.md)
42-
- [validateReportStrict](functions/validateReportStrict.md)
4352

4453
## Enumerations
4554

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"format:check": "prettier --check .",
2525
"docs": "typedoc",
2626
"docs:watch": "typedoc --watch",
27+
"update-readme": "npx tsx update-readme.ts",
2728
"all": "npm run build:check && npm run test:coverage && npm run lint && npm run format && npm run docs && npm run build"
2829
},
2930
"files": [

src/index.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
11
/**
2-
* @group Methods
2+
* @group Report Processing
33
*/
44
export { mergeReports } from './methods/merge-reports.js'
55
/**
6-
* @group Methods
6+
* @group File Operations
7+
*/
8+
export { readReportFromFile } from './methods/read-reports.js'
9+
/**
10+
* @group File Operations
711
*/
812
export { readReportsFromDirectory } from './methods/read-reports.js'
913
/**
10-
* @group Methods
14+
* @group File Operations
1115
*/
1216
export { readReportsFromGlobPattern } from './methods/read-reports.js'
1317
/**
14-
* @group Methods
18+
* @group Report Processing
1519
*/
1620
export { enrichReportWithInsights } from './methods/run-insights.js'
1721
/**
18-
* @group Methods
22+
* @group Report Processing
1923
*/
2024
export {
2125
sortReportsByTimestamp,
2226
SortOrder,
2327
} from './methods/utilities/sort-reports.js'
2428
/**
25-
* @group Methods
29+
* @group Report Processing
2630
*/
2731
export { storePreviousResults } from './methods/store-previous-results.js'
2832
/**
29-
* @group Methods
30-
*/
31-
export { readReportFromFile } from './methods/read-reports.js'
32-
/**
33-
* @group Methods
33+
* @group Validation
3434
*/
3535
export {
3636
validateReport,
3737
validateReportStrict,
3838
isValidCtrfReport,
3939
} from './methods/validate-schema.js'
4040
/**
41-
* @group Methods
41+
* @group Tree Operations
4242
*/
4343
export {
4444
organizeTestsBySuite,

typedoc.json

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,24 @@
77
"excludeExternals": true,
88
"includeVersion": true,
99
"categorizeByGroup": true,
10-
"categoryOrder": ["Schema", "Utility Types", "Methods", "*"],
11-
"groupOrder": ["Schema", "Utility Types", "Methods", "*"],
10+
"categoryOrder": [
11+
"Schema",
12+
"File Operations",
13+
"Report Processing",
14+
"Validation",
15+
"Tree Operations",
16+
"Utility Types",
17+
"*"
18+
],
19+
"groupOrder": [
20+
"Schema",
21+
"File Operations",
22+
"Report Processing",
23+
"Validation",
24+
"Tree Operations",
25+
"Utility Types",
26+
"*"
27+
],
1228
"readme": "none",
1329
"plugin": ["typedoc-plugin-markdown"],
1430
"name": "CTRF ",

update-readme.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#!/usr/bin/env tsx
2+
3+
import fs from 'fs'
4+
import path from 'path'
5+
6+
const README_PATH = path.join(process.cwd(), 'README.md')
7+
const DOCS_PATH = path.join(process.cwd(), 'docs', 'README.md')
8+
9+
function extractCategorizedSections(docsContent: string): string {
10+
const sections = [
11+
{ name: 'Schema', newName: 'Schema Types' },
12+
{ name: 'File Operations', newName: 'File Operations Methods' },
13+
{ name: 'Report Processing', newName: 'Report Processing Methods' },
14+
{ name: 'Validation', newName: 'Validation Methods' },
15+
{ name: 'Tree Operations', newName: 'Tree Operations Methods' },
16+
{ name: 'Enumerations', newName: 'Utility Types' },
17+
{ name: 'Interfaces', newName: 'Utility Types' },
18+
{ name: 'Type Aliases', newName: 'Utility Types' },
19+
]
20+
21+
let apiContent = '## API Reference\n'
22+
let utilityTypesAdded = false
23+
24+
for (const section of sections) {
25+
const sectionStart = docsContent.indexOf(`## ${section.name}`)
26+
if (sectionStart === -1) continue
27+
28+
const nextSectionStart = docsContent.indexOf('## ', sectionStart + 1)
29+
const sectionEnd =
30+
nextSectionStart === -1 ? docsContent.length : nextSectionStart
31+
32+
let sectionContent = docsContent.substring(sectionStart, sectionEnd).trim()
33+
34+
sectionContent = sectionContent.replace(/\]\(([^)]+)\)/g, (match, url) => {
35+
if (url.startsWith('http') || url.startsWith('docs/')) {
36+
return match
37+
}
38+
return `](docs/${url})`
39+
})
40+
41+
if (['Enumerations', 'Interfaces', 'Type Aliases'].includes(section.name)) {
42+
if (!utilityTypesAdded) {
43+
apiContent += '\n### Utility Types\n\n'
44+
utilityTypesAdded = true
45+
}
46+
const lines = sectionContent.split('\n')
47+
let listItems = lines.filter(line => line.startsWith('- ['))
48+
if (section.name === 'Enumerations' && listItems.length > 0) {
49+
listItems = listItems.map(item => item + ' (enumeration)')
50+
}
51+
if (listItems.length > 0) {
52+
apiContent += listItems.join('\n') + '\n'
53+
}
54+
} else {
55+
sectionContent = sectionContent.replace(
56+
`## ${section.name}`,
57+
`### ${section.newName}`
58+
)
59+
apiContent += '\n' + sectionContent + '\n'
60+
}
61+
}
62+
63+
return apiContent.trim()
64+
}
65+
66+
function updateReadmeWithDocs() {
67+
try {
68+
const originalReadme = fs.readFileSync(README_PATH, 'utf-8')
69+
70+
const generatedDocs = fs.readFileSync(DOCS_PATH, 'utf-8')
71+
72+
const apiReferenceContent = extractCategorizedSections(generatedDocs)
73+
74+
const originalApiReferenceStart = originalReadme.indexOf('## API Reference')
75+
const nextSectionStart = originalReadme.indexOf(
76+
'## ',
77+
originalApiReferenceStart + 1
78+
)
79+
80+
if (originalApiReferenceStart === -1) {
81+
console.error('Could not find "## API Reference" section in README.md')
82+
process.exit(1)
83+
}
84+
85+
const beforeApiReference = originalReadme.substring(
86+
0,
87+
originalApiReferenceStart
88+
)
89+
90+
const afterApiReference =
91+
nextSectionStart !== -1 ? originalReadme.substring(nextSectionStart) : ''
92+
93+
const newReadme =
94+
beforeApiReference +
95+
apiReferenceContent +
96+
(afterApiReference ? '\n\n' + afterApiReference : '')
97+
98+
fs.writeFileSync(README_PATH, newReadme)
99+
100+
console.log('✅ README.md updated with categorized API documentation')
101+
} catch (error) {
102+
console.error('❌ Error updating README:', error)
103+
process.exit(1)
104+
}
105+
}
106+
107+
updateReadmeWithDocs()

0 commit comments

Comments
 (0)