@dev-blinq/cucumber-js 1.0.0 → 1.0.2
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/bin/cucumber.ts +2 -0
- package/lib/api/gherkin.js +25 -0
- package/lib/api/gherkin.js.map +1 -1
- package/lib/formatter/feature_data_format.d.ts +10 -0
- package/lib/formatter/feature_data_format.js +76 -0
- package/lib/formatter/feature_data_format.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -1
package/bin/cucumber.ts
ADDED
package/lib/api/gherkin.js
CHANGED
|
@@ -8,14 +8,39 @@ const gherkin_streams_1 = require("@cucumber/gherkin-streams");
|
|
|
8
8
|
const gherkin_utils_1 = require("@cucumber/gherkin-utils");
|
|
9
9
|
const pickle_filter_1 = __importDefault(require("../pickle_filter"));
|
|
10
10
|
const helpers_1 = require("../cli/helpers");
|
|
11
|
+
const feature_data_format_1 = require("../formatter/feature_data_format");
|
|
11
12
|
async function getFilteredPicklesAndErrors({ newId, cwd, logger, unexpandedFeaturePaths, featurePaths, coordinates, onEnvelope, }) {
|
|
12
13
|
const gherkinQuery = new gherkin_utils_1.Query();
|
|
13
14
|
const parseErrors = [];
|
|
15
|
+
let variables;
|
|
14
16
|
await gherkinFromPaths(featurePaths, {
|
|
15
17
|
newId,
|
|
16
18
|
relativeTo: cwd,
|
|
17
19
|
defaultDialect: coordinates.defaultDialect,
|
|
18
20
|
}, (envelope) => {
|
|
21
|
+
if (envelope.source) {
|
|
22
|
+
const data = (0, feature_data_format_1.generateTestData)(envelope.source.data);
|
|
23
|
+
envelope.source.data = data.newContent;
|
|
24
|
+
variables = data.variables;
|
|
25
|
+
}
|
|
26
|
+
if (envelope.gherkinDocument && envelope.gherkinDocument.feature) {
|
|
27
|
+
envelope.gherkinDocument.feature.children =
|
|
28
|
+
envelope.gherkinDocument.feature.children.map((scenario) => {
|
|
29
|
+
if (scenario.scenario) {
|
|
30
|
+
scenario.scenario.steps = scenario.scenario.steps.map((step) => {
|
|
31
|
+
step.text = (0, feature_data_format_1.generateTestData)(step.text, variables).newContent;
|
|
32
|
+
return step;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return scenario;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (envelope.pickle) {
|
|
39
|
+
envelope.pickle.steps = envelope.pickle.steps.map((step) => {
|
|
40
|
+
step.text = (0, feature_data_format_1.generateTestData)(step.text, variables).newContent;
|
|
41
|
+
return step;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
19
44
|
gherkinQuery.update(envelope);
|
|
20
45
|
if (envelope.parseError) {
|
|
21
46
|
parseErrors.push(envelope.parseError);
|
package/lib/api/gherkin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../../src/api/gherkin.ts"],"names":[],"mappings":";;;;;;AAAA,+DAGkC;AASlC,2DAA+D;AAC/D,qEAA2C;AAC3C,4CAA6C;
|
|
1
|
+
{"version":3,"file":"gherkin.js","sourceRoot":"","sources":["../../src/api/gherkin.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n GherkinStreams,\n IGherkinStreamOptions,\n} from '@cucumber/gherkin-streams'\nimport {\n Envelope,\n GherkinDocument,\n IdGenerator,\n Location,\n ParseError,\n Pickle,\n} from '@cucumber/messages'\nimport { Query as GherkinQuery } from '@cucumber/gherkin-utils'\nimport PickleFilter from '../pickle_filter'\nimport { orderPickles } from '../cli/helpers'\nimport { ISourcesCoordinates } from './types'\nimport { ILogger } from '../logger'\nimport { generateTestData } from '../formatter/feature_data_format'\n\ninterface PickleWithDocument {\n gherkinDocument: GherkinDocument\n location: Location\n pickle: Pickle\n}\n\nexport async function getFilteredPicklesAndErrors({\n newId,\n cwd,\n logger,\n unexpandedFeaturePaths,\n featurePaths,\n coordinates,\n onEnvelope,\n}: {\n newId: IdGenerator.NewId\n cwd: string\n logger: ILogger\n unexpandedFeaturePaths: string[]\n featurePaths: string[]\n coordinates: ISourcesCoordinates\n onEnvelope?: (envelope: Envelope) => void\n}): Promise<{\n filteredPickles: PickleWithDocument[]\n parseErrors: ParseError[]\n}> {\n const gherkinQuery = new GherkinQuery()\n const parseErrors: ParseError[] = []\n let variables: any\n\n await gherkinFromPaths(\n featurePaths,\n {\n newId,\n relativeTo: cwd,\n defaultDialect: coordinates.defaultDialect,\n },\n (envelope) => {\n if (envelope.source) {\n const data = generateTestData(envelope.source.data)\n envelope.source.data = data.newContent\n variables = data.variables\n }\n\n if (envelope.gherkinDocument && envelope.gherkinDocument.feature) {\n envelope.gherkinDocument.feature.children =\n envelope.gherkinDocument.feature.children.map((scenario) => {\n if (scenario.scenario) {\n scenario.scenario.steps = scenario.scenario.steps.map((step) => {\n step.text = generateTestData(step.text, variables).newContent\n return step\n })\n }\n return scenario\n })\n }\n\n if (envelope.pickle) {\n envelope.pickle.steps = envelope.pickle.steps.map((step) => {\n step.text = generateTestData(step.text, variables).newContent\n return step\n })\n }\n\n gherkinQuery.update(envelope)\n if (envelope.parseError) {\n parseErrors.push(envelope.parseError)\n }\n onEnvelope?.(envelope)\n }\n )\n const pickleFilter = new PickleFilter({\n cwd,\n featurePaths: unexpandedFeaturePaths,\n names: coordinates.names,\n tagExpression: coordinates.tagExpression,\n })\n const filteredPickles: PickleWithDocument[] = gherkinQuery\n .getPickles()\n .filter((pickle) => {\n const gherkinDocument = gherkinQuery\n .getGherkinDocuments()\n .find((doc) => doc.uri === pickle.uri)\n return pickleFilter.matches({ gherkinDocument, pickle })\n })\n .map((pickle) => {\n const gherkinDocument = gherkinQuery\n .getGherkinDocuments()\n .find((doc) => doc.uri === pickle.uri)\n const location = gherkinQuery.getLocation(\n pickle.astNodeIds[pickle.astNodeIds.length - 1]\n )\n return {\n gherkinDocument,\n location,\n pickle,\n }\n })\n orderPickles(filteredPickles, coordinates.order, logger)\n return {\n filteredPickles,\n parseErrors,\n }\n}\n\nasync function gherkinFromPaths(\n paths: string[],\n options: IGherkinStreamOptions,\n onEnvelope: (envelope: Envelope) => void\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const gherkinMessageStream = GherkinStreams.fromPaths(paths, options)\n gherkinMessageStream.on('data', onEnvelope)\n gherkinMessageStream.on('end', resolve)\n gherkinMessageStream.on('error', reject)\n })\n}\n"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTestData = void 0;
|
|
4
|
+
const faker_1 = require("@faker-js/faker");
|
|
5
|
+
const generateTestData = (featureFileContent, vars) => {
|
|
6
|
+
const regexp = /\{\{([^}]+)\}\}/g;
|
|
7
|
+
let newContent = featureFileContent;
|
|
8
|
+
let match;
|
|
9
|
+
const metches = [];
|
|
10
|
+
// collect all matches
|
|
11
|
+
while ((match = regexp.exec(featureFileContent)) !== null) {
|
|
12
|
+
metches.push(match);
|
|
13
|
+
}
|
|
14
|
+
// find all variables in the matches
|
|
15
|
+
let variables = {};
|
|
16
|
+
const variableRegex = /^([a-zA-Z0-9_]*)=(.*)/g;
|
|
17
|
+
if (vars) {
|
|
18
|
+
variables = vars;
|
|
19
|
+
for (let i = 0; i < metches.length; i++) {
|
|
20
|
+
const _match = metches[i];
|
|
21
|
+
const value = _match[1];
|
|
22
|
+
const variableMatch = variableRegex.exec(value);
|
|
23
|
+
if (variableMatch !== null) {
|
|
24
|
+
newContent = newContent.replaceAll(_match[0], `{{${variableMatch[1]}}}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (const key in variables) {
|
|
28
|
+
const variable = variables[key];
|
|
29
|
+
newContent = newContent.replaceAll(`{{${variable.var}}}`, variable.fake);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
for (let i = 0; i < metches.length; i++) {
|
|
34
|
+
const _match = metches[i];
|
|
35
|
+
const value = _match[1];
|
|
36
|
+
const variableMatch = variableRegex.exec(value);
|
|
37
|
+
if (variableMatch !== null) {
|
|
38
|
+
variables[variableMatch[1]] = {
|
|
39
|
+
var: variableMatch[1],
|
|
40
|
+
toFake: variableMatch[2],
|
|
41
|
+
};
|
|
42
|
+
newContent = newContent.replaceAll(_match[0], `{{${variableMatch[1]}}}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const key in variables) {
|
|
46
|
+
const variable = variables[key];
|
|
47
|
+
const fake = faker_1.faker.helpers.fake(`{{${variable.toFake}}}`);
|
|
48
|
+
newContent = newContent.replaceAll(`{{${variable.var}}}`, fake);
|
|
49
|
+
variables[key].fake = fake;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
regexp.lastIndex = 0;
|
|
53
|
+
const otherFakeData = [];
|
|
54
|
+
while ((match = regexp.exec(newContent)) !== null) {
|
|
55
|
+
try {
|
|
56
|
+
const fake = faker_1.faker.helpers.fake(match[0]);
|
|
57
|
+
otherFakeData.push({
|
|
58
|
+
var: match[0],
|
|
59
|
+
fake,
|
|
60
|
+
});
|
|
61
|
+
newContent = newContent.replace(match[0], fake);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.log('unknown faker variable:' + match[0]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
newContent,
|
|
70
|
+
variables,
|
|
71
|
+
otherFakeData,
|
|
72
|
+
changed: newContent !== featureFileContent,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
exports.generateTestData = generateTestData;
|
|
76
|
+
//# sourceMappingURL=feature_data_format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature_data_format.js","sourceRoot":"","sources":["../../src/formatter/feature_data_format.ts"],"names":[],"mappings":"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","sourcesContent":["import { faker } from '@faker-js/faker'\n\nconst generateTestData = (featureFileContent: string, vars?: any) => {\n const regexp = /\\{\\{([^}]+)\\}\\}/g\n let newContent = featureFileContent\n let match\n const metches = []\n // collect all matches\n while ((match = regexp.exec(featureFileContent)) !== null) {\n metches.push(match)\n }\n // find all variables in the matches\n let variables: any = {}\n const variableRegex = /^([a-zA-Z0-9_]*)=(.*)/g\n\n if (vars) {\n variables = vars\n for (let i = 0; i < metches.length; i++) {\n const _match = metches[i]\n const value = _match[1]\n const variableMatch = variableRegex.exec(value)\n if (variableMatch !== null) {\n newContent = newContent.replaceAll(_match[0], `{{${variableMatch[1]}}}`)\n }\n }\n\n for (const key in variables) {\n const variable = variables[key]\n newContent = newContent.replaceAll(`{{${variable.var}}}`, variable.fake)\n }\n } else {\n for (let i = 0; i < metches.length; i++) {\n const _match = metches[i]\n const value = _match[1]\n const variableMatch = variableRegex.exec(value)\n if (variableMatch !== null) {\n variables[variableMatch[1]] = {\n var: variableMatch[1],\n toFake: variableMatch[2],\n }\n newContent = newContent.replaceAll(_match[0], `{{${variableMatch[1]}}}`)\n }\n }\n\n for (const key in variables) {\n const variable = variables[key]\n const fake = faker.helpers.fake(`{{${variable.toFake}}}`)\n newContent = newContent.replaceAll(`{{${variable.var}}}`, fake)\n variables[key].fake = fake\n }\n }\n\n regexp.lastIndex = 0\n const otherFakeData = []\n while ((match = regexp.exec(newContent)) !== null) {\n try {\n const fake = faker.helpers.fake(match[0])\n otherFakeData.push({\n var: match[0],\n fake,\n })\n newContent = newContent.replace(match[0], fake)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('unknown faker variable:' + match[0])\n }\n }\n return {\n newContent,\n variables,\n otherFakeData,\n changed: newContent !== featureFileContent,\n }\n}\n\n//let result = generateTestData(\"/Users/guyarieli/Documents/GitHub/ai-qa/cucumber_demo/features/create_issues.feature\");\n//console.log(result.newContent);\nexport { generateTestData }\n"]}
|
package/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.0.
|
|
1
|
+
export declare const version = "1.0.2";
|
package/lib/version.js
CHANGED
package/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AACd,QAAA,OAAO,GAAG,OAAO,CAAA","sourcesContent":["// Generated by genversion.\nexport const version = '1.0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AACd,QAAA,OAAO,GAAG,OAAO,CAAA","sourcesContent":["// Generated by genversion.\nexport const version = '1.0.2'\n"]}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"gherkin",
|
|
9
9
|
"tests"
|
|
10
10
|
],
|
|
11
|
-
"version": "1.0.
|
|
11
|
+
"version": "1.0.2",
|
|
12
12
|
"homepage": "https://github.com/blinq-io/cucumber-js",
|
|
13
13
|
"author": "blinq.io",
|
|
14
14
|
"contributors": [
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"@cucumber/message-streams": "4.0.1",
|
|
60
60
|
"@cucumber/messages": "22.0.0",
|
|
61
61
|
"@cucumber/tag-expressions": "5.0.1",
|
|
62
|
+
"@faker-js/faker": "^8.0.2",
|
|
62
63
|
"assertion-error-formatter": "^3.0.0",
|
|
63
64
|
"capital-case": "^1.0.4",
|
|
64
65
|
"chalk": "^4.1.2",
|