@gnuechtel/nx-cucumber 0.57.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gnuechtel/nx-cucumber",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://gitlab.com/gnuechtel/open-source.git",
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "@istanbuljs/nyc-config-typescript",
3
+ "all": true,
4
+ "check-coverage": false,
5
+ "include": ["apps/*", "libs/*", "packages/*"],
6
+ "reportDir": "dist/coverage/<%= projectRoot %>",
7
+ "reporter": ["clover", "cobertura", "json", "lcov", "text"]
8
+ }
@@ -4,7 +4,6 @@ exports.cucumberJsGenerator = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const devkit_1 = require("@nx/devkit");
6
6
  const path = tslib_1.__importStar(require("path"));
7
- const fs = tslib_1.__importStar(require("fs"));
8
7
  function cucumberJsGenerator(tree, options) {
9
8
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
9
  if (!options.name)
@@ -15,6 +14,7 @@ function cucumberJsGenerator(tree, options) {
15
14
  options.testRunner = 'playwright';
16
15
  const projectRoot = `apps/${options.directory}`;
17
16
  const workspaceRootRelative = path.relative(path.join(devkit_1.workspaceRoot, projectRoot), devkit_1.workspaceRoot);
17
+ // some options are only applied to particular test runners
18
18
  const extendedTestRunnerOptions = options.testRunner === 'playwright'
19
19
  ? {
20
20
  baseUrl: 'http://localhost:4200',
@@ -23,36 +23,52 @@ function cucumberJsGenerator(tree, options) {
23
23
  disableVideoAttachments: true,
24
24
  }
25
25
  : {};
26
+ // we always cache the same outputs
27
+ const outputs = [
28
+ `{workspaceRoot}/dist/cucumber-js/apps/${options.directory}`,
29
+ `{workspaceRoot}/dist/coverage/apps/${options.directory}`,
30
+ ];
31
+ // target for the cucumber executor (either used in target e2e or e2e-cucumber, depending on the value of the instrumentTestRunner option)
32
+ const e2eCucumber = Object.assign(Object.assign({ executor: '@gnuechtel/nx-cucumber:cucumber-js' }, (!options.instrumentTestRunner ? { outputs } : {})), { options: Object.assign({ featuresDirectory: `apps/${options.directory}/features`, tags: 'not @ignore', testRunner: options.testRunner }, extendedTestRunnerOptions) });
33
+ // target for the code coverage instrumentation (only used in e2e target, when instrumentTestRunner option is set true)
34
+ const e2eInstrument = {
35
+ executor: 'nx:run-commands',
36
+ outputs,
37
+ options: {
38
+ command: `npx nyc --temp-dir="{projectRoot}/.nyc_output" --nycrc-path="{projectRoot}/cucumber-coverage.json" nx e2e-cucumber ${options.name}`,
39
+ },
40
+ };
26
41
  (0, devkit_1.addProjectConfiguration)(tree, options.name, {
27
42
  root: projectRoot,
28
43
  sourceRoot: `${projectRoot}/src`,
29
44
  projectType: 'application',
30
- targets: {
31
- e2e: {
32
- executor: '@gnuechtel/nx-cucumber:cucumber-js',
33
- outputs: [
34
- `{workspaceRoot}/dist/cucumber-js/apps/${options.directory}`,
35
- `{workspaceRoot}/dist/coverage/apps/${options.directory}`,
36
- ],
37
- options: Object.assign({ featuresDirectory: `apps/${options.directory}/features`, tags: 'not @ignore', testRunner: options.testRunner }, extendedTestRunnerOptions),
38
- },
39
- lint: {
45
+ targets: Object.assign(Object.assign({ e2e: !options.instrumentTestRunner ? e2eCucumber : e2eInstrument }, (options.instrumentTestRunner ? { 'e2e-cucumber': e2eCucumber } : {})), { lint: {
40
46
  executor: '@nx/linter:eslint',
41
47
  outputs: ['{options.outputFile}'],
42
48
  options: {
43
49
  lintFilePatterns: [`apps/${options.directory}/**/*.ts`],
44
50
  },
45
- },
46
- },
51
+ } }),
47
52
  tags: [],
48
53
  implicitDependencies: [options.project],
49
54
  });
55
+ // we create files which are used for all options ...
50
56
  (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'all'), projectRoot, Object.assign(Object.assign({}, options), { workspaceRootRelative }));
51
- const testRunnerFiles = path.join(__dirname, 'files', options.testRunner);
52
- if (fs.existsSync(testRunnerFiles)) {
53
- (0, devkit_1.generateFiles)(tree, testRunnerFiles, projectRoot, Object.assign(Object.assign({}, options), { workspaceRootRelative }));
57
+ // ... specific files for each test runner ...
58
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', options.testRunner), projectRoot, Object.assign(Object.assign({}, options), { workspaceRootRelative }));
59
+ if (options.instrumentTestRunner) {
60
+ // ... and even files for single options
61
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'coverage'), projectRoot, Object.assign(Object.assign({}, options), { workspaceRootRelative,
62
+ projectRoot }));
54
63
  }
55
64
  yield (0, devkit_1.formatFiles)(tree);
65
+ if (options.instrumentTestRunner) {
66
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
67
+ // when we instrument the test runner, the following package has to be installed additionally
68
+ '@istanbuljs/nyc-config-typescript': '1.0.2',
69
+ });
70
+ (0, devkit_1.installPackagesTask)(tree, true);
71
+ }
56
72
  });
