@qavajs/playwright-runner-adapter 2.3.0 → 2.3.1

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.
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defineConfig = defineConfig;
4
4
  const loader_1 = require("./loader");
5
- // Constants
5
+ const DEBUG = process.env.DEBUG?.split(',').includes('cucumber-adapter') ?? false;
6
6
  const ANNOTATION_TYPES = {
7
7
  NAME: 'name',
8
8
  URI: 'uri',
@@ -30,9 +30,6 @@ const STEP_ARGUMENT_LABELS = {
30
30
  DOC_STRING: ' [MultiLine]',
31
31
  DATA_TABLE: ' [DataTable]'
32
32
  };
33
- /**
34
- * Creates a location object from step definition
35
- */
36
33
  function getLine(step) {
37
34
  return {
38
35
  location: {
@@ -42,23 +39,14 @@ function getLine(step) {
42
39
  }
43
40
  };
44
41
  }
45
- /**
46
- * Logs data to console
47
- */
48
42
  function log(data) {
49
43
  console.log(data);
50
44
  }
51
- /**
52
- * Attaches content to test report
53
- */
54
45
  function attach(body, details) {
55
46
  const fileName = details?.fileName ?? DEFAULT_VALUES.ATTACHMENT_FILENAME;
56
47
  const contentType = details?.mediaType ?? DEFAULT_VALUES.CONTENT_TYPE;
57
- return this.test.info().attach(fileName, { body, contentType });
48
+ return this.test.info().attach(fileName, { body: body, contentType });
58
49
  }
59
- /**
60
- * Generates a human-readable step name with argument type indicator
61
- */
62
50
  function stepName(pickleStep) {
63
51
  let step = pickleStep.text;
64
52
  if (pickleStep.argument) {
@@ -76,14 +64,14 @@ function createTestExecutionResult() {
76
64
  }
77
65
  function createHookResult(result) {
78
66
  return {
79
- duration: (Date.now() - result.start),
67
+ duration: Date.now() - result.start,
80
68
  message: result.error?.message,
81
69
  status: result.status.toUpperCase(),
82
70
  exception: result.error
83
71
  };
84
72
  }
85
73
  function createScenarioAnnotation(testCase) {
86
- const tag = [...new Set(testCase.tags.map((item) => item.name))];
74
+ const tag = [...new Set(testCase.tags.map(item => item.name))];
87
75
  return [
88
76
  { type: ANNOTATION_TYPES.NAME, description: testCase.name },
89
77
  { type: ANNOTATION_TYPES.URI, description: testCase.uri },
@@ -91,7 +79,7 @@ function createScenarioAnnotation(testCase) {
91
79
  ];
92
80
  }
93
81
  function createScenarioTags(testCase) {
94
- return [...new Set(testCase.tags.map((item) => item.name))];
82
+ return [...new Set(testCase.tags.map(item => item.name))];
95
83
  }
96
84
  function createCaseHookPayload(feature, testCase) {
97
85
  return {
@@ -136,20 +124,23 @@ function createCaseHookParameter(feature, testCase, result) {
136
124
  result: createHookResult(result)
137
125
  };
138
126
  }
139
- function findSingleStepDefinition(supportCodeLibrary, pickleStep) {
127
+ function findSingleStepDefinition(supportCodeLibrary, pickleStep, featureUri) {
140
128
  const matchingSteps = supportCodeLibrary.stepDefinitions
141
- .filter((stepDefinition) => stepDefinition.matchesStepName(pickleStep.text));
129
+ .filter(stepDefinition => stepDefinition.matchesStepName(pickleStep.text));
130
+ if (DEBUG) {
131
+ console.log(`[cucumber-adapter] Matching: "${pickleStep.text}" — ${matchingSteps.length} match(es)`);
132
+ }
142
133
  if (matchingSteps.length === 0) {
143
- throw new Error(`Step '${pickleStep.text}' is not defined`);
134
+ throw new Error(`Step '${pickleStep.text}' is not defined\n at ${featureUri}`);
144
135
  }
145
136
  if (matchingSteps.length > 1) {
146
- throw new Error(`Step '${pickleStep.text}' matches multiple step definitions`);
137
+ const locations = matchingSteps
138
+ .map(s => ` ${s.uri}:${s.line}`)
139
+ .join('\n');
140
+ throw new Error(`Step '${pickleStep.text}' matches multiple step definitions:\n${locations}`);
147
141
  }
148
142
  return matchingSteps[0];
149
143
  }
150
- /**
151
- * Executes before all hooks
152
- */
153
144
  function executeBeforeAllHooks(test, hooks) {
154
145
  if (hooks.length === 0)
155
146
  return;
@@ -160,9 +151,6 @@ function executeBeforeAllHooks(test, hooks) {
160
151
  }
161
152
  });
162
153
  }
163
- /**
164
- * Executes after all hooks
165
- */
166
154
  function executeAfterAllHooks(test, hooks) {
167
155
  if (hooks.length === 0)
168
156
  return;
@@ -173,9 +161,6 @@ function executeAfterAllHooks(test, hooks) {
173
161
  }
174
162
  });
175
163
  }
176
- /**
177
- * Main configuration function that sets up Cucumber adapter for Playwright
178
- */
179
164
  function defineConfig(config) {
180
165
  const { features, supportCodeLibrary } = (0, loader_1.load)(config);
181
166
  const fixture = new supportCodeLibrary.World({ config });
@@ -202,7 +187,7 @@ function defineConfig(config) {
202
187
  if (result.status !== 'passed') {
203
188
  break;
204
189
  }
205
- const step = findSingleStepDefinition(supportCodeLibrary, pickleStep);
190
+ const step = findSingleStepDefinition(supportCodeLibrary, pickleStep, feature.uri);
206
191
  const location = getLine(step);
207
192
  await test.step(stepName(pickleStep), async () => {
208
193
  await executeStepHooks(test, supportCodeLibrary.beforeTestStepHookDefinitions, world, testCase, HOOK_NAMES.BEFORE_STEP, () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"cucumberAdapter.js","sourceRoot":"","sources":["../src/cucumberAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cucumberAdapter.js","sourceRoot":"","sources":["../src/cucumberAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,24 @@
1
1
  import { APIRequestContext, Browser, BrowserContext, Page } from '@playwright/test';
2
- /**
3
- * Cucumber world for playwright adapter
4
- */
2
+ import type { CucumberAdapterConfig, SupportCodeLibrary, WorldOptions } from './types';
5
3
  export declare class TestWorld {
6
- log: (data: any) => void;
7
- attach: (data: any, details?: {
4
+ log: (data: unknown) => void;
5
+ attach: (data: unknown, details?: {
8
6
  fileName?: string;
9
7
  mediaType: string;
10
8
  }) => Promise<void>;
11
- parameters: string;
12
- config: any;
13
- supportCodeLibrary: any;
9
+ parameters: unknown;
10
+ config: CucumberAdapterConfig;
11
+ supportCodeLibrary: SupportCodeLibrary;
14
12
  test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
15
13
  expect: import("@playwright/test").Expect<{}>;
16
- constructor(options: any);
17
- executeStep(this: any, text: string, extraParam?: any): Promise<void>;
14
+ constructor(options: WorldOptions);
15
+ executeStep(this: TestWorld, text: string, extraParam?: unknown): Promise<void>;
18
16
  }
19
- /**
20
- * Cucumber Playwright world for playwright adapter
21
- */
22
17
  export declare class PlaywrightWorld extends TestWorld {
23
18
  page: Page;
24
19
  context: BrowserContext;
25
20
  browser: Browser;
26
21
  browserName: string;
27
22
  request: APIRequestContext;
28
- init: ({
29
- [fixture: string]: any;
30
- });
23
+ init: (fixtures: Record<string, unknown>) => void;
31
24
  }
@@ -2,9 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightWorld = exports.TestWorld = void 0;
4
4
  const test_1 = require("@playwright/test");
5
- /**
6
- * Cucumber world for playwright adapter
7
- */
8
5
  class TestWorld {
9
6
  log;
10
7
  attach;
@@ -14,19 +11,22 @@ class TestWorld {
14
11
  test = test_1.test;
15
12
  expect = test_1.expect;
16
13
  constructor(options) {
17
- this.log = options.log;
14
+ this.log = options.log ?? console.log;
18
15
  this.attach = options.attach;
19
16
  this.parameters = options.parameters;
20
17
  this.supportCodeLibrary = options.supportCodeLibrary;
21
18
  this.config = options.config;
22
19
  }
23
20
  async executeStep(text, extraParam) {
24
- const steps = this.supportCodeLibrary.stepDefinitions.filter((s) => s.matchesStepName(text));
21
+ const steps = this.supportCodeLibrary.stepDefinitions
22
+ .filter(s => s.matchesStepName(text));
25
23
  if (steps.length === 0)
26
24
  throw new Error(`Step "${text}" is not defined`);
27
- if (steps.length > 1)
28
- throw new Error(`Step "${text}" matches multiple step definitions`);
29
- const step = steps.pop();
25
+ if (steps.length > 1) {
26
+ const locations = steps.map(s => ` ${s.uri}:${s.line}`).join('\n');
27
+ throw new Error(`Step "${text}" matches multiple step definitions:\n${locations}`);
28
+ }
29
+ const step = steps[0];
30
30
  const { parameters } = await step.getInvocationParameters({ step: { text }, world: this });
31
31
  try {
32
32
  await step.code.apply(this, [...parameters, extraParam]);
@@ -37,20 +37,18 @@ class TestWorld {
37
37
  }
38
38
  }
39
39
  exports.TestWorld = TestWorld;
40
- /**
41
- * Cucumber Playwright world for playwright adapter
42
- */
43
40
  class PlaywrightWorld extends TestWorld {
44
41
  page;
45
42
  context;
46
43
  browser;
47
44
  browserName;
48
45
  request;
49
- init = ({ browser, context, page, request }) => {
46
+ // Cast preserves the destructured param form that Playwright reads via toString() to discover fixtures
47
+ init = (({ browser, context, page, request }) => {
50
48
  this.browser = browser;
51
49
  this.context = context;
52
50
  this.page = page;
53
51
  this.request = request;
54
- };
52
+ });
55
53
  }
56
54
  exports.PlaywrightWorld = PlaywrightWorld;
@@ -1,4 +1,2 @@
1
- /**
2
- * Main configuration function that sets up Cucumber adapter for Playwright
3
- */
4
- export declare function defineConfig(config: any): any;
1
+ import type { CucumberAdapterConfig } from './types';
2
+ export declare function defineConfig(config: CucumberAdapterConfig): void;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defineConfig = defineConfig;
4
4
  const loader_1 = require("./loader");
5
- // Constants
5
+ const DEBUG = process.env.DEBUG?.split(',').includes('cucumber-adapter') ?? false;
6
6
  const ANNOTATION_TYPES = {
7
7
  NAME: 'name',
8
8
  URI: 'uri',
@@ -30,9 +30,6 @@ const STEP_ARGUMENT_LABELS = {
30
30
  DOC_STRING: ' [MultiLine]',
31
31
  DATA_TABLE: ' [DataTable]'
32
32
  };
33
- /**
34
- * Creates a location object from step definition
35
- */
36
33
  function getLine(step) {
37
34
  return {
38
35
  location: {
@@ -42,23 +39,14 @@ function getLine(step) {
42
39
  }
43
40
  };
44
41
  }
45
- /**
46
- * Logs data to console
47
- */
48
42
  function log(data) {
49
43
  console.log(data);
50
44
  }
51
- /**
52
- * Attaches content to test report
53
- */
54
45
  function attach(body, details) {
55
46
  const fileName = details?.fileName ?? DEFAULT_VALUES.ATTACHMENT_FILENAME;
56
47
  const contentType = details?.mediaType ?? DEFAULT_VALUES.CONTENT_TYPE;
57
- return this.test.info().attach(fileName, { body, contentType });
48
+ return this.test.info().attach(fileName, { body: body, contentType });
58
49
  }
59
- /**
60
- * Generates a human-readable step name with argument type indicator
61
- */
62
50
  function stepName(pickleStep) {
63
51
  let step = pickleStep.text;
64
52
  if (pickleStep.argument) {
@@ -76,14 +64,14 @@ function createTestExecutionResult() {
76
64
  }
77
65
  function createHookResult(result) {
78
66
  return {
79
- duration: (Date.now() - result.start),
67
+ duration: Date.now() - result.start,
80
68
  message: result.error?.message,
81
69
  status: result.status.toUpperCase(),
82
70
  exception: result.error
83
71
  };
84
72
  }
85
73
  function createScenarioAnnotation(testCase) {
86
- const tag = [...new Set(testCase.tags.map((item) => item.name))];
74
+ const tag = [...new Set(testCase.tags.map(item => item.name))];
87
75
  return [
88
76
  { type: ANNOTATION_TYPES.NAME, description: testCase.name },
89
77
  { type: ANNOTATION_TYPES.URI, description: testCase.uri },
@@ -91,7 +79,7 @@ function createScenarioAnnotation(testCase) {
91
79
  ];
92
80
  }
93
81
  function createScenarioTags(testCase) {
94
- return [...new Set(testCase.tags.map((item) => item.name))];
82
+ return [...new Set(testCase.tags.map(item => item.name))];
95
83
  }
96
84
  function createCaseHookPayload(feature, testCase) {
97
85
  return {
@@ -136,20 +124,23 @@ function createCaseHookParameter(feature, testCase, result) {
136
124
  result: createHookResult(result)
137
125
  };
138
126
  }
139
- function findSingleStepDefinition(supportCodeLibrary, pickleStep) {
127
+ function findSingleStepDefinition(supportCodeLibrary, pickleStep, featureUri) {
140
128
  const matchingSteps = supportCodeLibrary.stepDefinitions
141
- .filter((stepDefinition) => stepDefinition.matchesStepName(pickleStep.text));
129
+ .filter(stepDefinition => stepDefinition.matchesStepName(pickleStep.text));
130
+ if (DEBUG) {
131
+ console.log(`[cucumber-adapter] Matching: "${pickleStep.text}" — ${matchingSteps.length} match(es)`);
132
+ }
142
133
  if (matchingSteps.length === 0) {
143
- throw new Error(`Step '${pickleStep.text}' is not defined`);
134
+ throw new Error(`Step '${pickleStep.text}' is not defined\n at ${featureUri}`);
144
135
  }
145
136
  if (matchingSteps.length > 1) {
146
- throw new Error(`Step '${pickleStep.text}' matches multiple step definitions`);
137
+ const locations = matchingSteps
138
+ .map(s => ` ${s.uri}:${s.line}`)
139
+ .join('\n');
140
+ throw new Error(`Step '${pickleStep.text}' matches multiple step definitions:\n${locations}`);
147
141
  }
148
142
  return matchingSteps[0];
149
143
  }
150
- /**
151
- * Executes before all hooks
152
- */
153
144
  function executeBeforeAllHooks(test, hooks) {
154
145
  if (hooks.length === 0)
155
146
  return;
@@ -160,9 +151,6 @@ function executeBeforeAllHooks(test, hooks) {
160
151
  }
161
152
  });
162
153
  }
163
- /**
164
- * Executes after all hooks
165
- */
166
154
  function executeAfterAllHooks(test, hooks) {
167
155
  if (hooks.length === 0)
168
156
  return;
@@ -173,9 +161,6 @@ function executeAfterAllHooks(test, hooks) {
173
161
  }
174
162
  });
175
163
  }
176
- /**
177
- * Main configuration function that sets up Cucumber adapter for Playwright
178
- */
179
164
  function defineConfig(config) {
180
165
  const { features, supportCodeLibrary } = (0, loader_1.load)(config);
181
166
  const fixture = new supportCodeLibrary.World({ config });
@@ -202,7 +187,7 @@ function defineConfig(config) {
202
187
  if (result.status !== 'passed') {
203
188
  break;
204
189
  }
205
- const step = findSingleStepDefinition(supportCodeLibrary, pickleStep);
190
+ const step = findSingleStepDefinition(supportCodeLibrary, pickleStep, feature.uri);
206
191
  const location = getLine(step);
207
192
  await test.step(stepName(pickleStep), async () => {
208
193
  await executeStepHooks(test, supportCodeLibrary.beforeTestStepHookDefinitions, world, testCase, HOOK_NAMES.BEFORE_STEP, () => ({
@@ -1,14 +1,7 @@
1
- import type { Pickle, GherkinDocument } from '@cucumber/messages';
2
- type Feature = {
3
- feature?: string;
4
- gherkinDocument: GherkinDocument;
5
- tests: readonly Pickle[];
6
- uri: string;
7
- };
1
+ import type { CucumberAdapterConfig, Feature, SupportCodeLibrary } from './types';
8
2
  export declare function loadFeatures(globPattern: string[]): Feature[];
9
- export declare function loadStepDefinitions(globPattern: string[]): import("@cucumber/cucumber/lib/support_code_library_builder/types").SupportCodeLibrary;
10
- export declare function load(config: any): {
3
+ export declare function loadStepDefinitions(globPattern: string[]): SupportCodeLibrary;
4
+ export declare function load(config: CucumberAdapterConfig): {
11
5
  features: Feature[];
12
- supportCodeLibrary: import("@cucumber/cucumber/lib/support_code_library_builder/types").SupportCodeLibrary;
6
+ supportCodeLibrary: SupportCodeLibrary;
13
7
  };
14
- export {};
@@ -0,0 +1,67 @@
1
+ import type { GherkinDocument, Pickle } from '@cucumber/messages';
2
+ import type { TestType } from '@playwright/test';
3
+ export interface CucumberAdapterConfig {
4
+ paths: string[];
5
+ require?: string[];
6
+ requireModules?: string[];
7
+ import?: string[];
8
+ [key: string]: unknown;
9
+ }
10
+ export interface WorldOptions {
11
+ log?: (data: unknown) => void;
12
+ attach?: (data: unknown, details?: {
13
+ fileName?: string;
14
+ mediaType?: string;
15
+ }) => Promise<void>;
16
+ parameters?: unknown;
17
+ supportCodeLibrary?: SupportCodeLibrary;
18
+ config?: CucumberAdapterConfig;
19
+ }
20
+ export interface HookDefinition {
21
+ uri: string;
22
+ line: number;
23
+ name?: string;
24
+ code: (this: unknown, ...args: unknown[]) => Promise<void> | void;
25
+ appliesToTestCase(testCase: Pickle): boolean;
26
+ }
27
+ export interface StepDefinitionMatch {
28
+ uri: string;
29
+ line: number;
30
+ code: (this: unknown, ...args: unknown[]) => Promise<void> | void;
31
+ matchesStepName(text: string): boolean;
32
+ getInvocationParameters(options: {
33
+ step: {
34
+ text: string;
35
+ argument?: unknown;
36
+ };
37
+ world: unknown;
38
+ }): Promise<{
39
+ parameters: unknown[];
40
+ }>;
41
+ }
42
+ export interface HookResult {
43
+ duration: number;
44
+ message: string | undefined;
45
+ status: string;
46
+ exception: Error | undefined;
47
+ }
48
+ export interface WorldBase {
49
+ test: TestType<Record<string, unknown>, Record<string, unknown>>;
50
+ init: (fixtures: Record<string, unknown>) => void;
51
+ }
52
+ export interface SupportCodeLibrary {
53
+ World: new (options: WorldOptions) => WorldBase;
54
+ stepDefinitions: StepDefinitionMatch[];
55
+ beforeTestRunHookDefinitions: HookDefinition[];
56
+ afterTestRunHookDefinitions: HookDefinition[];
57
+ beforeTestCaseHookDefinitions: HookDefinition[];
58
+ afterTestCaseHookDefinitions: HookDefinition[];
59
+ beforeTestStepHookDefinitions: HookDefinition[];
60
+ afterTestStepHookDefinitions: HookDefinition[];
61
+ }
62
+ export interface Feature {
63
+ feature?: string;
64
+ gherkinDocument: GherkinDocument;
65
+ tests: readonly Pickle[];
66
+ uri: string;
67
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,14 +1,7 @@
1
- import type { Pickle, GherkinDocument } from '@cucumber/messages';
2
- type Feature = {
3
- feature?: string;
4
- gherkinDocument: GherkinDocument;
5
- tests: readonly Pickle[];
6
- uri: string;
7
- };
1
+ import type { CucumberAdapterConfig, Feature, SupportCodeLibrary } from './types';
8
2
  export declare function loadFeatures(globPattern: string[]): Feature[];
9
- export declare function loadStepDefinitions(globPattern: string[]): import("@cucumber/cucumber/lib/support_code_library_builder/types").SupportCodeLibrary;
10
- export declare function load(config: any): {
3
+ export declare function loadStepDefinitions(globPattern: string[]): SupportCodeLibrary;
4
+ export declare function load(config: CucumberAdapterConfig): {
11
5
  features: Feature[];
12
- supportCodeLibrary: import("@cucumber/cucumber/lib/support_code_library_builder/types").SupportCodeLibrary;
6
+ supportCodeLibrary: SupportCodeLibrary;
13
7
  };
14
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { GherkinDocument, Pickle } from '@cucumber/messages';
2
+ import type { TestType } from '@playwright/test';
3
+ export interface CucumberAdapterConfig {
4
+ paths: string[];
5
+ require?: string[];
6
+ requireModules?: string[];
7
+ import?: string[];
8
+ [key: string]: unknown;
9
+ }
10
+ export interface WorldOptions {
11
+ log?: (data: unknown) => void;
12
+ attach?: (data: unknown, details?: {
13
+ fileName?: string;
14
+ mediaType?: string;
15
+ }) => Promise<void>;
16
+ parameters?: unknown;
17
+ supportCodeLibrary?: SupportCodeLibrary;
18
+ config?: CucumberAdapterConfig;
19
+ }
20
+ export interface HookDefinition {
21
+ uri: string;
22
+ line: number;
23
+ name?: string;
24
+ code: (this: unknown, ...args: unknown[]) => Promise<void> | void;
25
+ appliesToTestCase(testCase: Pickle): boolean;
26
+ }
27
+ export interface StepDefinitionMatch {
28
+ uri: string;
29
+ line: number;
30
+ code: (this: unknown, ...args: unknown[]) => Promise<void> | void;
31
+ matchesStepName(text: string): boolean;
32
+ getInvocationParameters(options: {
33
+ step: {
34
+ text: string;
35
+ argument?: unknown;
36
+ };
37
+ world: unknown;
38
+ }): Promise<{
39
+ parameters: unknown[];
40
+ }>;
41
+ }
42
+ export interface HookResult {
43
+ duration: number;
44
+ message: string | undefined;
45
+ status: string;
46
+ exception: Error | undefined;
47
+ }
48
+ export interface WorldBase {
49
+ test: TestType<Record<string, unknown>, Record<string, unknown>>;
50
+ init: (fixtures: Record<string, unknown>) => void;
51
+ }
52
+ export interface SupportCodeLibrary {
53
+ World: new (options: WorldOptions) => WorldBase;
54
+ stepDefinitions: StepDefinitionMatch[];
55
+ beforeTestRunHookDefinitions: HookDefinition[];
56
+ afterTestRunHookDefinitions: HookDefinition[];
57
+ beforeTestCaseHookDefinitions: HookDefinition[];
58
+ afterTestCaseHookDefinitions: HookDefinition[];
59
+ beforeTestStepHookDefinitions: HookDefinition[];
60
+ afterTestStepHookDefinitions: HookDefinition[];
61
+ }
62
+ export interface Feature {
63
+ feature?: string;
64
+ gherkinDocument: GherkinDocument;
65
+ tests: readonly Pickle[];
66
+ uri: string;
67
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}