@autometa/test-builder 0.3.5 → 0.3.6
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/CHANGELOG.md +6 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -51,6 +51,12 @@ var FeatureBridge = class extends GherkinCodeBridge {
|
|
|
51
51
|
this.rules = [];
|
|
52
52
|
this.steps = [];
|
|
53
53
|
}
|
|
54
|
+
accumulateTags() {
|
|
55
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
56
|
+
const ruleTags = this.rules.map((rule) => rule.accumulateTags()).flat();
|
|
57
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags, ...ruleTags];
|
|
58
|
+
return [...new Set(allTags)];
|
|
59
|
+
}
|
|
54
60
|
};
|
|
55
61
|
var BackgroundBridge = class extends GherkinCodeBridge {
|
|
56
62
|
constructor() {
|
|
@@ -64,6 +70,11 @@ var RuleBridge = class extends GherkinCodeBridge {
|
|
|
64
70
|
this.scenarios = [];
|
|
65
71
|
this.steps = [];
|
|
66
72
|
}
|
|
73
|
+
accumulateTags() {
|
|
74
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
75
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags];
|
|
76
|
+
return [...new Set(allTags)];
|
|
77
|
+
}
|
|
67
78
|
};
|
|
68
79
|
var ScenarioBridge = class extends GherkinCodeBridge {
|
|
69
80
|
constructor() {
|
|
@@ -77,6 +88,9 @@ var ScenarioBridge = class extends GherkinCodeBridge {
|
|
|
77
88
|
get tags() {
|
|
78
89
|
return [...this.data.gherkin.tags];
|
|
79
90
|
}
|
|
91
|
+
accumulateTags() {
|
|
92
|
+
return this.tags;
|
|
93
|
+
}
|
|
80
94
|
};
|
|
81
95
|
var ExampleBridge = class extends GherkinCodeBridge {
|
|
82
96
|
constructor() {
|
|
@@ -90,6 +104,9 @@ var ExampleBridge = class extends GherkinCodeBridge {
|
|
|
90
104
|
get tags() {
|
|
91
105
|
return [...this.data.gherkin.tags];
|
|
92
106
|
}
|
|
107
|
+
accumulateTags() {
|
|
108
|
+
return this.tags;
|
|
109
|
+
}
|
|
93
110
|
};
|
|
94
111
|
var ScenarioOutlineBridge = class extends GherkinCodeBridge {
|
|
95
112
|
constructor() {
|
|
@@ -103,6 +120,11 @@ var ScenarioOutlineBridge = class extends GherkinCodeBridge {
|
|
|
103
120
|
get tags() {
|
|
104
121
|
return [...this.data.gherkin.tags];
|
|
105
122
|
}
|
|
123
|
+
accumulateTags() {
|
|
124
|
+
const exampleTags = this.examples.map((example) => example.tags).flat();
|
|
125
|
+
const allTags = [...this.data.gherkin.tags, ...exampleTags];
|
|
126
|
+
return [...new Set(allTags)];
|
|
127
|
+
}
|
|
106
128
|
};
|
|
107
129
|
var ExamplesBridge = class extends GherkinCodeBridge {
|
|
108
130
|
constructor() {
|
|
@@ -116,6 +138,11 @@ var ExamplesBridge = class extends GherkinCodeBridge {
|
|
|
116
138
|
get tags() {
|
|
117
139
|
return [...this.data.gherkin.tags];
|
|
118
140
|
}
|
|
141
|
+
accumulateTags() {
|
|
142
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
143
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags];
|
|
144
|
+
return [...new Set(allTags)];
|
|
145
|
+
}
|
|
119
146
|
};
|
|
120
147
|
var StepBridge = class extends GherkinCodeBridge {
|
|
121
148
|
get args() {
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bridges/bridge.ts","../../src/bridges/bridge-search.ts","../../src/bridges/bridge-query.ts","../../src/gherkin-walker.ts","../../src/scope-search.ts","../../src/test-builder.ts"],"sourcesContent":["import { App } from \"@autometa/app\";\nimport {\n Background,\n DataTable,\n Example,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { BackgroundScope, GlobalScope } from \"@autometa/scopes\";\nimport {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n ScenarioScope,\n Scope,\n StepScope,\n} from \"@autometa/scopes\";\n\nexport abstract class GherkinCodeBridge {\n abstract data: { gherkin: GherkinNode; scope: Scope };\n}\nexport class GlobalBridge extends GherkinCodeBridge {\n readonly data: { gherkin: GherkinNode; scope: GlobalScope };\n constructor(scope: GlobalScope) {\n super();\n const nullNode = class extends GherkinNode {\n keyword = \"none\";\n };\n this.data = {\n scope,\n gherkin: new nullNode(),\n };\n }\n}\nexport class FeatureBridge extends GherkinCodeBridge {\n data: { gherkin: Feature; scope: FeatureScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n rules: RuleBridge[] = [];\n steps: StepBridge[] = [];\n}\nexport class BackgroundBridge extends GherkinCodeBridge {\n data: { gherkin: Background; scope: BackgroundScope };\n steps: StepBridge[] = [];\n}\n\nexport class RuleBridge extends GherkinCodeBridge {\n data: { gherkin: Rule; scope: RuleScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n steps: StepBridge[] = [];\n}\n\nexport class ScenarioBridge extends GherkinCodeBridge {\n data: { gherkin: Scenario; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\nexport class ExampleBridge extends GherkinCodeBridge {\n data: { gherkin: Example; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\nexport class ScenarioOutlineBridge extends GherkinCodeBridge {\n data: { gherkin: ScenarioOutline; scope: ScenarioOutlineScope };\n examples: ExamplesBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\n\nexport class ExamplesBridge extends GherkinCodeBridge {\n data: { gherkin: Examples; scope: ScenarioOutlineScope };\n scenarios: ScenarioBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\n\nexport class StepBridge extends GherkinCodeBridge {\n data: {\n gherkin: Step;\n scope: StepScope<string, DataTable | undefined>;\n args: undefined | ((app: App) => unknown[]);\n };\n\n get args() {\n return this.data.args\n }\n\n get expressionText() {\n return this.data.scope.expression.source;\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport {\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n RuleBridge,\n} from \"./bridge\";\n\nexport function find(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n if (bridge instanceof FeatureBridge) {\n return findByFeature(bridge, testName);\n }\n if (bridge instanceof RuleBridge) {\n return findByRule(bridge, testName);\n }\n if (bridge instanceof ScenarioOutlineBridge) {\n return findScenarioOutlineOrChild(bridge, testName);\n }\n\n throw new AutomationError(`Could not find test matching ${testName}`);\n}\nfunction findByFeature(\n feature: FeatureBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = feature.data.scope.title(feature.data.gherkin);\n const byScenario = findTestTypes(feature.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleTypes(feature.rules, testName, title);\n if (byRule) {\n return byRule;\n }\n}\nfunction findByRule(\n rule: RuleBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = rule.data.scope.title(rule.data.gherkin);\n const byScenario = findTestTypes(rule.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleOrChild(rule, testName, title);\n if (byRule) {\n return byRule;\n }\n}\n\nexport function findTestTypes(\n scenarios: (ScenarioBridge | ScenarioOutlineBridge | ExamplesBridge)[],\n testName: string,\n from?: string\n) {\n for (const scenario of scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n const found = findScenarioOutlineOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ExamplesBridge) {\n const found = findExamplesOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ScenarioBridge) {\n const found = findScenario(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n }\n}\n\nexport function findRuleTypes(\n rules: RuleBridge[],\n testName: string,\n from?: string\n) {\n for (const rule of rules) {\n const found = findRuleOrChild(rule, testName, from);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findRuleOrChild(\n rule: RuleBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = rule;\n const title = scope.title(gherkin);\n if (testName === title) {\n return rule;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return rule;\n }\n }\n const newFrom = appendPath(from, title);\n return findTestTypes(rule.scenarios, testName, newFrom);\n}\n\nexport function findScenarioOutlineOrChild(\n outline: ScenarioOutlineBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = outline;\n const title = scope.title(gherkin);\n if (testName === title) {\n return outline;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return outline;\n }\n }\n for (const example of outline.examples) {\n const newFrom = appendPath(from, title);\n const found = findExamplesOrChild(example, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nfunction appendPath(from: string | undefined, title: string) {\n return from ? `${from} ${title}` : title;\n}\n\nexport function findExamplesOrChild(\n example: ExamplesBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { gherkin },\n } = example;\n const title = `${gherkin.keyword}: ${gherkin.name}`;\n if (testName === title) {\n return example;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return example;\n }\n }\n for (const scenario of example.scenarios) {\n const newFrom = appendPath(from, title);\n const found = findScenario(scenario, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findScenario(\n scenario: ScenarioBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = scenario;\n const title = scope.title(gherkin);\n if (testName === title) {\n return scenario;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return scenario;\n }\n }\n}\n","import { Background, GherkinNode } from \"@autometa/gherkin\";\nimport {\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n} from \".\";\n\nfunction failed(bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n if (bridge instanceof ScenarioOutlineBridge) {\n return failedOutline(bridge);\n }\n for (const scenario of bridge.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed && scenario.report.error !== undefined) {\n accumulator.push(scenario);\n }\n }\n if (bridge instanceof FeatureBridge) {\n accumulator.push(...failedRule(bridge));\n }\n return accumulator;\n}\n\nfunction failedOutline(bridge: ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n\n for (const example of bridge.examples) {\n for (const scenario of example.scenarios) {\n if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction failedRule(bridge: FeatureBridge) {\n const accumulator: ScenarioBridge[] = [];\n for (const rule of bridge.rules) {\n for (const scenario of rule.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction gherkinToTestNames(\n node: GherkinNode,\n path = \"\",\n accumulator: string[] = []\n) {\n if (!(\"name\" in node) || node instanceof Background) {\n return;\n }\n const title = `${node.keyword}: ${node.name}`;\n const fullPath = path ? `${path} ${title}` : title;\n accumulator.push(fullPath);\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n if (!(\"name\" in child) || child instanceof Background) {\n continue;\n }\n gherkinToTestNames(child, fullPath, accumulator);\n }\n return accumulator;\n}\n\nexport const Query = {\n find: {\n failed,\n },\n testNames: gherkinToTestNames,\n};\n","import {\n Background,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { Example } from \"@autometa/gherkin\";\n\nexport type WalkFunction<T extends GherkinNode, TAccumulator, TReturn> = (\n node: T,\n accumulator: TAccumulator,\n lastNode?: GherkinNode\n) => TReturn;\n\nexport type WalkFunctionMap<TAccumulator> = {\n onFeature?: WalkFunction<Feature, TAccumulator, TAccumulator>;\n onRule?: WalkFunction<Rule, TAccumulator, TAccumulator>;\n onBackground?: WalkFunction<Background, TAccumulator, TAccumulator>;\n onScenario?: WalkFunction<Scenario, TAccumulator, TAccumulator>;\n onScenarioOutline?: WalkFunction<ScenarioOutline, TAccumulator, TAccumulator>;\n onExamples?: WalkFunction<Examples, TAccumulator, TAccumulator>;\n onExample?: WalkFunction<Example, TAccumulator, TAccumulator>;\n onStep?: WalkFunction<Step, TAccumulator, TAccumulator>;\n};\n\nexport class GherkinWalker {\n static walk<TAccumulator>(\n walkFunction: WalkFunctionMap<TAccumulator>,\n childNode: GherkinNode,\n accumulator: TAccumulator,\n parentNode?: GherkinNode\n ) {\n if (accumulator === undefined) {\n throw new AutomationError(\n `An accumulator must be defined to continue the walker from ${\n childNode.constructor.name\n }${JSON.stringify(childNode)}`\n );\n }\n this.#walkNode(childNode, accumulator, walkFunction, parentNode);\n return accumulator;\n }\n\n static #walkNode<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n walkFunction: WalkFunctionMap<TAccumulator>,\n lastNode?: GherkinNode\n ) {\n if (child instanceof Feature && walkFunction.onFeature) {\n const acc = walkFunction.onFeature(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Rule && walkFunction.onRule) {\n const acc = walkFunction.onRule(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Examples) {\n const acc = walkFunction.onExamples?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Example) {\n const acc = walkFunction.onExample?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Scenario) {\n const acc = walkFunction.onScenario?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof ScenarioOutline) {\n const acc = walkFunction.onScenarioOutline?.(\n child,\n accumulator,\n lastNode\n );\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Background) {\n const acc = walkFunction?.onBackground?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Step) {\n const acc = walkFunction.onStep?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n }\n\n static #walkChildren<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walkFunction: WalkFunctionMap<any>\n ) {\n for (const node of child.children) {\n this.walk(walkFunction, node, accumulator, child);\n }\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport { StepKeyword } from \"@autometa/gherkin\";\nimport { StepType } from \"@autometa/gherkin\";\nimport {\n Scope,\n RuleScope,\n ScenarioScope,\n ScenarioOutlineScope,\n BackgroundScope,\n} from \"@autometa/scopes\";\nimport { Empty_Function } from \"@autometa/scopes\";\n\nexport function scope(value: Scope) {\n return {\n findRule: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return child instanceof RuleScope && child.name === name;\n }) as RuleScope | undefined;\n if (!found) {\n const rule = new RuleScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(rule);\n return rule;\n }\n return found;\n },\n findScenario: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return (\n child instanceof ScenarioScope &&\n child.name === name &&\n !(child instanceof ScenarioOutlineScope)\n );\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findBackground: ({ name }: { name?: string }): BackgroundScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof BackgroundScope;\n }) as BackgroundScope | undefined;\n if (found && found.name !== name) {\n throw new AutomationError(\n `Could not find background matching ${name} but found ${found?.name}`\n );\n }\n if (found) {\n return found;\n }\n\n const bgScope = new BackgroundScope(\n name,\n Empty_Function,\n value.hooks,\n value.steps\n );\n value.attach(bgScope);\n return bgScope;\n },\n findScenarioOutline: (name: string): ScenarioOutlineScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof ScenarioOutlineScope && child.name === name;\n }) as ScenarioOutlineScope | undefined;\n if (!found) {\n const scenarioOutline = new ScenarioOutlineScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenarioOutline);\n return scenarioOutline;\n }\n return found;\n },\n findExample(name: string): ScenarioScope {\n const found = value.closedScopes.find((child) => {\n if (!(child instanceof ScenarioScope)) {\n return false;\n }\n return child.name === name;\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findStep: (keywordType: StepType, keyword: StepKeyword, name: string) => {\n return value.steps.find(keywordType, keyword, name);\n },\n };\n}\n","import {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n StepCache,\n} from \"@autometa/scopes\";\nimport {\n BackgroundBridge,\n ExampleBridge,\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n StepBridge,\n} from \"./bridges\";\nimport { GherkinWalker } from \"./gherkin-walker\";\nimport { scope } from \"./scope-search\";\nimport { Bind } from \"@autometa/bind-decorator\";\nimport { Example, Feature, GherkinNode, Scenario } from \"@autometa/gherkin\";\nimport { raise } from \"@autometa/errors\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport class TestBuilder {\n constructor(readonly feature: Feature) {}\n @Bind\n onFeatureExecuted(featureScope: FeatureScope) {\n const bridge = new FeatureBridge();\n GherkinWalker.walk<GherkinCodeBridge>(\n {\n onFeature: (feature, accumulator) => {\n accumulator.data = { gherkin: feature, scope: featureScope };\n return accumulator;\n },\n onRule: (rule, accumulator) => {\n const ruleScope = scope(featureScope).findRule(\n rule.name\n ) as RuleScope;\n const bridge = new RuleBridge();\n bridge.data = { gherkin: rule, scope: ruleScope };\n (accumulator as FeatureBridge).rules.push(bridge);\n return bridge;\n },\n onScenario: (gherkin, accumulator) => {\n const scenarioScope = scope(accumulator.data.scope).findScenario(\n gherkin.name\n );\n const bridge = new ScenarioBridge();\n bridge.data = { gherkin, scope: scenarioScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n // if accumulator is a outline, push to examples\n\n return bridge;\n },\n onScenarioOutline: (gherkin, accumulator) => {\n const outlineScope = scope(\n accumulator.data.scope\n ).findScenarioOutline(gherkin.name);\n const bridge = new ScenarioOutlineBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n return bridge;\n },\n onExamples: (gherkin, accumulator) => {\n const outlineScope = accumulator.data.scope as ScenarioOutlineScope;\n const bridge = new ExamplesBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as ScenarioOutlineBridge).examples.push(bridge);\n return bridge;\n },\n onExample(gherkin, accumulator) {\n if (gherkin.table === undefined) {\n raise(\n `Example ${gherkin.name} has no Example Table data. A Row of data is required.`\n );\n }\n const title = gherkin.name;\n\n const exampleScope = scope(accumulator.data.scope).findExample(title);\n const bridge = new ExampleBridge();\n bridge.data = { gherkin, scope: exampleScope };\n const acc = accumulator as ExamplesBridge;\n acc.scenarios.push(bridge);\n return bridge;\n },\n onBackground(gherkin, accumulator) {\n const backgroundScope = scope(accumulator.data.scope).findBackground({\n name: gherkin.name,\n });\n const bridge = new BackgroundBridge();\n bridge.data = { gherkin, scope: backgroundScope };\n const acc = accumulator as FeatureBridge | RuleBridge;\n acc.background = bridge;\n return bridge;\n },\n onStep: (step, accumulator) => {\n const {\n data: { scope: parentScope, gherkin },\n } = accumulator;\n const { keyword, keywordType, text } = step;\n const cache = parentScope.steps;\n const existing = getStep(\n accumulator,\n gherkin,\n cache,\n keywordType,\n keyword,\n text\n );\n const bridge = new StepBridge();\n const acc = accumulator as\n | BackgroundBridge\n | ScenarioBridge\n | RuleBridge\n | FeatureBridge;\n\n if (existing) {\n bridge.data = {\n gherkin: step,\n scope: existing.step,\n args: existing.args,\n };\n } else {\n raise(`No step definition matching ${step.keyword} ${step.text}`);\n }\n\n acc.steps.push(bridge);\n return accumulator;\n },\n },\n this.feature,\n bridge\n );\n return bridge;\n }\n}\nfunction getStep(\n accumulator: GherkinCodeBridge,\n gherkin: GherkinNode,\n cache: StepCache,\n keywordType: StepType,\n keyword: StepKeyword,\n text: string\n) {\n try {\n if (accumulator instanceof ExampleBridge) {\n const scenario = gherkin as Example;\n if (scenario.table) {\n return cache.findByExample(keywordType, keyword, text, scenario.table);\n }\n }\n return cache.find(keywordType, keyword, text);\n } catch (e) {\n const cause = e as Error;\n const { title } = gherkin as Scenario;\n raise(`'${title}' could not find a step definition`, { cause });\n }\n}\n"],"mappings":"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","names":["scope","scope","Background","Background","Background","Examples","Feature","Rule","Scenario","ScenarioOutline","Step","AutomationError","Example","AutomationError","Feature","Rule","Examples","Example","Scenario","ScenarioOutline","Background","Step","AutomationError","bridge"]}
|
|
1
|
+
{"version":3,"sources":["../../src/bridges/bridge.ts","../../src/bridges/bridge-search.ts","../../src/bridges/bridge-query.ts","../../src/gherkin-walker.ts","../../src/scope-search.ts","../../src/test-builder.ts"],"sourcesContent":["import { App } from \"@autometa/app\";\nimport {\n Background,\n DataTable,\n Example,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { BackgroundScope, GlobalScope } from \"@autometa/scopes\";\nimport {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n ScenarioScope,\n Scope,\n StepScope,\n} from \"@autometa/scopes\";\n\nexport abstract class GherkinCodeBridge {\n abstract data: { gherkin: GherkinNode; scope: Scope };\n}\nexport class GlobalBridge extends GherkinCodeBridge {\n readonly data: { gherkin: GherkinNode; scope: GlobalScope };\n constructor(scope: GlobalScope) {\n super();\n const nullNode = class extends GherkinNode {\n keyword = \"none\";\n };\n this.data = {\n scope,\n gherkin: new nullNode(),\n };\n }\n}\nexport class FeatureBridge extends GherkinCodeBridge {\n data: { gherkin: Feature; scope: FeatureScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n rules: RuleBridge[] = [];\n steps: StepBridge[] = [];\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const ruleTags = this.rules.map((rule) => rule.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags, ...ruleTags];\n return [...new Set(allTags)];\n }\n}\nexport class BackgroundBridge extends GherkinCodeBridge {\n data: { gherkin: Background; scope: BackgroundScope };\n steps: StepBridge[] = [];\n}\n\nexport class RuleBridge extends GherkinCodeBridge {\n data: { gherkin: Rule; scope: RuleScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n steps: StepBridge[] = [];\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class ScenarioBridge extends GherkinCodeBridge {\n data: { gherkin: Scenario; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n return this.tags;\n }\n}\nexport class ExampleBridge extends GherkinCodeBridge {\n data: { gherkin: Example; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n return this.tags;\n }\n}\nexport class ScenarioOutlineBridge extends GherkinCodeBridge {\n data: { gherkin: ScenarioOutline; scope: ScenarioOutlineScope };\n examples: ExamplesBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n const exampleTags = this.examples.map((example) => example.tags).flat();\n const allTags = [...this.data.gherkin.tags, ...exampleTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class ExamplesBridge extends GherkinCodeBridge {\n data: { gherkin: Examples; scope: ScenarioOutlineScope };\n scenarios: ScenarioBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n \n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class StepBridge extends GherkinCodeBridge {\n data: {\n gherkin: Step;\n scope: StepScope<string, DataTable | undefined>;\n args: undefined | ((app: App) => unknown[]);\n };\n\n get args() {\n return this.data.args;\n }\n\n get expressionText() {\n return this.data.scope.expression.source;\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport {\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n RuleBridge,\n} from \"./bridge\";\n\nexport function find(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n if (bridge instanceof FeatureBridge) {\n return findByFeature(bridge, testName);\n }\n if (bridge instanceof RuleBridge) {\n return findByRule(bridge, testName);\n }\n if (bridge instanceof ScenarioOutlineBridge) {\n return findScenarioOutlineOrChild(bridge, testName);\n }\n\n throw new AutomationError(`Could not find test matching ${testName}`);\n}\nfunction findByFeature(\n feature: FeatureBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = feature.data.scope.title(feature.data.gherkin);\n const byScenario = findTestTypes(feature.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleTypes(feature.rules, testName, title);\n if (byRule) {\n return byRule;\n }\n}\nfunction findByRule(\n rule: RuleBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = rule.data.scope.title(rule.data.gherkin);\n const byScenario = findTestTypes(rule.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleOrChild(rule, testName, title);\n if (byRule) {\n return byRule;\n }\n}\n\nexport function findTestTypes(\n scenarios: (ScenarioBridge | ScenarioOutlineBridge | ExamplesBridge)[],\n testName: string,\n from?: string\n) {\n for (const scenario of scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n const found = findScenarioOutlineOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ExamplesBridge) {\n const found = findExamplesOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ScenarioBridge) {\n const found = findScenario(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n }\n}\n\nexport function findRuleTypes(\n rules: RuleBridge[],\n testName: string,\n from?: string\n) {\n for (const rule of rules) {\n const found = findRuleOrChild(rule, testName, from);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findRuleOrChild(\n rule: RuleBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = rule;\n const title = scope.title(gherkin);\n if (testName === title) {\n return rule;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return rule;\n }\n }\n const newFrom = appendPath(from, title);\n return findTestTypes(rule.scenarios, testName, newFrom);\n}\n\nexport function findScenarioOutlineOrChild(\n outline: ScenarioOutlineBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = outline;\n const title = scope.title(gherkin);\n if (testName === title) {\n return outline;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return outline;\n }\n }\n for (const example of outline.examples) {\n const newFrom = appendPath(from, title);\n const found = findExamplesOrChild(example, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nfunction appendPath(from: string | undefined, title: string) {\n return from ? `${from} ${title}` : title;\n}\n\nexport function findExamplesOrChild(\n example: ExamplesBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { gherkin },\n } = example;\n const title = `${gherkin.keyword}: ${gherkin.name}`;\n if (testName === title) {\n return example;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return example;\n }\n }\n for (const scenario of example.scenarios) {\n const newFrom = appendPath(from, title);\n const found = findScenario(scenario, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findScenario(\n scenario: ScenarioBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = scenario;\n const title = scope.title(gherkin);\n if (testName === title) {\n return scenario;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return scenario;\n }\n }\n}\n","import { Background, GherkinNode } from \"@autometa/gherkin\";\nimport {\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n} from \".\";\n\nfunction failed(bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n if (bridge instanceof ScenarioOutlineBridge) {\n return failedOutline(bridge);\n }\n for (const scenario of bridge.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed && scenario.report.error !== undefined) {\n accumulator.push(scenario);\n }\n }\n if (bridge instanceof FeatureBridge) {\n accumulator.push(...failedRule(bridge));\n }\n return accumulator;\n}\n\nfunction failedOutline(bridge: ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n\n for (const example of bridge.examples) {\n for (const scenario of example.scenarios) {\n if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction failedRule(bridge: FeatureBridge) {\n const accumulator: ScenarioBridge[] = [];\n for (const rule of bridge.rules) {\n for (const scenario of rule.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction gherkinToTestNames(\n node: GherkinNode,\n path = \"\",\n accumulator: string[] = []\n) {\n if (!(\"name\" in node) || node instanceof Background) {\n return;\n }\n const title = `${node.keyword}: ${node.name}`;\n const fullPath = path ? `${path} ${title}` : title;\n accumulator.push(fullPath);\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n if (!(\"name\" in child) || child instanceof Background) {\n continue;\n }\n gherkinToTestNames(child, fullPath, accumulator);\n }\n return accumulator;\n}\n\nexport const Query = {\n find: {\n failed,\n },\n testNames: gherkinToTestNames,\n};\n","import {\n Background,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { Example } from \"@autometa/gherkin\";\n\nexport type WalkFunction<T extends GherkinNode, TAccumulator, TReturn> = (\n node: T,\n accumulator: TAccumulator,\n lastNode?: GherkinNode\n) => TReturn;\n\nexport type WalkFunctionMap<TAccumulator> = {\n onFeature?: WalkFunction<Feature, TAccumulator, TAccumulator>;\n onRule?: WalkFunction<Rule, TAccumulator, TAccumulator>;\n onBackground?: WalkFunction<Background, TAccumulator, TAccumulator>;\n onScenario?: WalkFunction<Scenario, TAccumulator, TAccumulator>;\n onScenarioOutline?: WalkFunction<ScenarioOutline, TAccumulator, TAccumulator>;\n onExamples?: WalkFunction<Examples, TAccumulator, TAccumulator>;\n onExample?: WalkFunction<Example, TAccumulator, TAccumulator>;\n onStep?: WalkFunction<Step, TAccumulator, TAccumulator>;\n};\n\nexport class GherkinWalker {\n static walk<TAccumulator>(\n walkFunction: WalkFunctionMap<TAccumulator>,\n childNode: GherkinNode,\n accumulator: TAccumulator,\n parentNode?: GherkinNode\n ) {\n if (accumulator === undefined) {\n throw new AutomationError(\n `An accumulator must be defined to continue the walker from ${\n childNode.constructor.name\n }${JSON.stringify(childNode)}`\n );\n }\n this.#walkNode(childNode, accumulator, walkFunction, parentNode);\n return accumulator;\n }\n\n static #walkNode<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n walkFunction: WalkFunctionMap<TAccumulator>,\n lastNode?: GherkinNode\n ) {\n if (child instanceof Feature && walkFunction.onFeature) {\n const acc = walkFunction.onFeature(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Rule && walkFunction.onRule) {\n const acc = walkFunction.onRule(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Examples) {\n const acc = walkFunction.onExamples?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Example) {\n const acc = walkFunction.onExample?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Scenario) {\n const acc = walkFunction.onScenario?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof ScenarioOutline) {\n const acc = walkFunction.onScenarioOutline?.(\n child,\n accumulator,\n lastNode\n );\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Background) {\n const acc = walkFunction?.onBackground?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Step) {\n const acc = walkFunction.onStep?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n }\n\n static #walkChildren<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walkFunction: WalkFunctionMap<any>\n ) {\n for (const node of child.children) {\n this.walk(walkFunction, node, accumulator, child);\n }\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport { StepKeyword } from \"@autometa/gherkin\";\nimport { StepType } from \"@autometa/gherkin\";\nimport {\n Scope,\n RuleScope,\n ScenarioScope,\n ScenarioOutlineScope,\n BackgroundScope,\n} from \"@autometa/scopes\";\nimport { Empty_Function } from \"@autometa/scopes\";\n\nexport function scope(value: Scope) {\n return {\n findRule: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return child instanceof RuleScope && child.name === name;\n }) as RuleScope | undefined;\n if (!found) {\n const rule = new RuleScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(rule);\n return rule;\n }\n return found;\n },\n findScenario: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return (\n child instanceof ScenarioScope &&\n child.name === name &&\n !(child instanceof ScenarioOutlineScope)\n );\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findBackground: ({ name }: { name?: string }): BackgroundScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof BackgroundScope;\n }) as BackgroundScope | undefined;\n if (found && found.name !== name) {\n throw new AutomationError(\n `Could not find background matching ${name} but found ${found?.name}`\n );\n }\n if (found) {\n return found;\n }\n\n const bgScope = new BackgroundScope(\n name,\n Empty_Function,\n value.hooks,\n value.steps\n );\n value.attach(bgScope);\n return bgScope;\n },\n findScenarioOutline: (name: string): ScenarioOutlineScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof ScenarioOutlineScope && child.name === name;\n }) as ScenarioOutlineScope | undefined;\n if (!found) {\n const scenarioOutline = new ScenarioOutlineScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenarioOutline);\n return scenarioOutline;\n }\n return found;\n },\n findExample(name: string): ScenarioScope {\n const found = value.closedScopes.find((child) => {\n if (!(child instanceof ScenarioScope)) {\n return false;\n }\n return child.name === name;\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findStep: (keywordType: StepType, keyword: StepKeyword, name: string) => {\n return value.steps.find(keywordType, keyword, name);\n },\n };\n}\n","import {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n StepCache,\n} from \"@autometa/scopes\";\nimport {\n BackgroundBridge,\n ExampleBridge,\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n StepBridge,\n} from \"./bridges\";\nimport { GherkinWalker } from \"./gherkin-walker\";\nimport { scope } from \"./scope-search\";\nimport { Bind } from \"@autometa/bind-decorator\";\nimport { Example, Feature, GherkinNode, Scenario } from \"@autometa/gherkin\";\nimport { raise } from \"@autometa/errors\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport class TestBuilder {\n constructor(readonly feature: Feature) {}\n @Bind\n onFeatureExecuted(featureScope: FeatureScope) {\n const bridge = new FeatureBridge();\n GherkinWalker.walk<GherkinCodeBridge>(\n {\n onFeature: (feature, accumulator) => {\n accumulator.data = { gherkin: feature, scope: featureScope };\n return accumulator;\n },\n onRule: (rule, accumulator) => {\n const ruleScope = scope(featureScope).findRule(\n rule.name\n ) as RuleScope;\n const bridge = new RuleBridge();\n bridge.data = { gherkin: rule, scope: ruleScope };\n (accumulator as FeatureBridge).rules.push(bridge);\n return bridge;\n },\n onScenario: (gherkin, accumulator) => {\n const scenarioScope = scope(accumulator.data.scope).findScenario(\n gherkin.name\n );\n const bridge = new ScenarioBridge();\n bridge.data = { gherkin, scope: scenarioScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n // if accumulator is a outline, push to examples\n\n return bridge;\n },\n onScenarioOutline: (gherkin, accumulator) => {\n const outlineScope = scope(\n accumulator.data.scope\n ).findScenarioOutline(gherkin.name);\n const bridge = new ScenarioOutlineBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n return bridge;\n },\n onExamples: (gherkin, accumulator) => {\n const outlineScope = accumulator.data.scope as ScenarioOutlineScope;\n const bridge = new ExamplesBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as ScenarioOutlineBridge).examples.push(bridge);\n return bridge;\n },\n onExample(gherkin, accumulator) {\n if (gherkin.table === undefined) {\n raise(\n `Example ${gherkin.name} has no Example Table data. A Row of data is required.`\n );\n }\n const title = gherkin.name;\n\n const exampleScope = scope(accumulator.data.scope).findExample(title);\n const bridge = new ExampleBridge();\n bridge.data = { gherkin, scope: exampleScope };\n const acc = accumulator as ExamplesBridge;\n acc.scenarios.push(bridge);\n return bridge;\n },\n onBackground(gherkin, accumulator) {\n const backgroundScope = scope(accumulator.data.scope).findBackground({\n name: gherkin.name,\n });\n const bridge = new BackgroundBridge();\n bridge.data = { gherkin, scope: backgroundScope };\n const acc = accumulator as FeatureBridge | RuleBridge;\n acc.background = bridge;\n return bridge;\n },\n onStep: (step, accumulator) => {\n const {\n data: { scope: parentScope, gherkin },\n } = accumulator;\n const { keyword, keywordType, text } = step;\n const cache = parentScope.steps;\n const existing = getStep(\n accumulator,\n gherkin,\n cache,\n keywordType,\n keyword,\n text\n );\n const bridge = new StepBridge();\n const acc = accumulator as\n | BackgroundBridge\n | ScenarioBridge\n | RuleBridge\n | FeatureBridge;\n\n if (existing) {\n bridge.data = {\n gherkin: step,\n scope: existing.step,\n args: existing.args,\n };\n } else {\n raise(`No step definition matching ${step.keyword} ${step.text}`);\n }\n\n acc.steps.push(bridge);\n return accumulator;\n },\n },\n this.feature,\n bridge\n );\n return bridge;\n }\n}\nfunction getStep(\n accumulator: GherkinCodeBridge,\n gherkin: GherkinNode,\n cache: StepCache,\n keywordType: StepType,\n keyword: StepKeyword,\n text: string\n) {\n try {\n if (accumulator instanceof ExampleBridge) {\n const scenario = gherkin as Example;\n if (scenario.table) {\n return cache.findByExample(keywordType, keyword, text, scenario.table);\n }\n }\n return cache.find(keywordType, keyword, text);\n } catch (e) {\n const cause = e as Error;\n const { title } = gherkin as Scenario;\n raise(`'${title}' could not find a step definition`, { cause });\n }\n}\n"],"mappings":"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","names":["scope","scope","Background","Background","Background","Examples","Feature","Rule","Scenario","ScenarioOutline","Step","AutomationError","Example","AutomationError","Feature","Rule","Examples","Example","Scenario","ScenarioOutline","Background","Step","AutomationError","bridge"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -26,6 +26,7 @@ declare class FeatureBridge extends GherkinCodeBridge {
|
|
|
26
26
|
scenarios: (ScenarioBridge | ScenarioOutlineBridge)[];
|
|
27
27
|
rules: RuleBridge[];
|
|
28
28
|
steps: StepBridge[];
|
|
29
|
+
accumulateTags(): string[];
|
|
29
30
|
}
|
|
30
31
|
declare class BackgroundBridge extends GherkinCodeBridge {
|
|
31
32
|
data: {
|
|
@@ -42,6 +43,7 @@ declare class RuleBridge extends GherkinCodeBridge {
|
|
|
42
43
|
background: BackgroundBridge;
|
|
43
44
|
scenarios: (ScenarioBridge | ScenarioOutlineBridge)[];
|
|
44
45
|
steps: StepBridge[];
|
|
46
|
+
accumulateTags(): string[];
|
|
45
47
|
}
|
|
46
48
|
declare class ScenarioBridge extends GherkinCodeBridge {
|
|
47
49
|
data: {
|
|
@@ -55,6 +57,7 @@ declare class ScenarioBridge extends GherkinCodeBridge {
|
|
|
55
57
|
};
|
|
56
58
|
get title(): string;
|
|
57
59
|
get tags(): string[];
|
|
60
|
+
accumulateTags(): string[];
|
|
58
61
|
}
|
|
59
62
|
declare class ExampleBridge extends GherkinCodeBridge {
|
|
60
63
|
data: {
|
|
@@ -68,6 +71,7 @@ declare class ExampleBridge extends GherkinCodeBridge {
|
|
|
68
71
|
};
|
|
69
72
|
get title(): string;
|
|
70
73
|
get tags(): string[];
|
|
74
|
+
accumulateTags(): string[];
|
|
71
75
|
}
|
|
72
76
|
declare class ScenarioOutlineBridge extends GherkinCodeBridge {
|
|
73
77
|
data: {
|
|
@@ -78,6 +82,7 @@ declare class ScenarioOutlineBridge extends GherkinCodeBridge {
|
|
|
78
82
|
steps: StepBridge[];
|
|
79
83
|
get title(): string;
|
|
80
84
|
get tags(): string[];
|
|
85
|
+
accumulateTags(): string[];
|
|
81
86
|
}
|
|
82
87
|
declare class ExamplesBridge extends GherkinCodeBridge {
|
|
83
88
|
data: {
|
|
@@ -88,6 +93,7 @@ declare class ExamplesBridge extends GherkinCodeBridge {
|
|
|
88
93
|
steps: StepBridge[];
|
|
89
94
|
get title(): string;
|
|
90
95
|
get tags(): string[];
|
|
96
|
+
accumulateTags(): string[];
|
|
91
97
|
}
|
|
92
98
|
declare class StepBridge extends GherkinCodeBridge {
|
|
93
99
|
data: {
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ declare class FeatureBridge extends GherkinCodeBridge {
|
|
|
26
26
|
scenarios: (ScenarioBridge | ScenarioOutlineBridge)[];
|
|
27
27
|
rules: RuleBridge[];
|
|
28
28
|
steps: StepBridge[];
|
|
29
|
+
accumulateTags(): string[];
|
|
29
30
|
}
|
|
30
31
|
declare class BackgroundBridge extends GherkinCodeBridge {
|
|
31
32
|
data: {
|
|
@@ -42,6 +43,7 @@ declare class RuleBridge extends GherkinCodeBridge {
|
|
|
42
43
|
background: BackgroundBridge;
|
|
43
44
|
scenarios: (ScenarioBridge | ScenarioOutlineBridge)[];
|
|
44
45
|
steps: StepBridge[];
|
|
46
|
+
accumulateTags(): string[];
|
|
45
47
|
}
|
|
46
48
|
declare class ScenarioBridge extends GherkinCodeBridge {
|
|
47
49
|
data: {
|
|
@@ -55,6 +57,7 @@ declare class ScenarioBridge extends GherkinCodeBridge {
|
|
|
55
57
|
};
|
|
56
58
|
get title(): string;
|
|
57
59
|
get tags(): string[];
|
|
60
|
+
accumulateTags(): string[];
|
|
58
61
|
}
|
|
59
62
|
declare class ExampleBridge extends GherkinCodeBridge {
|
|
60
63
|
data: {
|
|
@@ -68,6 +71,7 @@ declare class ExampleBridge extends GherkinCodeBridge {
|
|
|
68
71
|
};
|
|
69
72
|
get title(): string;
|
|
70
73
|
get tags(): string[];
|
|
74
|
+
accumulateTags(): string[];
|
|
71
75
|
}
|
|
72
76
|
declare class ScenarioOutlineBridge extends GherkinCodeBridge {
|
|
73
77
|
data: {
|
|
@@ -78,6 +82,7 @@ declare class ScenarioOutlineBridge extends GherkinCodeBridge {
|
|
|
78
82
|
steps: StepBridge[];
|
|
79
83
|
get title(): string;
|
|
80
84
|
get tags(): string[];
|
|
85
|
+
accumulateTags(): string[];
|
|
81
86
|
}
|
|
82
87
|
declare class ExamplesBridge extends GherkinCodeBridge {
|
|
83
88
|
data: {
|
|
@@ -88,6 +93,7 @@ declare class ExamplesBridge extends GherkinCodeBridge {
|
|
|
88
93
|
steps: StepBridge[];
|
|
89
94
|
get title(): string;
|
|
90
95
|
get tags(): string[];
|
|
96
|
+
accumulateTags(): string[];
|
|
91
97
|
}
|
|
92
98
|
declare class StepBridge extends GherkinCodeBridge {
|
|
93
99
|
data: {
|
package/dist/index.js
CHANGED
|
@@ -92,6 +92,12 @@ var FeatureBridge = class extends GherkinCodeBridge {
|
|
|
92
92
|
this.rules = [];
|
|
93
93
|
this.steps = [];
|
|
94
94
|
}
|
|
95
|
+
accumulateTags() {
|
|
96
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
97
|
+
const ruleTags = this.rules.map((rule) => rule.accumulateTags()).flat();
|
|
98
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags, ...ruleTags];
|
|
99
|
+
return [...new Set(allTags)];
|
|
100
|
+
}
|
|
95
101
|
};
|
|
96
102
|
var BackgroundBridge = class extends GherkinCodeBridge {
|
|
97
103
|
constructor() {
|
|
@@ -105,6 +111,11 @@ var RuleBridge = class extends GherkinCodeBridge {
|
|
|
105
111
|
this.scenarios = [];
|
|
106
112
|
this.steps = [];
|
|
107
113
|
}
|
|
114
|
+
accumulateTags() {
|
|
115
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
116
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags];
|
|
117
|
+
return [...new Set(allTags)];
|
|
118
|
+
}
|
|
108
119
|
};
|
|
109
120
|
var ScenarioBridge = class extends GherkinCodeBridge {
|
|
110
121
|
constructor() {
|
|
@@ -118,6 +129,9 @@ var ScenarioBridge = class extends GherkinCodeBridge {
|
|
|
118
129
|
get tags() {
|
|
119
130
|
return [...this.data.gherkin.tags];
|
|
120
131
|
}
|
|
132
|
+
accumulateTags() {
|
|
133
|
+
return this.tags;
|
|
134
|
+
}
|
|
121
135
|
};
|
|
122
136
|
var ExampleBridge = class extends GherkinCodeBridge {
|
|
123
137
|
constructor() {
|
|
@@ -131,6 +145,9 @@ var ExampleBridge = class extends GherkinCodeBridge {
|
|
|
131
145
|
get tags() {
|
|
132
146
|
return [...this.data.gherkin.tags];
|
|
133
147
|
}
|
|
148
|
+
accumulateTags() {
|
|
149
|
+
return this.tags;
|
|
150
|
+
}
|
|
134
151
|
};
|
|
135
152
|
var ScenarioOutlineBridge = class extends GherkinCodeBridge {
|
|
136
153
|
constructor() {
|
|
@@ -144,6 +161,11 @@ var ScenarioOutlineBridge = class extends GherkinCodeBridge {
|
|
|
144
161
|
get tags() {
|
|
145
162
|
return [...this.data.gherkin.tags];
|
|
146
163
|
}
|
|
164
|
+
accumulateTags() {
|
|
165
|
+
const exampleTags = this.examples.map((example) => example.tags).flat();
|
|
166
|
+
const allTags = [...this.data.gherkin.tags, ...exampleTags];
|
|
167
|
+
return [...new Set(allTags)];
|
|
168
|
+
}
|
|
147
169
|
};
|
|
148
170
|
var ExamplesBridge = class extends GherkinCodeBridge {
|
|
149
171
|
constructor() {
|
|
@@ -157,6 +179,11 @@ var ExamplesBridge = class extends GherkinCodeBridge {
|
|
|
157
179
|
get tags() {
|
|
158
180
|
return [...this.data.gherkin.tags];
|
|
159
181
|
}
|
|
182
|
+
accumulateTags() {
|
|
183
|
+
const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();
|
|
184
|
+
const allTags = [...this.data.gherkin.tags, ...scenarioTags];
|
|
185
|
+
return [...new Set(allTags)];
|
|
186
|
+
}
|
|
160
187
|
};
|
|
161
188
|
var StepBridge = class extends GherkinCodeBridge {
|
|
162
189
|
get args() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/bridges/bridge.ts","../src/bridges/bridge-search.ts","../src/bridges/bridge-query.ts","../src/gherkin-walker.ts","../src/scope-search.ts","../src/test-builder.ts"],"sourcesContent":["export * from \"./bridges\";\nexport * from \"./test-builder\";\nexport * from \"./scope-search\";\nexport * from \"./gherkin-walker\";\n","import { App } from \"@autometa/app\";\nimport {\n Background,\n DataTable,\n Example,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { BackgroundScope, GlobalScope } from \"@autometa/scopes\";\nimport {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n ScenarioScope,\n Scope,\n StepScope,\n} from \"@autometa/scopes\";\n\nexport abstract class GherkinCodeBridge {\n abstract data: { gherkin: GherkinNode; scope: Scope };\n}\nexport class GlobalBridge extends GherkinCodeBridge {\n readonly data: { gherkin: GherkinNode; scope: GlobalScope };\n constructor(scope: GlobalScope) {\n super();\n const nullNode = class extends GherkinNode {\n keyword = \"none\";\n };\n this.data = {\n scope,\n gherkin: new nullNode(),\n };\n }\n}\nexport class FeatureBridge extends GherkinCodeBridge {\n data: { gherkin: Feature; scope: FeatureScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n rules: RuleBridge[] = [];\n steps: StepBridge[] = [];\n}\nexport class BackgroundBridge extends GherkinCodeBridge {\n data: { gherkin: Background; scope: BackgroundScope };\n steps: StepBridge[] = [];\n}\n\nexport class RuleBridge extends GherkinCodeBridge {\n data: { gherkin: Rule; scope: RuleScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n steps: StepBridge[] = [];\n}\n\nexport class ScenarioBridge extends GherkinCodeBridge {\n data: { gherkin: Scenario; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\nexport class ExampleBridge extends GherkinCodeBridge {\n data: { gherkin: Example; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\nexport class ScenarioOutlineBridge extends GherkinCodeBridge {\n data: { gherkin: ScenarioOutline; scope: ScenarioOutlineScope };\n examples: ExamplesBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\n\nexport class ExamplesBridge extends GherkinCodeBridge {\n data: { gherkin: Examples; scope: ScenarioOutlineScope };\n scenarios: ScenarioBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n}\n\nexport class StepBridge extends GherkinCodeBridge {\n data: {\n gherkin: Step;\n scope: StepScope<string, DataTable | undefined>;\n args: undefined | ((app: App) => unknown[]);\n };\n\n get args() {\n return this.data.args\n }\n\n get expressionText() {\n return this.data.scope.expression.source;\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport {\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n RuleBridge,\n} from \"./bridge\";\n\nexport function find(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n if (bridge instanceof FeatureBridge) {\n return findByFeature(bridge, testName);\n }\n if (bridge instanceof RuleBridge) {\n return findByRule(bridge, testName);\n }\n if (bridge instanceof ScenarioOutlineBridge) {\n return findScenarioOutlineOrChild(bridge, testName);\n }\n\n throw new AutomationError(`Could not find test matching ${testName}`);\n}\nfunction findByFeature(\n feature: FeatureBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = feature.data.scope.title(feature.data.gherkin);\n const byScenario = findTestTypes(feature.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleTypes(feature.rules, testName, title);\n if (byRule) {\n return byRule;\n }\n}\nfunction findByRule(\n rule: RuleBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = rule.data.scope.title(rule.data.gherkin);\n const byScenario = findTestTypes(rule.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleOrChild(rule, testName, title);\n if (byRule) {\n return byRule;\n }\n}\n\nexport function findTestTypes(\n scenarios: (ScenarioBridge | ScenarioOutlineBridge | ExamplesBridge)[],\n testName: string,\n from?: string\n) {\n for (const scenario of scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n const found = findScenarioOutlineOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ExamplesBridge) {\n const found = findExamplesOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ScenarioBridge) {\n const found = findScenario(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n }\n}\n\nexport function findRuleTypes(\n rules: RuleBridge[],\n testName: string,\n from?: string\n) {\n for (const rule of rules) {\n const found = findRuleOrChild(rule, testName, from);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findRuleOrChild(\n rule: RuleBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = rule;\n const title = scope.title(gherkin);\n if (testName === title) {\n return rule;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return rule;\n }\n }\n const newFrom = appendPath(from, title);\n return findTestTypes(rule.scenarios, testName, newFrom);\n}\n\nexport function findScenarioOutlineOrChild(\n outline: ScenarioOutlineBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = outline;\n const title = scope.title(gherkin);\n if (testName === title) {\n return outline;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return outline;\n }\n }\n for (const example of outline.examples) {\n const newFrom = appendPath(from, title);\n const found = findExamplesOrChild(example, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nfunction appendPath(from: string | undefined, title: string) {\n return from ? `${from} ${title}` : title;\n}\n\nexport function findExamplesOrChild(\n example: ExamplesBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { gherkin },\n } = example;\n const title = `${gherkin.keyword}: ${gherkin.name}`;\n if (testName === title) {\n return example;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return example;\n }\n }\n for (const scenario of example.scenarios) {\n const newFrom = appendPath(from, title);\n const found = findScenario(scenario, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findScenario(\n scenario: ScenarioBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = scenario;\n const title = scope.title(gherkin);\n if (testName === title) {\n return scenario;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return scenario;\n }\n }\n}\n","import { Background, GherkinNode } from \"@autometa/gherkin\";\nimport {\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n} from \".\";\n\nfunction failed(bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n if (bridge instanceof ScenarioOutlineBridge) {\n return failedOutline(bridge);\n }\n for (const scenario of bridge.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed && scenario.report.error !== undefined) {\n accumulator.push(scenario);\n }\n }\n if (bridge instanceof FeatureBridge) {\n accumulator.push(...failedRule(bridge));\n }\n return accumulator;\n}\n\nfunction failedOutline(bridge: ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n\n for (const example of bridge.examples) {\n for (const scenario of example.scenarios) {\n if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction failedRule(bridge: FeatureBridge) {\n const accumulator: ScenarioBridge[] = [];\n for (const rule of bridge.rules) {\n for (const scenario of rule.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction gherkinToTestNames(\n node: GherkinNode,\n path = \"\",\n accumulator: string[] = []\n) {\n if (!(\"name\" in node) || node instanceof Background) {\n return;\n }\n const title = `${node.keyword}: ${node.name}`;\n const fullPath = path ? `${path} ${title}` : title;\n accumulator.push(fullPath);\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n if (!(\"name\" in child) || child instanceof Background) {\n continue;\n }\n gherkinToTestNames(child, fullPath, accumulator);\n }\n return accumulator;\n}\n\nexport const Query = {\n find: {\n failed,\n },\n testNames: gherkinToTestNames,\n};\n","import {\n Background,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { Example } from \"@autometa/gherkin\";\n\nexport type WalkFunction<T extends GherkinNode, TAccumulator, TReturn> = (\n node: T,\n accumulator: TAccumulator,\n lastNode?: GherkinNode\n) => TReturn;\n\nexport type WalkFunctionMap<TAccumulator> = {\n onFeature?: WalkFunction<Feature, TAccumulator, TAccumulator>;\n onRule?: WalkFunction<Rule, TAccumulator, TAccumulator>;\n onBackground?: WalkFunction<Background, TAccumulator, TAccumulator>;\n onScenario?: WalkFunction<Scenario, TAccumulator, TAccumulator>;\n onScenarioOutline?: WalkFunction<ScenarioOutline, TAccumulator, TAccumulator>;\n onExamples?: WalkFunction<Examples, TAccumulator, TAccumulator>;\n onExample?: WalkFunction<Example, TAccumulator, TAccumulator>;\n onStep?: WalkFunction<Step, TAccumulator, TAccumulator>;\n};\n\nexport class GherkinWalker {\n static walk<TAccumulator>(\n walkFunction: WalkFunctionMap<TAccumulator>,\n childNode: GherkinNode,\n accumulator: TAccumulator,\n parentNode?: GherkinNode\n ) {\n if (accumulator === undefined) {\n throw new AutomationError(\n `An accumulator must be defined to continue the walker from ${\n childNode.constructor.name\n }${JSON.stringify(childNode)}`\n );\n }\n this.#walkNode(childNode, accumulator, walkFunction, parentNode);\n return accumulator;\n }\n\n static #walkNode<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n walkFunction: WalkFunctionMap<TAccumulator>,\n lastNode?: GherkinNode\n ) {\n if (child instanceof Feature && walkFunction.onFeature) {\n const acc = walkFunction.onFeature(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Rule && walkFunction.onRule) {\n const acc = walkFunction.onRule(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Examples) {\n const acc = walkFunction.onExamples?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Example) {\n const acc = walkFunction.onExample?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Scenario) {\n const acc = walkFunction.onScenario?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof ScenarioOutline) {\n const acc = walkFunction.onScenarioOutline?.(\n child,\n accumulator,\n lastNode\n );\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Background) {\n const acc = walkFunction?.onBackground?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Step) {\n const acc = walkFunction.onStep?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n }\n\n static #walkChildren<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walkFunction: WalkFunctionMap<any>\n ) {\n for (const node of child.children) {\n this.walk(walkFunction, node, accumulator, child);\n }\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport { StepKeyword } from \"@autometa/gherkin\";\nimport { StepType } from \"@autometa/gherkin\";\nimport {\n Scope,\n RuleScope,\n ScenarioScope,\n ScenarioOutlineScope,\n BackgroundScope,\n} from \"@autometa/scopes\";\nimport { Empty_Function } from \"@autometa/scopes\";\n\nexport function scope(value: Scope) {\n return {\n findRule: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return child instanceof RuleScope && child.name === name;\n }) as RuleScope | undefined;\n if (!found) {\n const rule = new RuleScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(rule);\n return rule;\n }\n return found;\n },\n findScenario: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return (\n child instanceof ScenarioScope &&\n child.name === name &&\n !(child instanceof ScenarioOutlineScope)\n );\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findBackground: ({ name }: { name?: string }): BackgroundScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof BackgroundScope;\n }) as BackgroundScope | undefined;\n if (found && found.name !== name) {\n throw new AutomationError(\n `Could not find background matching ${name} but found ${found?.name}`\n );\n }\n if (found) {\n return found;\n }\n\n const bgScope = new BackgroundScope(\n name,\n Empty_Function,\n value.hooks,\n value.steps\n );\n value.attach(bgScope);\n return bgScope;\n },\n findScenarioOutline: (name: string): ScenarioOutlineScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof ScenarioOutlineScope && child.name === name;\n }) as ScenarioOutlineScope | undefined;\n if (!found) {\n const scenarioOutline = new ScenarioOutlineScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenarioOutline);\n return scenarioOutline;\n }\n return found;\n },\n findExample(name: string): ScenarioScope {\n const found = value.closedScopes.find((child) => {\n if (!(child instanceof ScenarioScope)) {\n return false;\n }\n return child.name === name;\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findStep: (keywordType: StepType, keyword: StepKeyword, name: string) => {\n return value.steps.find(keywordType, keyword, name);\n },\n };\n}\n","import {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n StepCache,\n} from \"@autometa/scopes\";\nimport {\n BackgroundBridge,\n ExampleBridge,\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n StepBridge,\n} from \"./bridges\";\nimport { GherkinWalker } from \"./gherkin-walker\";\nimport { scope } from \"./scope-search\";\nimport { Bind } from \"@autometa/bind-decorator\";\nimport { Example, Feature, GherkinNode, Scenario } from \"@autometa/gherkin\";\nimport { raise } from \"@autometa/errors\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport class TestBuilder {\n constructor(readonly feature: Feature) {}\n @Bind\n onFeatureExecuted(featureScope: FeatureScope) {\n const bridge = new FeatureBridge();\n GherkinWalker.walk<GherkinCodeBridge>(\n {\n onFeature: (feature, accumulator) => {\n accumulator.data = { gherkin: feature, scope: featureScope };\n return accumulator;\n },\n onRule: (rule, accumulator) => {\n const ruleScope = scope(featureScope).findRule(\n rule.name\n ) as RuleScope;\n const bridge = new RuleBridge();\n bridge.data = { gherkin: rule, scope: ruleScope };\n (accumulator as FeatureBridge).rules.push(bridge);\n return bridge;\n },\n onScenario: (gherkin, accumulator) => {\n const scenarioScope = scope(accumulator.data.scope).findScenario(\n gherkin.name\n );\n const bridge = new ScenarioBridge();\n bridge.data = { gherkin, scope: scenarioScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n // if accumulator is a outline, push to examples\n\n return bridge;\n },\n onScenarioOutline: (gherkin, accumulator) => {\n const outlineScope = scope(\n accumulator.data.scope\n ).findScenarioOutline(gherkin.name);\n const bridge = new ScenarioOutlineBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n return bridge;\n },\n onExamples: (gherkin, accumulator) => {\n const outlineScope = accumulator.data.scope as ScenarioOutlineScope;\n const bridge = new ExamplesBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as ScenarioOutlineBridge).examples.push(bridge);\n return bridge;\n },\n onExample(gherkin, accumulator) {\n if (gherkin.table === undefined) {\n raise(\n `Example ${gherkin.name} has no Example Table data. A Row of data is required.`\n );\n }\n const title = gherkin.name;\n\n const exampleScope = scope(accumulator.data.scope).findExample(title);\n const bridge = new ExampleBridge();\n bridge.data = { gherkin, scope: exampleScope };\n const acc = accumulator as ExamplesBridge;\n acc.scenarios.push(bridge);\n return bridge;\n },\n onBackground(gherkin, accumulator) {\n const backgroundScope = scope(accumulator.data.scope).findBackground({\n name: gherkin.name,\n });\n const bridge = new BackgroundBridge();\n bridge.data = { gherkin, scope: backgroundScope };\n const acc = accumulator as FeatureBridge | RuleBridge;\n acc.background = bridge;\n return bridge;\n },\n onStep: (step, accumulator) => {\n const {\n data: { scope: parentScope, gherkin },\n } = accumulator;\n const { keyword, keywordType, text } = step;\n const cache = parentScope.steps;\n const existing = getStep(\n accumulator,\n gherkin,\n cache,\n keywordType,\n keyword,\n text\n );\n const bridge = new StepBridge();\n const acc = accumulator as\n | BackgroundBridge\n | ScenarioBridge\n | RuleBridge\n | FeatureBridge;\n\n if (existing) {\n bridge.data = {\n gherkin: step,\n scope: existing.step,\n args: existing.args,\n };\n } else {\n raise(`No step definition matching ${step.keyword} ${step.text}`);\n }\n\n acc.steps.push(bridge);\n return accumulator;\n },\n },\n this.feature,\n bridge\n );\n return bridge;\n }\n}\nfunction getStep(\n accumulator: GherkinCodeBridge,\n gherkin: GherkinNode,\n cache: StepCache,\n keywordType: StepType,\n keyword: StepKeyword,\n text: string\n) {\n try {\n if (accumulator instanceof ExampleBridge) {\n const scenario = gherkin as Example;\n if (scenario.table) {\n return cache.findByExample(keywordType, keyword, text, scenario.table);\n }\n }\n return cache.find(keywordType, keyword, text);\n } catch (e) {\n const cause = e as Error;\n const { title } = gherkin as Scenario;\n raise(`'${title}' could not find a step definition`, { cause });\n }\n}\n"],"mappings":"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","names":["scope","scope","import_gherkin","import_gherkin","import_errors","import_errors","import_scopes","import_errors","bridge"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/bridges/bridge.ts","../src/bridges/bridge-search.ts","../src/bridges/bridge-query.ts","../src/gherkin-walker.ts","../src/scope-search.ts","../src/test-builder.ts"],"sourcesContent":["export * from \"./bridges\";\nexport * from \"./test-builder\";\nexport * from \"./scope-search\";\nexport * from \"./gherkin-walker\";\n","import { App } from \"@autometa/app\";\nimport {\n Background,\n DataTable,\n Example,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { BackgroundScope, GlobalScope } from \"@autometa/scopes\";\nimport {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n ScenarioScope,\n Scope,\n StepScope,\n} from \"@autometa/scopes\";\n\nexport abstract class GherkinCodeBridge {\n abstract data: { gherkin: GherkinNode; scope: Scope };\n}\nexport class GlobalBridge extends GherkinCodeBridge {\n readonly data: { gherkin: GherkinNode; scope: GlobalScope };\n constructor(scope: GlobalScope) {\n super();\n const nullNode = class extends GherkinNode {\n keyword = \"none\";\n };\n this.data = {\n scope,\n gherkin: new nullNode(),\n };\n }\n}\nexport class FeatureBridge extends GherkinCodeBridge {\n data: { gherkin: Feature; scope: FeatureScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n rules: RuleBridge[] = [];\n steps: StepBridge[] = [];\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const ruleTags = this.rules.map((rule) => rule.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags, ...ruleTags];\n return [...new Set(allTags)];\n }\n}\nexport class BackgroundBridge extends GherkinCodeBridge {\n data: { gherkin: Background; scope: BackgroundScope };\n steps: StepBridge[] = [];\n}\n\nexport class RuleBridge extends GherkinCodeBridge {\n data: { gherkin: Rule; scope: RuleScope };\n background: BackgroundBridge;\n scenarios: (ScenarioBridge | ScenarioOutlineBridge)[] = [];\n steps: StepBridge[] = [];\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class ScenarioBridge extends GherkinCodeBridge {\n data: { gherkin: Scenario; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n return this.tags;\n }\n}\nexport class ExampleBridge extends GherkinCodeBridge {\n data: { gherkin: Example; scope: ScenarioScope };\n steps: StepBridge[] = [];\n report: {\n passed?: boolean;\n error?: Error;\n } = {};\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n return this.tags;\n }\n}\nexport class ScenarioOutlineBridge extends GherkinCodeBridge {\n data: { gherkin: ScenarioOutline; scope: ScenarioOutlineScope };\n examples: ExamplesBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n const exampleTags = this.examples.map((example) => example.tags).flat();\n const allTags = [...this.data.gherkin.tags, ...exampleTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class ExamplesBridge extends GherkinCodeBridge {\n data: { gherkin: Examples; scope: ScenarioOutlineScope };\n scenarios: ScenarioBridge[] = [];\n steps: StepBridge[] = [];\n get title() {\n return this.data.scope.title(this.data.gherkin);\n }\n \n get tags() {\n return [...this.data.gherkin.tags];\n }\n\n accumulateTags() {\n const scenarioTags = this.scenarios.map((scenario) => scenario.accumulateTags()).flat();\n const allTags = [...this.data.gherkin.tags, ...scenarioTags];\n return [...new Set(allTags)];\n }\n}\n\nexport class StepBridge extends GherkinCodeBridge {\n data: {\n gherkin: Step;\n scope: StepScope<string, DataTable | undefined>;\n args: undefined | ((app: App) => unknown[]);\n };\n\n get args() {\n return this.data.args;\n }\n\n get expressionText() {\n return this.data.scope.expression.source;\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport {\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n RuleBridge,\n} from \"./bridge\";\n\nexport function find(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n if (bridge instanceof FeatureBridge) {\n return findByFeature(bridge, testName);\n }\n if (bridge instanceof RuleBridge) {\n return findByRule(bridge, testName);\n }\n if (bridge instanceof ScenarioOutlineBridge) {\n return findScenarioOutlineOrChild(bridge, testName);\n }\n\n throw new AutomationError(`Could not find test matching ${testName}`);\n}\nfunction findByFeature(\n feature: FeatureBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = feature.data.scope.title(feature.data.gherkin);\n const byScenario = findTestTypes(feature.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleTypes(feature.rules, testName, title);\n if (byRule) {\n return byRule;\n }\n}\nfunction findByRule(\n rule: RuleBridge,\n testName: string\n): GherkinCodeBridge | undefined {\n const title = rule.data.scope.title(rule.data.gherkin);\n const byScenario = findTestTypes(rule.scenarios, testName, title);\n if (byScenario) {\n return byScenario;\n }\n const byRule = findRuleOrChild(rule, testName, title);\n if (byRule) {\n return byRule;\n }\n}\n\nexport function findTestTypes(\n scenarios: (ScenarioBridge | ScenarioOutlineBridge | ExamplesBridge)[],\n testName: string,\n from?: string\n) {\n for (const scenario of scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n const found = findScenarioOutlineOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ExamplesBridge) {\n const found = findExamplesOrChild(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n if (scenario instanceof ScenarioBridge) {\n const found = findScenario(scenario, testName, from);\n if (found) {\n return found;\n }\n }\n }\n}\n\nexport function findRuleTypes(\n rules: RuleBridge[],\n testName: string,\n from?: string\n) {\n for (const rule of rules) {\n const found = findRuleOrChild(rule, testName, from);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findRuleOrChild(\n rule: RuleBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = rule;\n const title = scope.title(gherkin);\n if (testName === title) {\n return rule;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return rule;\n }\n }\n const newFrom = appendPath(from, title);\n return findTestTypes(rule.scenarios, testName, newFrom);\n}\n\nexport function findScenarioOutlineOrChild(\n outline: ScenarioOutlineBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = outline;\n const title = scope.title(gherkin);\n if (testName === title) {\n return outline;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return outline;\n }\n }\n for (const example of outline.examples) {\n const newFrom = appendPath(from, title);\n const found = findExamplesOrChild(example, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nfunction appendPath(from: string | undefined, title: string) {\n return from ? `${from} ${title}` : title;\n}\n\nexport function findExamplesOrChild(\n example: ExamplesBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { gherkin },\n } = example;\n const title = `${gherkin.keyword}: ${gherkin.name}`;\n if (testName === title) {\n return example;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return example;\n }\n }\n for (const scenario of example.scenarios) {\n const newFrom = appendPath(from, title);\n const found = findScenario(scenario, testName, newFrom);\n if (found) {\n return found;\n }\n }\n}\n\nexport function findScenario(\n scenario: ScenarioBridge,\n testName: string,\n from?: string\n) {\n const {\n data: { scope, gherkin },\n } = scenario;\n const title = scope.title(gherkin);\n if (testName === title) {\n return scenario;\n }\n if (from) {\n const fullTitle = `${from} ${title}`;\n if (fullTitle === testName) {\n return scenario;\n }\n }\n}\n","import { Background, GherkinNode } from \"@autometa/gherkin\";\nimport {\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n} from \".\";\n\nfunction failed(bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n if (bridge instanceof ScenarioOutlineBridge) {\n return failedOutline(bridge);\n }\n for (const scenario of bridge.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed && scenario.report.error !== undefined) {\n accumulator.push(scenario);\n }\n }\n if (bridge instanceof FeatureBridge) {\n accumulator.push(...failedRule(bridge));\n }\n return accumulator;\n}\n\nfunction failedOutline(bridge: ScenarioOutlineBridge) {\n const accumulator: ScenarioBridge[] = [];\n\n for (const example of bridge.examples) {\n for (const scenario of example.scenarios) {\n if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction failedRule(bridge: FeatureBridge) {\n const accumulator: ScenarioBridge[] = [];\n for (const rule of bridge.rules) {\n for (const scenario of rule.scenarios) {\n if (scenario instanceof ScenarioOutlineBridge) {\n accumulator.push(...failedOutline(scenario));\n } else if (!scenario.report.passed) {\n accumulator.push(scenario);\n }\n }\n }\n return accumulator;\n}\n\nfunction gherkinToTestNames(\n node: GherkinNode,\n path = \"\",\n accumulator: string[] = []\n) {\n if (!(\"name\" in node) || node instanceof Background) {\n return;\n }\n const title = `${node.keyword}: ${node.name}`;\n const fullPath = path ? `${path} ${title}` : title;\n accumulator.push(fullPath);\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n if (!(\"name\" in child) || child instanceof Background) {\n continue;\n }\n gherkinToTestNames(child, fullPath, accumulator);\n }\n return accumulator;\n}\n\nexport const Query = {\n find: {\n failed,\n },\n testNames: gherkinToTestNames,\n};\n","import {\n Background,\n Examples,\n Feature,\n GherkinNode,\n Rule,\n Scenario,\n ScenarioOutline,\n Step,\n} from \"@autometa/gherkin\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { Example } from \"@autometa/gherkin\";\n\nexport type WalkFunction<T extends GherkinNode, TAccumulator, TReturn> = (\n node: T,\n accumulator: TAccumulator,\n lastNode?: GherkinNode\n) => TReturn;\n\nexport type WalkFunctionMap<TAccumulator> = {\n onFeature?: WalkFunction<Feature, TAccumulator, TAccumulator>;\n onRule?: WalkFunction<Rule, TAccumulator, TAccumulator>;\n onBackground?: WalkFunction<Background, TAccumulator, TAccumulator>;\n onScenario?: WalkFunction<Scenario, TAccumulator, TAccumulator>;\n onScenarioOutline?: WalkFunction<ScenarioOutline, TAccumulator, TAccumulator>;\n onExamples?: WalkFunction<Examples, TAccumulator, TAccumulator>;\n onExample?: WalkFunction<Example, TAccumulator, TAccumulator>;\n onStep?: WalkFunction<Step, TAccumulator, TAccumulator>;\n};\n\nexport class GherkinWalker {\n static walk<TAccumulator>(\n walkFunction: WalkFunctionMap<TAccumulator>,\n childNode: GherkinNode,\n accumulator: TAccumulator,\n parentNode?: GherkinNode\n ) {\n if (accumulator === undefined) {\n throw new AutomationError(\n `An accumulator must be defined to continue the walker from ${\n childNode.constructor.name\n }${JSON.stringify(childNode)}`\n );\n }\n this.#walkNode(childNode, accumulator, walkFunction, parentNode);\n return accumulator;\n }\n\n static #walkNode<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n walkFunction: WalkFunctionMap<TAccumulator>,\n lastNode?: GherkinNode\n ) {\n if (child instanceof Feature && walkFunction.onFeature) {\n const acc = walkFunction.onFeature(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Rule && walkFunction.onRule) {\n const acc = walkFunction.onRule(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Examples) {\n const acc = walkFunction.onExamples?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Example) {\n const acc = walkFunction.onExample?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Scenario) {\n const acc = walkFunction.onScenario?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof ScenarioOutline) {\n const acc = walkFunction.onScenarioOutline?.(\n child,\n accumulator,\n lastNode\n );\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Background) {\n const acc = walkFunction?.onBackground?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n\n if (child instanceof Step) {\n const acc = walkFunction.onStep?.(child, accumulator, lastNode);\n return this.#walkChildren(child, acc, walkFunction);\n }\n }\n\n static #walkChildren<TAccumulator>(\n child: GherkinNode,\n accumulator: TAccumulator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walkFunction: WalkFunctionMap<any>\n ) {\n for (const node of child.children) {\n this.walk(walkFunction, node, accumulator, child);\n }\n }\n}\n","import { AutomationError } from \"@autometa/errors\";\nimport { StepKeyword } from \"@autometa/gherkin\";\nimport { StepType } from \"@autometa/gherkin\";\nimport {\n Scope,\n RuleScope,\n ScenarioScope,\n ScenarioOutlineScope,\n BackgroundScope,\n} from \"@autometa/scopes\";\nimport { Empty_Function } from \"@autometa/scopes\";\n\nexport function scope(value: Scope) {\n return {\n findRule: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return child instanceof RuleScope && child.name === name;\n }) as RuleScope | undefined;\n if (!found) {\n const rule = new RuleScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(rule);\n return rule;\n }\n return found;\n },\n findScenario: (name: string) => {\n const found = value.closedScopes.find((child) => {\n return (\n child instanceof ScenarioScope &&\n child.name === name &&\n !(child instanceof ScenarioOutlineScope)\n );\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findBackground: ({ name }: { name?: string }): BackgroundScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof BackgroundScope;\n }) as BackgroundScope | undefined;\n if (found && found.name !== name) {\n throw new AutomationError(\n `Could not find background matching ${name} but found ${found?.name}`\n );\n }\n if (found) {\n return found;\n }\n\n const bgScope = new BackgroundScope(\n name,\n Empty_Function,\n value.hooks,\n value.steps\n );\n value.attach(bgScope);\n return bgScope;\n },\n findScenarioOutline: (name: string): ScenarioOutlineScope => {\n const found = value.closedScopes.find((child) => {\n return child instanceof ScenarioOutlineScope && child.name === name;\n }) as ScenarioOutlineScope | undefined;\n if (!found) {\n const scenarioOutline = new ScenarioOutlineScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenarioOutline);\n return scenarioOutline;\n }\n return found;\n },\n findExample(name: string): ScenarioScope {\n const found = value.closedScopes.find((child) => {\n if (!(child instanceof ScenarioScope)) {\n return false;\n }\n return child.name === name;\n }) as ScenarioScope;\n if (!found) {\n const scenario = new ScenarioScope(\n name,\n Empty_Function,\n undefined,\n value.hooks,\n value.steps\n );\n value.attach(scenario);\n return scenario;\n }\n return found;\n },\n findStep: (keywordType: StepType, keyword: StepKeyword, name: string) => {\n return value.steps.find(keywordType, keyword, name);\n },\n };\n}\n","import {\n FeatureScope,\n RuleScope,\n ScenarioOutlineScope,\n StepCache,\n} from \"@autometa/scopes\";\nimport {\n BackgroundBridge,\n ExampleBridge,\n ExamplesBridge,\n FeatureBridge,\n GherkinCodeBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n StepBridge,\n} from \"./bridges\";\nimport { GherkinWalker } from \"./gherkin-walker\";\nimport { scope } from \"./scope-search\";\nimport { Bind } from \"@autometa/bind-decorator\";\nimport { Example, Feature, GherkinNode, Scenario } from \"@autometa/gherkin\";\nimport { raise } from \"@autometa/errors\";\nimport { StepKeyword, StepType } from \"@autometa/types\";\nexport class TestBuilder {\n constructor(readonly feature: Feature) {}\n @Bind\n onFeatureExecuted(featureScope: FeatureScope) {\n const bridge = new FeatureBridge();\n GherkinWalker.walk<GherkinCodeBridge>(\n {\n onFeature: (feature, accumulator) => {\n accumulator.data = { gherkin: feature, scope: featureScope };\n return accumulator;\n },\n onRule: (rule, accumulator) => {\n const ruleScope = scope(featureScope).findRule(\n rule.name\n ) as RuleScope;\n const bridge = new RuleBridge();\n bridge.data = { gherkin: rule, scope: ruleScope };\n (accumulator as FeatureBridge).rules.push(bridge);\n return bridge;\n },\n onScenario: (gherkin, accumulator) => {\n const scenarioScope = scope(accumulator.data.scope).findScenario(\n gherkin.name\n );\n const bridge = new ScenarioBridge();\n bridge.data = { gherkin, scope: scenarioScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n // if accumulator is a outline, push to examples\n\n return bridge;\n },\n onScenarioOutline: (gherkin, accumulator) => {\n const outlineScope = scope(\n accumulator.data.scope\n ).findScenarioOutline(gherkin.name);\n const bridge = new ScenarioOutlineBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as FeatureBridge | RuleBridge).scenarios.push(bridge);\n return bridge;\n },\n onExamples: (gherkin, accumulator) => {\n const outlineScope = accumulator.data.scope as ScenarioOutlineScope;\n const bridge = new ExamplesBridge();\n bridge.data = { gherkin, scope: outlineScope };\n (accumulator as ScenarioOutlineBridge).examples.push(bridge);\n return bridge;\n },\n onExample(gherkin, accumulator) {\n if (gherkin.table === undefined) {\n raise(\n `Example ${gherkin.name} has no Example Table data. A Row of data is required.`\n );\n }\n const title = gherkin.name;\n\n const exampleScope = scope(accumulator.data.scope).findExample(title);\n const bridge = new ExampleBridge();\n bridge.data = { gherkin, scope: exampleScope };\n const acc = accumulator as ExamplesBridge;\n acc.scenarios.push(bridge);\n return bridge;\n },\n onBackground(gherkin, accumulator) {\n const backgroundScope = scope(accumulator.data.scope).findBackground({\n name: gherkin.name,\n });\n const bridge = new BackgroundBridge();\n bridge.data = { gherkin, scope: backgroundScope };\n const acc = accumulator as FeatureBridge | RuleBridge;\n acc.background = bridge;\n return bridge;\n },\n onStep: (step, accumulator) => {\n const {\n data: { scope: parentScope, gherkin },\n } = accumulator;\n const { keyword, keywordType, text } = step;\n const cache = parentScope.steps;\n const existing = getStep(\n accumulator,\n gherkin,\n cache,\n keywordType,\n keyword,\n text\n );\n const bridge = new StepBridge();\n const acc = accumulator as\n | BackgroundBridge\n | ScenarioBridge\n | RuleBridge\n | FeatureBridge;\n\n if (existing) {\n bridge.data = {\n gherkin: step,\n scope: existing.step,\n args: existing.args,\n };\n } else {\n raise(`No step definition matching ${step.keyword} ${step.text}`);\n }\n\n acc.steps.push(bridge);\n return accumulator;\n },\n },\n this.feature,\n bridge\n );\n return bridge;\n }\n}\nfunction getStep(\n accumulator: GherkinCodeBridge,\n gherkin: GherkinNode,\n cache: StepCache,\n keywordType: StepType,\n keyword: StepKeyword,\n text: string\n) {\n try {\n if (accumulator instanceof ExampleBridge) {\n const scenario = gherkin as Example;\n if (scenario.table) {\n return cache.findByExample(keywordType, keyword, text, scenario.table);\n }\n }\n return cache.find(keywordType, keyword, text);\n } catch (e) {\n const cause = e as Error;\n const { title } = gherkin as Scenario;\n raise(`'${title}' could not find a step definition`, { cause });\n }\n}\n"],"mappings":"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","names":["scope","scope","import_gherkin","import_gherkin","import_errors","import_errors","import_scopes","import_errors","bridge"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autometa/test-builder",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "internal library for autometa",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,18 +27,18 @@
|
|
|
27
27
|
"tsup": "^7.2.0",
|
|
28
28
|
"typescript": "^4.9.5",
|
|
29
29
|
"vitest": "1.4.0",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
30
|
+
"tsconfig": "0.7.0",
|
|
31
|
+
"eslint-config-custom": "0.6.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@cucumber/cucumber-expressions": "^16.1.2",
|
|
35
35
|
"zod": "^3.21.4",
|
|
36
36
|
"@autometa/app": "^0.3.5",
|
|
37
37
|
"@autometa/bind-decorator": "^0.5.1",
|
|
38
|
-
"@autometa/dto-builder": "^0.13.9",
|
|
39
38
|
"@autometa/errors": "^0.2.2",
|
|
40
39
|
"@autometa/gherkin": "^0.6.14",
|
|
41
40
|
"@autometa/phrases": "^0.1.12",
|
|
41
|
+
"@autometa/dto-builder": "^0.13.9",
|
|
42
42
|
"@autometa/scopes": "^0.6.5",
|
|
43
43
|
"@autometa/types": "^0.4.1",
|
|
44
44
|
"@autometa/asserters": "^0.1.8",
|