57
73
  }
58
74
  exports.cucumberJsGenerator = cucumberJsGenerator;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/nx-cucumber/src/generators/cucumber-js/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAAsG;AACtG,mDAA6B;AAC7B,+CAAyB;AAGzB,SAAsB,mBAAmB,CAAC,IAAU,EAAE,OAAkC;;QACtF,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,MAAM,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAChD,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAa,EAAE,WAAW,CAAC,EAAE,sBAAa,CAAC,CAAC;QAClG,MAAM,yBAAyB,GAC7B,OAAO,CAAC,UAAU,KAAK,YAAY;YACjC,CAAC,CAAC;gBACE,OAAO,EAAE,uBAAuB;gBAChC,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,QAAQ;gBAC3C,iBAAiB,EAAE,IAAI;gBACvB,uBAAuB,EAAE,IAAI;aAC9B;YACH,CAAC,CAAC,EAAE,CAAC;QACT,IAAA,gCAAuB,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YAC1C,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,GAAG,WAAW,MAAM;YAChC,WAAW,EAAE,aAAa;YAC1B,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,QAAQ,EAAE,oCAAoC;oBAC9C,OAAO,EAAE;wBACP,yCAAyC,OAAO,CAAC,SAAS,EAAE;wBAC5D,sCAAsC,OAAO,CAAC,SAAS,EAAE;qBAC1D;oBACD,OAAO,kBACL,iBAAiB,EAAE,QAAQ,OAAO,CAAC,SAAS,WAAW,EACvD,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,OAAO,CAAC,UAAU,IAC3B,yBAAyB,CAC7B;iBACF;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE,mBAAmB;oBAC7B,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE;wBACP,gBAAgB,EAAE,CAAC,QAAQ,OAAO,CAAC,SAAS,UAAU,CAAC;qBACxD;iBACF;aACF;YACD,IAAI,EAAE,EAAE;YACR,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC,CAAC,CAAC;QAEH,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,kCAAO,OAAO,KAAE,qBAAqB,IAAG,CAAC;QAE9G,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YAClC,IAAA,sBAAa,EAAC,IAAI,EAAE,eAAe,EAAE,WAAW,kCAAO,OAAO,KAAE,qBAAqB,IAAG,CAAC;SAC1F;QAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AArDD,kDAqDC;AAED,kBAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/nx-cucumber/src/generators/cucumber-js/generator.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export interface CucumberJsGeneratorSchema {
3
3
  name?: string;
4
4
  directory?: string;
5
5
  testRunner?: string;
6
+ instrumentTestRunner?: boolean;
6
7
  }