pickle-jar 1.0.6 → 1.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/README.md +5 -1
- package/dist/src/feature-file-visitor.d.ts +8 -4
- package/dist/src/feature-file-visitor.js +58 -29
- package/dist/src/feature-file-visitor.js.map +1 -1
- package/dist/src/grammar/GherkinLexer.d.ts +8 -6
- package/dist/src/grammar/GherkinLexer.js +158 -145
- package/dist/src/grammar/GherkinLexer.js.map +1 -1
- package/dist/src/grammar/GherkinParser.d.ts +12 -6
- package/dist/src/grammar/GherkinParser.js +125 -94
- package/dist/src/grammar/GherkinParser.js.map +1 -1
- package/dist/src/test-runner.js +1 -1
- package/dist/src/test-runner.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -142,9 +142,13 @@ Tags can be used for filtering entire scenarios or scenario steps. Feature files
|
|
|
142
142
|
|
|
143
143
|
```ts
|
|
144
144
|
const tagFilter = (tags: string[])=> {
|
|
145
|
-
return tags.indexOf("@
|
|
145
|
+
return tags.indexOf("@ui") === -1;
|
|
146
146
|
}
|
|
147
147
|
```
|
|
148
|
+
There are two builtin tags: `@skip` and `@only` which are handled differently than normal tags:
|
|
149
|
+
|
|
150
|
+
* `@skip` - when used, the step and sub-steps are completely skipped (they are handled as Jest `describe.only` or `it.only` calls)
|
|
151
|
+
* `@only` - when used, only the steps and sub-steps are executed (they are handled as Jest `describe.only` or `it.only` calls)
|
|
148
152
|
|
|
149
153
|
## Jest configuration
|
|
150
154
|
Create a `jest.config.js` file in the project root (or update the existing one) to match the `runner.ts` file:
|
|
@@ -2,17 +2,20 @@ import { AbstractParseTreeVisitor } from "antlr4ts/tree";
|
|
|
2
2
|
import { BackgroundContext, FeatureContext, FeatureFileContext, ScenarioContext, ScenarioOutlineContext } from "./grammar/GherkinParser";
|
|
3
3
|
import { GherkinParserVisitor } from "./grammar/GherkinParserVisitor";
|
|
4
4
|
import { StepDefinition } from "./step-definition";
|
|
5
|
+
interface WorldObject<TWorld> {
|
|
6
|
+
world: TWorld;
|
|
7
|
+
}
|
|
5
8
|
export declare class FeatureFileVisitor<TWorld> extends AbstractParseTreeVisitor<void> implements GherkinParserVisitor<void> {
|
|
6
9
|
private readonly file;
|
|
7
|
-
private readonly
|
|
10
|
+
private readonly worldFactory;
|
|
8
11
|
private readonly stepDefinitions;
|
|
9
12
|
private tagFilter;
|
|
10
|
-
constructor(file: string,
|
|
13
|
+
constructor(file: string, worldFactory: () => TWorld, stepDefinitions: StepDefinition<TWorld>[], tagFilter: (tags: string[]) => boolean);
|
|
11
14
|
visitFeatureFile(ctx: FeatureFileContext): void;
|
|
12
15
|
visitFeature(ctx: FeatureContext): void;
|
|
13
|
-
visitScenario(ctx: ScenarioContext): void;
|
|
16
|
+
visitScenario(ctx: ScenarioContext, worldObject?: WorldObject<TWorld>): void;
|
|
14
17
|
visitBackground(ctx: BackgroundContext): void;
|
|
15
|
-
visitScenarioOutline(ctx: ScenarioOutlineContext): void;
|
|
18
|
+
visitScenarioOutline(ctx: ScenarioOutlineContext, worldObject?: WorldObject<TWorld>): void;
|
|
16
19
|
protected defaultResult(): void;
|
|
17
20
|
private replaceKeywords;
|
|
18
21
|
private runNextStep;
|
|
@@ -21,3 +24,4 @@ export declare class FeatureFileVisitor<TWorld> extends AbstractParseTreeVisitor
|
|
|
21
24
|
private extractTestArgs;
|
|
22
25
|
private getMatchingStepDefinition;
|
|
23
26
|
}
|
|
27
|
+
export {};
|
|
@@ -5,10 +5,10 @@ const tree_1 = require("antlr4ts/tree");
|
|
|
5
5
|
const os_1 = require("os");
|
|
6
6
|
const GherkinParser_1 = require("./grammar/GherkinParser");
|
|
7
7
|
class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
8
|
-
constructor(file,
|
|
8
|
+
constructor(file, worldFactory, stepDefinitions, tagFilter) {
|
|
9
9
|
super();
|
|
10
10
|
this.file = file;
|
|
11
|
-
this.
|
|
11
|
+
this.worldFactory = worldFactory;
|
|
12
12
|
this.stepDefinitions = stepDefinitions;
|
|
13
13
|
this.tagFilter = tagFilter;
|
|
14
14
|
}
|
|
@@ -22,38 +22,57 @@ class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
|
22
22
|
this.visitChildren(ctx);
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
-
visitScenario(ctx) {
|
|
26
|
-
var _a, _b;
|
|
25
|
+
visitScenario(ctx, worldObject) {
|
|
26
|
+
var _a, _b, _c, _d;
|
|
27
27
|
const tags = (_b = (_a = ctx.tags()) === null || _a === void 0 ? void 0 : _a.TAG().map(tag => tag.text)) !== null && _b !== void 0 ? _b : [];
|
|
28
28
|
if (!this.tagFilter(tags)) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
const isOnly = !!((_c = ctx.tags()) === null || _c === void 0 ? void 0 : _c.ONLY_TAG().length);
|
|
32
|
+
const isSkip = !!((_d = ctx.tags()) === null || _d === void 0 ? void 0 : _d.SKIP_TAG().length);
|
|
33
|
+
const describeFunc = isOnly ? describe.only : isSkip ? describe.skip : describe;
|
|
34
|
+
describeFunc(`Scenario: ${ctx.contentText().text.trim()}`, () => {
|
|
35
|
+
const worldObj = {};
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
if (!worldObject) {
|
|
38
|
+
worldObj.world = this.worldFactory();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
32
41
|
const step = ctx.step();
|
|
33
42
|
const steps = [step.givenStep(), ...step.andGivenStep(), step.whenStep(), ...step.andWhenStep(), step.thenStep(), ...step.andStep(), ...step.butStep()];
|
|
34
|
-
this.runNextStep(steps, undefined);
|
|
43
|
+
this.runNextStep(steps, undefined, worldObject !== null && worldObject !== void 0 ? worldObject : worldObj);
|
|
35
44
|
});
|
|
36
45
|
}
|
|
37
46
|
visitBackground(ctx) {
|
|
38
|
-
var _a, _b;
|
|
47
|
+
var _a, _b, _c, _d;
|
|
39
48
|
const tags = (_b = (_a = ctx.tags()) === null || _a === void 0 ? void 0 : _a.TAG().map(tag => tag.text)) !== null && _b !== void 0 ? _b : [];
|
|
40
49
|
if (!this.tagFilter(tags)) {
|
|
41
50
|
return;
|
|
42
51
|
}
|
|
43
|
-
|
|
52
|
+
const isOnly = !!((_c = ctx.tags()) === null || _c === void 0 ? void 0 : _c.ONLY_TAG().length);
|
|
53
|
+
const isSkip = !!((_d = ctx.tags()) === null || _d === void 0 ? void 0 : _d.SKIP_TAG().length);
|
|
54
|
+
const describeFunc = isOnly ? describe.only : isSkip ? describe.skip : describe;
|
|
55
|
+
describeFunc(`Background: ${ctx.contentText().text.trim()}`, () => {
|
|
56
|
+
const worldObj = {};
|
|
57
|
+
beforeEach(() => {
|
|
58
|
+
worldObj.world = this.worldFactory();
|
|
59
|
+
});
|
|
44
60
|
const scenarios = [...ctx.scenario(), ...ctx.scenarioOutline()];
|
|
45
61
|
for (const scenario of scenarios) {
|
|
46
62
|
const steps = [ctx.givenStep(), ...ctx.andGivenStep(), scenario];
|
|
47
|
-
this.runNextStep(steps, undefined);
|
|
63
|
+
this.runNextStep(steps, undefined, worldObj);
|
|
48
64
|
}
|
|
49
65
|
});
|
|
50
66
|
}
|
|
51
|
-
visitScenarioOutline(ctx) {
|
|
52
|
-
var _a, _b;
|
|
67
|
+
visitScenarioOutline(ctx, worldObject) {
|
|
68
|
+
var _a, _b, _c, _d;
|
|
53
69
|
const tags = (_b = (_a = ctx.tags()) === null || _a === void 0 ? void 0 : _a.TAG().map(tag => tag.text)) !== null && _b !== void 0 ? _b : [];
|
|
54
70
|
if (!this.tagFilter(tags)) {
|
|
55
71
|
return;
|
|
56
72
|
}
|
|
73
|
+
const isOnly = !!((_c = ctx.tags()) === null || _c === void 0 ? void 0 : _c.ONLY_TAG().length);
|
|
74
|
+
const isSkip = !!((_d = ctx.tags()) === null || _d === void 0 ? void 0 : _d.SKIP_TAG().length);
|
|
75
|
+
const describeFunc = isOnly ? describe.only : isSkip ? describe.skip : describe;
|
|
57
76
|
const cellNames = ctx.examplesBlock().tableHeader().tableRow().cell().map(cell => cell.text.trim());
|
|
58
77
|
const values = ctx.examplesBlock().tableRow().map(row => row.cell().map(cell => cell.text.trim()));
|
|
59
78
|
const valueMap = values.map(row => {
|
|
@@ -64,11 +83,17 @@ class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
|
64
83
|
return item;
|
|
65
84
|
});
|
|
66
85
|
const scenarioName = ctx.contentText().text.trim();
|
|
67
|
-
|
|
86
|
+
describeFunc(`Scenario outline: ${scenarioName}`, () => {
|
|
87
|
+
const worldObj = {};
|
|
88
|
+
beforeEach(() => {
|
|
89
|
+
if (!worldObject) {
|
|
90
|
+
worldObj.world = this.worldFactory();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
68
93
|
for (const row of valueMap) {
|
|
69
94
|
const step = ctx.step();
|
|
70
95
|
const steps = [step.givenStep(), ...step.andGivenStep(), step.whenStep(), ...step.andWhenStep(), step.thenStep(), ...step.andStep(), ...step.butStep()];
|
|
71
|
-
this.runNextStep(steps, row);
|
|
96
|
+
this.runNextStep(steps, row, worldObject !== null && worldObject !== void 0 ? worldObject : worldObj);
|
|
72
97
|
}
|
|
73
98
|
});
|
|
74
99
|
}
|
|
@@ -78,11 +103,11 @@ class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
|
78
103
|
replaceKeywords(input, replacements) {
|
|
79
104
|
return input.replace(/<([^>]+)>/g, (match, keyword) => {
|
|
80
105
|
const replacement = replacements === null || replacements === void 0 ? void 0 : replacements[keyword];
|
|
81
|
-
return replacement !== undefined ? replacement : match;
|
|
106
|
+
return replacement !== undefined ? replacement.replace(/\$/g, "\\$") : match;
|
|
82
107
|
});
|
|
83
108
|
}
|
|
84
|
-
runNextStep(steps, valueMap) {
|
|
85
|
-
var _a, _b, _c;
|
|
109
|
+
runNextStep(steps, valueMap, worldObject) {
|
|
110
|
+
var _a, _b, _c, _d, _e;
|
|
86
111
|
const step = steps.shift();
|
|
87
112
|
if (!step) {
|
|
88
113
|
return;
|
|
@@ -91,12 +116,14 @@ class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
|
91
116
|
if (!this.tagFilter(tags)) {
|
|
92
117
|
return;
|
|
93
118
|
}
|
|
119
|
+
const isOnly = !!((_c = step.tags()) === null || _c === void 0 ? void 0 : _c.ONLY_TAG().length);
|
|
120
|
+
const isSkip = !!((_d = step.tags()) === null || _d === void 0 ? void 0 : _d.SKIP_TAG().length);
|
|
94
121
|
if (step instanceof GherkinParser_1.ScenarioContext) {
|
|
95
|
-
this.visitScenario(step);
|
|
122
|
+
this.visitScenario(step, worldObject);
|
|
96
123
|
return;
|
|
97
124
|
}
|
|
98
125
|
else if (step instanceof GherkinParser_1.ScenarioOutlineContext) {
|
|
99
|
-
this.visitScenarioOutline(step);
|
|
126
|
+
this.visitScenarioOutline(step, worldObject);
|
|
100
127
|
return;
|
|
101
128
|
}
|
|
102
129
|
let prefix;
|
|
@@ -118,27 +145,29 @@ class FeatureFileVisitor extends tree_1.AbstractParseTreeVisitor {
|
|
|
118
145
|
const name = `${prefix} ${this.replaceKeywords(step.contentText().text.trim(), valueMap)}`;
|
|
119
146
|
const stepDefinition = this.getMatchingStepDefinition(name);
|
|
120
147
|
const { step: stepCall, match } = stepDefinition;
|
|
121
|
-
const docStringContents = (
|
|
148
|
+
const docStringContents = (_e = step.docString()) === null || _e === void 0 ? void 0 : _e.DOC_STRING().text;
|
|
122
149
|
const args = this.extractTestArgs(match, name, docStringContents, valueMap);
|
|
123
150
|
if (prepare) {
|
|
124
|
-
this.definePrepareStep(name, stepCall, args, steps, valueMap);
|
|
151
|
+
this.definePrepareStep(name, stepCall, args, steps, valueMap, worldObject, isSkip, isOnly);
|
|
125
152
|
}
|
|
126
153
|
else {
|
|
127
|
-
this.defineTestStep(name, stepCall, args, steps, valueMap);
|
|
154
|
+
this.defineTestStep(name, stepCall, args, steps, valueMap, worldObject, isSkip, isOnly);
|
|
128
155
|
}
|
|
129
156
|
}
|
|
130
|
-
defineTestStep(name, stepCall, args, steps, valueMap) {
|
|
131
|
-
it
|
|
132
|
-
|
|
157
|
+
defineTestStep(name, stepCall, args, steps, valueMap, worldObject, isSkip, isOnly) {
|
|
158
|
+
const itFunc = isOnly ? it.only : isSkip ? it.skip : it;
|
|
159
|
+
itFunc(name, () => {
|
|
160
|
+
stepCall(worldObject.world, ...args);
|
|
133
161
|
});
|
|
134
|
-
this.runNextStep(steps, valueMap);
|
|
162
|
+
this.runNextStep(steps, valueMap, worldObject);
|
|
135
163
|
}
|
|
136
|
-
definePrepareStep(name, stepCall, args, steps, valueMap) {
|
|
137
|
-
describe
|
|
164
|
+
definePrepareStep(name, stepCall, args, steps, valueMap, worldObject, isSkip, isOnly) {
|
|
165
|
+
const describeFunc = isOnly ? describe.only : isSkip ? describe.skip : describe;
|
|
166
|
+
describeFunc(name, () => {
|
|
138
167
|
beforeEach(() => {
|
|
139
|
-
stepCall(
|
|
168
|
+
stepCall(worldObject.world, ...args);
|
|
140
169
|
});
|
|
141
|
-
this.runNextStep(steps, valueMap);
|
|
170
|
+
this.runNextStep(steps, valueMap, worldObject);
|
|
142
171
|
});
|
|
143
172
|
}
|
|
144
173
|
extractTestArgs(match, name, docStringContents, valueMap) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-file-visitor.js","sourceRoot":"","sources":["../../src/feature-file-visitor.ts"],"names":[],"mappings":";;;AAAA,wCAAuD;AACvD,2BAAuB;AACvB,2DAaiC;
|
|
1
|
+
{"version":3,"file":"feature-file-visitor.js","sourceRoot":"","sources":["../../src/feature-file-visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,12 +16,14 @@ export declare class GherkinLexer extends Lexer {
|
|
|
16
16
|
static readonly EXAMPLES = 11;
|
|
17
17
|
static readonly BACKGROUND = 12;
|
|
18
18
|
static readonly PIPE = 13;
|
|
19
|
-
static readonly
|
|
20
|
-
static readonly
|
|
21
|
-
static readonly
|
|
22
|
-
static readonly
|
|
23
|
-
static readonly
|
|
24
|
-
static readonly
|
|
19
|
+
static readonly ONLY_TAG = 14;
|
|
20
|
+
static readonly SKIP_TAG = 15;
|
|
21
|
+
static readonly TAG = 16;
|
|
22
|
+
static readonly COMMENT = 17;
|
|
23
|
+
static readonly TEXT_CHARACTER = 18;
|
|
24
|
+
static readonly WS = 19;
|
|
25
|
+
static readonly WSS = 20;
|
|
26
|
+
static readonly DOC_STRING = 21;
|
|
25
27
|
static readonly TEXT_CHARACTER_MODE = 1;
|
|
26
28
|
static readonly channelNames: string[];
|
|
27
29
|
static readonly modeNames: string[];
|