@activate-core/test-forge 0.17.0 → 0.18.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/dist/core/validate.js +23 -0
- package/package.json +1 -1
package/dist/core/validate.js
CHANGED
|
@@ -114,6 +114,29 @@ export function checkTestGates(content, _ext, ctx) {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
// F12 — "same host" is not a reason to abandon a dependency. A skip that
|
|
118
|
+
// blames the dependency for sharing a hostname with the app, without saying
|
|
119
|
+
// what else was tried, is the generator giving up on a stub it could have
|
|
120
|
+
// scoped. A service on another PORT is a different origin; one under its own
|
|
121
|
+
// PATH prefix is separable too; failing both, a predicate on the request
|
|
122
|
+
// itself usually is. Left unchecked this costs whole areas: sixty-four checks
|
|
123
|
+
// in one journey skipped on this wording alone, against a dependency sitting
|
|
124
|
+
// on a plainly different port.
|
|
125
|
+
//
|
|
126
|
+
// The rule still allows the genuine case — a dependency that truly cannot be
|
|
127
|
+
// told apart — but the reason has to show the work: name the port, the path,
|
|
128
|
+
// or the request property you checked.
|
|
129
|
+
{
|
|
130
|
+
const sameHost = /\b(?:skip|fixme)\s*\([^)]{0,400}?same\s+host(?:name)?[^)]{0,400}?\)/is;
|
|
131
|
+
const showedWork = /\b(?:port|origin|path\s*prefix|prefix|resource\s*type|header|predicate)\b/i;
|
|
132
|
+
const m = content.match(sameHost);
|
|
133
|
+
if (m && !showedWork.test(m[0])) {
|
|
134
|
+
return ('a test is skipped because the dependency "shares a host" with the app, ' +
|
|
135
|
+
'without saying what else was checked — a different port is a different ' +
|
|
136
|
+
'origin, and a path prefix or a request predicate usually separates them ' +
|
|
137
|
+
'too; scope the stub to one of those, or name the ones you ruled out');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
117
140
|
// F10 — selector grounding: a RUNNABLE (non-skipped) UI test must not lean
|
|
118
141
|
// on a guessed selector. Unchecked, the generator invents plausible
|
|
119
142
|
// data-testids that time out at runtime — the journey is never really
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activate-core/test-forge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "AI-powered QA automation. Scans a project, drafts journey docs, and generates seeded Jest/Playwright tests. Works in any project, with any AI CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|