visit method
Future<void>
visit(
- String featureFileContents,
- String path,
- LanguageService languageService,
- MessageReporter reporter,
Implementation
Future<void> visit(
String featureFileContents,
String path,
LanguageService languageService,
MessageReporter reporter,
) async {
final featureFile = await GherkinParser().parseFeatureFile(
featureFileContents,
path,
reporter,
languageService,
);
for (final feature in featureFile.features) {
await visitFeature(
feature.name,
feature.description,
_tagsToList(feature.tags),
feature.scenarios.length,
);
for (var i = 0; i < feature.scenarios.length; i += 1) {
final scenario = feature.scenarios.elementAt(i);
final isFirst = i == 0;
final isLast = i == (feature.scenarios.length - 1);
final allScenarios = scenario is ScenarioOutlineRunnable
? scenario.expandOutlinesIntoScenarios()
: [scenario];
var acknowledgedScenarioPosition = false;
for (final childScenario in allScenarios) {
await visitScenario(
feature.name,
feature.description,
_tagsToList(feature.tags),
childScenario.name,
childScenario.description,
_tagsToList(childScenario.tags),
path,
isFirst: !acknowledgedScenarioPosition && isFirst,
isLast: !acknowledgedScenarioPosition && isLast,
);
acknowledgedScenarioPosition = true;
if (feature.background != null) {
final bg = feature.background;
for (final step in bg!.steps) {
await visitScenarioStep(
step.name,
step.multilineStrings,
step.table,
);
}
}
for (final step in childScenario.steps) {
await visitScenarioStep(
step.name,
step.multilineStrings,
step.table,
);
}
}
}
}
return Future.value(null);
}