run method

  1. @override
void run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
void run() async {
  try {
    if (!_validateDependencies()) return;
    if (!_validateInputs()) return;

    final now = DateTime.now();
    final config = _prepareConfiguration();

    if (config['generateL10n']) {
      await _generateLocalization(config);
    }

    await _prepareFirebaseConfiguration(config);
    final features = _discoverFeatureFiles(config);
    final ndjsons = await _processFeatureFiles(features);
    _saveTestOutput(ndjsons);

    await _executeIntegrationTests(config);

    final totalTime = DateTime.now().difference(now);
    printMessage('⏰ Total Time: ${formatDurationInHhMmSs(totalTime)}');
  } catch (e) {
    StatusHelper.failed('Cucumber testing failed: ${e.toString()}',
        suggestion: 'Ensure gherkin is installed and feature files exist',
        examples: [
          'npm install -g @cucumber/gherkin-cli',
          'morpheme doctor'
        ]);
  }
}