@autometa/runner 0.2.50 → 0.2.51
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 +15 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @autometa/runner
|
|
2
2
|
|
|
3
|
+
## 0.2.51
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8ec0cdc: fix: allow whitelist for tracked types, don't auto-track World
|
|
8
|
+
- Updated dependencies [8ec0cdc]
|
|
9
|
+
- @autometa/fixture-proxies@0.1.1
|
|
10
|
+
- @autometa/app@0.2.2
|
|
11
|
+
- @autometa/config@0.1.16
|
|
12
|
+
- @autometa/coordinator@0.2.6
|
|
13
|
+
- @autometa/http@1.0.12
|
|
14
|
+
- @autometa/jest-executor@0.3.3
|
|
15
|
+
- @autometa/scopes@0.4.5
|
|
16
|
+
- @autometa/test-builder@0.1.34
|
|
17
|
+
|
|
3
18
|
## 0.2.50
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/esm/index.js
CHANGED
|
@@ -38,6 +38,8 @@ __export(src_exports, {
|
|
|
38
38
|
Dates: () => Dates,
|
|
39
39
|
Feature: () => Feature2,
|
|
40
40
|
Fixture: () => Fixture,
|
|
41
|
+
GetAccessedCount: () => GetAccessedCount,
|
|
42
|
+
GetAssignedValues: () => GetAssignedValues,
|
|
41
43
|
Given: () => Given2,
|
|
42
44
|
HTable: () => HTable,
|
|
43
45
|
MTable: () => MTable,
|
|
@@ -49,6 +51,7 @@ __export(src_exports, {
|
|
|
49
51
|
Teardown: () => Teardown2,
|
|
50
52
|
Then: () => Then2,
|
|
51
53
|
Time: () => Time,
|
|
54
|
+
TrackAccess: () => TrackAccess,
|
|
52
55
|
Types: () => Types,
|
|
53
56
|
VTable: () => VTable,
|
|
54
57
|
When: () => When2,
|
|
@@ -323,6 +326,7 @@ import { Bind } from "@autometa/bind-decorator";
|
|
|
323
326
|
import { Types } from "@autometa/scopes";
|
|
324
327
|
export * from "@autometa/http";
|
|
325
328
|
export * from "@autometa/asserters";
|
|
329
|
+
import { GetAccessedCount, GetAssignedValues, TrackAccess } from "@autometa/fixture-proxies";
|
|
326
330
|
function Feature2(...args) {
|
|
327
331
|
return Feature(...args);
|
|
328
332
|
}
|
|
@@ -355,6 +359,8 @@ export {
|
|
|
355
359
|
Dates,
|
|
356
360
|
Feature2 as Feature,
|
|
357
361
|
Fixture,
|
|
362
|
+
GetAccessedCount,
|
|
363
|
+
GetAssignedValues,
|
|
358
364
|
Given2 as Given,
|
|
359
365
|
HTable,
|
|
360
366
|
MTable,
|
|
@@ -366,6 +372,7 @@ export {
|
|
|
366
372
|
Teardown2 as Teardown,
|
|
367
373
|
Then2 as Then,
|
|
368
374
|
Time,
|
|
375
|
+
TrackAccess,
|
|
369
376
|
Types,
|
|
370
377
|
VTable,
|
|
371
378
|
When2 as When,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/config.ts","../../src/parameters.ts","../../src/scopes.ts","../../src/events.ts","../../src/event-logger.ts","../../src/executor.ts","../../src/app.ts"],"sourcesContent":["import type {\n FeatureAction,\n FeatureScope,\n ScenarioAction,\n ScenarioScope,\n SizedTimeout,\n TestTimeout\n} from \"@autometa/scopes\";\n\nexport { defineConfig } from \"./config\";\nexport { defineParameterType } from \"./parameters\";\nimport {\n Feature as FeatureDefinition,\n Scenario as ScenarioDefinition,\n ScenarioOutline as ScenarioOutlineDefinition,\n Rule as RuleDefinition,\n Given as GivenDefinition,\n When as WhenDefinition,\n Then as ThenDefinition,\n Before as BeforeDefinition,\n After as AfterDefinition,\n Teardown as TeardownDefinition,\n Setup as SetupDefinition\n} from \"./scopes\";\nimport { RuleAction } from \"@autometa/scopes\";\nimport { RuleScope } from \"@autometa/scopes\";\nexport { Pass } from \"./scopes\";\nexport * from \"@autometa/phrases\";\nexport { App, World, AutometaApp, AutometaWorld } from \"@autometa/app\";\nexport { AppType, Fixture } from \"./app\";\nexport { Dates, Time } from \"@autometa/datetime\";\nexport { AutomationError, raise } from \"@autometa/errors\";\nexport { DataTable, HTable, VTable, MTable } from \"@autometa/gherkin\";\nexport { Bind } from \"@autometa/bind-decorator\";\nexport { Types } from \"@autometa/scopes\";\nexport * from \"./events\";\nexport * from \"@autometa/http\";\nexport * from \"@autometa/asserters\";\n\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n *\n * ``ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * Feature('../features/my-feature.feature')\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber stle.\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n */\nexport function Feature(filepath: string): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n * // 10 second timeout\n * Feature('../features/my-feature.feature', 10_000)\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber style.\n *\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n * @param timeout The timeout in milliseconds to apply to all tests within the feature.\n */\nexport function Feature(filepath: string, timeout: number): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout as a `TestTimeout` which is a tuple of `[durationNumber, 'ms' | 's' | 'm' | 'h']`\n * which will be applied to all tests within the feature.\n *\n * i.e. `[10, 's']` is a 10 second timeout. `[1, 'm']` is a 1 minute timeout.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('../features/my-feature.feature', [10, 's'])\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * };\n *\n * ```\n *\n * @param filepath\n * @param timeout\n */\nexport function Feature(filepath: string, timeout: TestTimeout): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * })\n * ```ts\n *\n * If defined in the Gherkin, it will also use any Globally defined Step Definitions which match,\n * if none is defined locally. If a Step Definition is defined both globally and locally,\n * the most local definition will be used. This applies to sub-scopes like Scenarios and Rules\n * also.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n *\n * Scenario('My Scenario', () => {\n * Given('I have a step', () => {})\n * })\n *\n * Rule('My Rule', () => {\n * Given('I have a step', () => {})\n * })\n *\n * @param testDefinition\n * @param filepath\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string\n): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * }, 10_000)\n * ```\n * @param testDefinition the Feature definition callback\n * @param filepath\n * @param timeout\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string,\n timeout: number\n): FeatureScope;\nexport function Feature(\n ...args: (FeatureAction | string | TestTimeout)[]\n): FeatureScope {\n return FeatureDefinition(...args);\n}\n\nexport function Scenario(title: string, action: ScenarioAction): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function Scenario(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioDefinition(...args);\n}\n\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function ScenarioOutline(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioOutlineDefinition(...args);\n}\n\nexport function Rule(title: string, action: RuleAction): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: number\n): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: SizedTimeout\n): RuleScope;\nexport function Rule(\n ...args: (string | RuleAction | SizedTimeout | number)[]\n): RuleScope {\n return RuleDefinition(...args);\n}\n/**\n * Defines a `Given` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * the context of a scenario, but cannot be accessed from the same step in a different\n * scenario.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * Given('I have a step', (app) => {\n * app.world.someData = 'some value'\n * })\n * // using destructuring\n * Given('I have a step', ({ world }) => {\n * world.someData = 'some value'\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * // matches 'Given I have a step with a 'blue' value'\n * Given('I have a step with a {string} value', (value, { world }) => {\n * world.someData = value\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Given = GivenDefinition;\n/**\n * Defines a `When` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * When('I do something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * When('I do something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * // matches 'When I do something with a 'blue' value'\n * When('I do something with a {string} value', async (value, { webdriver }) => {\n * await webdriver.click(`#some-button-${value}`)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const When = WhenDefinition;\n\n/**\n * Defines a `Then` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * Then('I expect something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Then('I expect something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * // matches 'Then I expect something with a 'blue' value'\n * Then('I expect something with a {string} value', async (value, { world }) => {\n * expect(world.someData).toBe(value)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Then = ThenDefinition;\n\n/**\n * Defines a `Before` hook. Executes before each scenario.\n * \n * ```ts\n * import { Before } from '@autometa/runner'\n * \n * Before(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Before(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Before = BeforeDefinition;\n\n/**\n * Defines a `After` hook. Executes after each scenario.\n * \n * ```ts\n * import { After } from '@autometa/runner'\n * \n * After(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * After(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const After = AfterDefinition;\n\n/**\n * Defines a `Setup` hook. Executes before all scenarios.\n * Setups are scoped, meaning a Setup defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleton fixture.\n * \n * ```ts\n * import { Setup } from '@autometa/runner'\n * \n * Setup(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Setup(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Teardown = TeardownDefinition;\n\n/**\n * Defines a `Teardown` hook. Executes after all scenarios have completed.\n * Teardowns are scoped, meaning a Teardown defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleston fixture.\n * ```ts\n * import { Teardown } from '@autometa/runner'\n * \n * Teardown(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Teardown(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Setup = SetupDefinition;\n\n\n","import {\n Config,\n TestExecutorConfig,\n defineConfig as dc\n} from \"@autometa/config\";\n\nexport const CONFIG = new Config(new Map<string, TestExecutorConfig>());\nexport const defineConfig = dc.bind(null, CONFIG);\n","import { ParameterTypeRegistry } from \"@cucumber/cucumber-expressions\";\nimport {\n BooleanParam,\n DateParam,\n NumberParam,\n PrimitiveParam,\n OrdinalParam,\n TextParam,\n defineParameterType as dpt\n} from \"@autometa/cucumber-expressions\";\n\nexport const PARAM_REGISTRY = new ParameterTypeRegistry();\n\n/**\n * Defines a parameter type for use in step definitions.\n * \n * ```ts\n * import { Color } from '../support/color';\n * \n * defineParameterType({\n * name: \"color\",\n * regexpPattern: /red|blue|yellow/,\n * transform: (value: string) => Color(value)\n * })\n * \n * // using regex arrays\n * defineParameterType({\n * name: \"color\",\n * regexpPattern: [/red/, /blue/, /yellow/],\n * transform: (value: string) => Color(value)\n * })\n * ```\n */\nexport const defineParameterType = dpt.bind(null, PARAM_REGISTRY);\n\ndefineParameterType(\n NumberParam,\n BooleanParam,\n PrimitiveParam,\n TextParam,\n DateParam,\n OrdinalParam\n);\n","import { PARAM_REGISTRY } from \"./parameters\";\nimport { GetCucumberFunctions, Pass } from \"@autometa/scopes\";\nimport { Coordinator } from \"@autometa/coordinator\";\nimport { CONFIG } from \"./config\";\nimport { makeTestEmitter } from \"./events\";\nimport { executor } from \"./executor\";\nimport { OPTS } from \"./app\";\nconst {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Global\n} = GetCucumberFunctions(PARAM_REGISTRY);\nconst coordinator = new Coordinator(Global, CONFIG, OPTS);\nGlobal.onFeatureExecuted = (feature, caller) => {\n const groupLogger = CONFIG.current.test?.groupLogging ?? false;\n const events = makeTestEmitter({ groupLogger });\n coordinator.run(feature, caller, events, executor);\n};\n\nexport {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Pass\n};\n","import { TestEventEmitter } from \"@autometa/events\";\nimport { CONFIG } from \"./config\";\nexport * from \"@autometa/events\";\nimport { GroupLogEvents } from \"./event-logger\";\nimport p from \"path\";\nexport function makeTestEmitter(opts: { groupLogger: boolean }) {\n const events = CONFIG.current.events;\n const emitter = new TestEventEmitter();\n if (opts.groupLogger) {\n emitter.load(new GroupLogEvents());\n }\n if (!events) {\n return emitter;\n }\n\n for (const event of events) {\n const isLocal = isRelativePath(event) || isAbsolutePath(event);\n if (isLocal) {\n const uriRoot = process.cwd();\n const uri = p.join(uriRoot, event);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(uri);\n if('default' in listener && typeof listener.default === \"function\") {\n emitter.load(new listener.default());\n return emitter;\n }\n if('default' in listener && typeof listener.default === \"object\") {\n emitter.load(listener.default);\n return emitter;\n }\n if(typeof listener === \"function\") {\n emitter.load(new listener());\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(event);\n if('default' in listener) {\n emitter.load(listener.default);\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n\n return emitter;\n}\n\nfunction isRelativePath(path: string) {\n return path.startsWith(\".\");\n}\n\nfunction isAbsolutePath(path: string) {\n return p.isAbsolute(path);\n}\n","import {\n EndAfterOpts,\n EndBeforeOpts,\n EndFeatureOpts,\n EndRuleOpts,\n EndScenarioOpts,\n EndScenarioOutlineOpts,\n EndSetupOpts,\n EndStepOpts,\n EndTeardownOpts,\n EventSubscriber,\n StartAfterOpts,\n StartBeforeOpts,\n StartFeatureOpts,\n StartRuleOpts,\n StartScenarioOpts,\n StartScenarioOutlineOpts,\n StartSetupOpts,\n StartStepOpts,\n StartTeardownOpts\n} from \"@autometa/events\";\nimport colors from \"colors-cli\";\nexport class GroupLogEvents implements EventSubscriber {\n onFeatureStart({ title }: StartFeatureOpts) {\n console.group(title);\n console.group();\n }\n onFeatureEnd({ title, status }: EndFeatureOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioStart({ title }: StartScenarioOpts): void {\n console.group(title);\n console.group();\n }\n onScenarioEnd({ title, status }: EndScenarioOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioOutlineStart(opts: StartScenarioOutlineOpts): void {\n console.group(opts.title);\n console.group();\n }\n onScenarioOutlineEnd({ title, status }: EndScenarioOutlineOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onRuleStart({ title }: StartRuleOpts): void {\n console.group(title);\n console.group();\n }\n onRuleEnd({ title, status }: EndRuleOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onStepStart({ title }: StartStepOpts) {\n console.group(title);\n console.group();\n }\n onStepEnd({ title, status }: EndStepOpts) {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onBeforeStart({ title, status }: StartBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onBeforeEnd({ title, status }: EndBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onAfterStart({ title, status }: StartAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onAfterEnd({ title, status }: EndAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onTeardownStart({ title, status }: StartTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onTeardownEnd({ title, status }: EndTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onSetupStart({title, status}: StartSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.group(title);\n console.group();\n }\n onSetupEnd({ title, status }: EndSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n}\nfunction colorStatus(\n status: \"FAILED\" | \"PASSED\" | \"SKIPPED\" | \"BROKEN\" | undefined,\n text: string\n) {\n switch (status) {\n case \"FAILED\":\n return `${colors.red(\"x\")} ${text}`;\n case \"PASSED\":\n return `${colors.green(\"✔️\")} ${text}`;\n case \"SKIPPED\":\n return `${colors.yellow(\"⊘\")} ${text}`;\n default:\n return text;\n }\n}\n","import { execute } from \"@autometa/jest-executor\";\n\nexport const executor = execute;\n","import \"@autometa/types\";\nimport { AppType as at } from \"@autometa/app\";\nimport { CoordinatorOpts } from \"@autometa/coordinator\";\nexport {\n Fixture,\n LIFE_CYCLE,\n Lifecycle,\n AutometaApp,\n AutometaWorld\n} from \"@autometa/app\";\nexport const OPTS = {} as Record<string, CoordinatorOpts>;\nexport const AppType = at.bind(null, OPTS);\n"],"mappings":"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","names":["After","AutometaApp","AutometaWorld","Before","Feature","Given","Rule","Scenario","ScenarioOutline","Setup","Teardown","Then","When","listener","AutometaApp","AutometaWorld","Feature","Scenario","ScenarioOutline","Rule","Given","When","Then","Before","After","Teardown","Setup"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/config.ts","../../src/parameters.ts","../../src/scopes.ts","../../src/events.ts","../../src/event-logger.ts","../../src/executor.ts","../../src/app.ts"],"sourcesContent":["import type {\n FeatureAction,\n FeatureScope,\n ScenarioAction,\n ScenarioScope,\n SizedTimeout,\n TestTimeout\n} from \"@autometa/scopes\";\n\nexport { defineConfig } from \"./config\";\nexport { defineParameterType } from \"./parameters\";\nimport {\n Feature as FeatureDefinition,\n Scenario as ScenarioDefinition,\n ScenarioOutline as ScenarioOutlineDefinition,\n Rule as RuleDefinition,\n Given as GivenDefinition,\n When as WhenDefinition,\n Then as ThenDefinition,\n Before as BeforeDefinition,\n After as AfterDefinition,\n Teardown as TeardownDefinition,\n Setup as SetupDefinition\n} from \"./scopes\";\nimport { RuleAction } from \"@autometa/scopes\";\nimport { RuleScope } from \"@autometa/scopes\";\nexport { Pass } from \"./scopes\";\nexport * from \"@autometa/phrases\";\nexport { App, World, AutometaApp, AutometaWorld } from \"@autometa/app\";\nexport { AppType, Fixture } from \"./app\";\nexport { Dates, Time } from \"@autometa/datetime\";\nexport { AutomationError, raise } from \"@autometa/errors\";\nexport { DataTable, HTable, VTable, MTable } from \"@autometa/gherkin\";\nexport { Bind } from \"@autometa/bind-decorator\";\nexport { Types } from \"@autometa/scopes\";\nexport * from \"./events\";\nexport * from \"@autometa/http\";\nexport * from \"@autometa/asserters\";\nexport { GetAccessedCount, GetAssignedValues, TrackAccess } from \"@autometa/fixture-proxies\";\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n *\n * ``ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * Feature('../features/my-feature.feature')\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber stle.\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n */\nexport function Feature(filepath: string): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n * // 10 second timeout\n * Feature('../features/my-feature.feature', 10_000)\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber style.\n *\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n * @param timeout The timeout in milliseconds to apply to all tests within the feature.\n */\nexport function Feature(filepath: string, timeout: number): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout as a `TestTimeout` which is a tuple of `[durationNumber, 'ms' | 's' | 'm' | 'h']`\n * which will be applied to all tests within the feature.\n *\n * i.e. `[10, 's']` is a 10 second timeout. `[1, 'm']` is a 1 minute timeout.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('../features/my-feature.feature', [10, 's'])\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * };\n *\n * ```\n *\n * @param filepath\n * @param timeout\n */\nexport function Feature(filepath: string, timeout: TestTimeout): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * })\n * ```ts\n *\n * If defined in the Gherkin, it will also use any Globally defined Step Definitions which match,\n * if none is defined locally. If a Step Definition is defined both globally and locally,\n * the most local definition will be used. This applies to sub-scopes like Scenarios and Rules\n * also.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n *\n * Scenario('My Scenario', () => {\n * Given('I have a step', () => {})\n * })\n *\n * Rule('My Rule', () => {\n * Given('I have a step', () => {})\n * })\n *\n * @param testDefinition\n * @param filepath\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string\n): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * }, 10_000)\n * ```\n * @param testDefinition the Feature definition callback\n * @param filepath\n * @param timeout\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string,\n timeout: number\n): FeatureScope;\nexport function Feature(\n ...args: (FeatureAction | string | TestTimeout)[]\n): FeatureScope {\n return FeatureDefinition(...args);\n}\n\nexport function Scenario(title: string, action: ScenarioAction): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function Scenario(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioDefinition(...args);\n}\n\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function ScenarioOutline(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioOutlineDefinition(...args);\n}\n\nexport function Rule(title: string, action: RuleAction): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: number\n): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: SizedTimeout\n): RuleScope;\nexport function Rule(\n ...args: (string | RuleAction | SizedTimeout | number)[]\n): RuleScope {\n return RuleDefinition(...args);\n}\n/**\n * Defines a `Given` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * the context of a scenario, but cannot be accessed from the same step in a different\n * scenario.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * Given('I have a step', (app) => {\n * app.world.someData = 'some value'\n * })\n * // using destructuring\n * Given('I have a step', ({ world }) => {\n * world.someData = 'some value'\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * // matches 'Given I have a step with a 'blue' value'\n * Given('I have a step with a {string} value', (value, { world }) => {\n * world.someData = value\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Given = GivenDefinition;\n/**\n * Defines a `When` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * When('I do something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * When('I do something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * // matches 'When I do something with a 'blue' value'\n * When('I do something with a {string} value', async (value, { webdriver }) => {\n * await webdriver.click(`#some-button-${value}`)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const When = WhenDefinition;\n\n/**\n * Defines a `Then` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * Then('I expect something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Then('I expect something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * // matches 'Then I expect something with a 'blue' value'\n * Then('I expect something with a {string} value', async (value, { world }) => {\n * expect(world.someData).toBe(value)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Then = ThenDefinition;\n\n/**\n * Defines a `Before` hook. Executes before each scenario.\n * \n * ```ts\n * import { Before } from '@autometa/runner'\n * \n * Before(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Before(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Before = BeforeDefinition;\n\n/**\n * Defines a `After` hook. Executes after each scenario.\n * \n * ```ts\n * import { After } from '@autometa/runner'\n * \n * After(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * After(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const After = AfterDefinition;\n\n/**\n * Defines a `Setup` hook. Executes before all scenarios.\n * Setups are scoped, meaning a Setup defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleton fixture.\n * \n * ```ts\n * import { Setup } from '@autometa/runner'\n * \n * Setup(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Setup(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Teardown = TeardownDefinition;\n\n/**\n * Defines a `Teardown` hook. Executes after all scenarios have completed.\n * Teardowns are scoped, meaning a Teardown defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleston fixture.\n * ```ts\n * import { Teardown } from '@autometa/runner'\n * \n * Teardown(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Teardown(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Setup = SetupDefinition;\n\n\n","import {\n Config,\n TestExecutorConfig,\n defineConfig as dc\n} from \"@autometa/config\";\n\nexport const CONFIG = new Config(new Map<string, TestExecutorConfig>());\nexport const defineConfig = dc.bind(null, CONFIG);\n","import { ParameterTypeRegistry } from \"@cucumber/cucumber-expressions\";\nimport {\n BooleanParam,\n DateParam,\n NumberParam,\n PrimitiveParam,\n OrdinalParam,\n TextParam,\n defineParameterType as dpt\n} from \"@autometa/cucumber-expressions\";\n\nexport const PARAM_REGISTRY = new ParameterTypeRegistry();\n\n/**\n * Defines a parameter type for use in step definitions.\n * \n * ```ts\n * import { Color } from '../support/color';\n * \n * defineParameterType({\n * name: \"color\",\n * regexpPattern: /red|blue|yellow/,\n * transform: (value: string) => Color(value)\n * })\n * \n * // using regex arrays\n * defineParameterType({\n * name: \"color\",\n * regexpPattern: [/red/, /blue/, /yellow/],\n * transform: (value: string) => Color(value)\n * })\n * ```\n */\nexport const defineParameterType = dpt.bind(null, PARAM_REGISTRY);\n\ndefineParameterType(\n NumberParam,\n BooleanParam,\n PrimitiveParam,\n TextParam,\n DateParam,\n OrdinalParam\n);\n","import { PARAM_REGISTRY } from \"./parameters\";\nimport { GetCucumberFunctions, Pass } from \"@autometa/scopes\";\nimport { Coordinator } from \"@autometa/coordinator\";\nimport { CONFIG } from \"./config\";\nimport { makeTestEmitter } from \"./events\";\nimport { executor } from \"./executor\";\nimport { OPTS } from \"./app\";\nconst {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Global\n} = GetCucumberFunctions(PARAM_REGISTRY);\nconst coordinator = new Coordinator(Global, CONFIG, OPTS);\nGlobal.onFeatureExecuted = (feature, caller) => {\n const groupLogger = CONFIG.current.test?.groupLogging ?? false;\n const events = makeTestEmitter({ groupLogger });\n coordinator.run(feature, caller, events, executor);\n};\n\nexport {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Pass\n};\n","import { TestEventEmitter } from \"@autometa/events\";\nimport { CONFIG } from \"./config\";\nexport * from \"@autometa/events\";\nimport { GroupLogEvents } from \"./event-logger\";\nimport p from \"path\";\nexport function makeTestEmitter(opts: { groupLogger: boolean }) {\n const events = CONFIG.current.events;\n const emitter = new TestEventEmitter();\n if (opts.groupLogger) {\n emitter.load(new GroupLogEvents());\n }\n if (!events) {\n return emitter;\n }\n\n for (const event of events) {\n const isLocal = isRelativePath(event) || isAbsolutePath(event);\n if (isLocal) {\n const uriRoot = process.cwd();\n const uri = p.join(uriRoot, event);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(uri);\n if('default' in listener && typeof listener.default === \"function\") {\n emitter.load(new listener.default());\n return emitter;\n }\n if('default' in listener && typeof listener.default === \"object\") {\n emitter.load(listener.default);\n return emitter;\n }\n if(typeof listener === \"function\") {\n emitter.load(new listener());\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(event);\n if('default' in listener) {\n emitter.load(listener.default);\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n\n return emitter;\n}\n\nfunction isRelativePath(path: string) {\n return path.startsWith(\".\");\n}\n\nfunction isAbsolutePath(path: string) {\n return p.isAbsolute(path);\n}\n","import {\n EndAfterOpts,\n EndBeforeOpts,\n EndFeatureOpts,\n EndRuleOpts,\n EndScenarioOpts,\n EndScenarioOutlineOpts,\n EndSetupOpts,\n EndStepOpts,\n EndTeardownOpts,\n EventSubscriber,\n StartAfterOpts,\n StartBeforeOpts,\n StartFeatureOpts,\n StartRuleOpts,\n StartScenarioOpts,\n StartScenarioOutlineOpts,\n StartSetupOpts,\n StartStepOpts,\n StartTeardownOpts\n} from \"@autometa/events\";\nimport colors from \"colors-cli\";\nexport class GroupLogEvents implements EventSubscriber {\n onFeatureStart({ title }: StartFeatureOpts) {\n console.group(title);\n console.group();\n }\n onFeatureEnd({ title, status }: EndFeatureOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioStart({ title }: StartScenarioOpts): void {\n console.group(title);\n console.group();\n }\n onScenarioEnd({ title, status }: EndScenarioOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioOutlineStart(opts: StartScenarioOutlineOpts): void {\n console.group(opts.title);\n console.group();\n }\n onScenarioOutlineEnd({ title, status }: EndScenarioOutlineOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onRuleStart({ title }: StartRuleOpts): void {\n console.group(title);\n console.group();\n }\n onRuleEnd({ title, status }: EndRuleOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onStepStart({ title }: StartStepOpts) {\n console.group(title);\n console.group();\n }\n onStepEnd({ title, status }: EndStepOpts) {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onBeforeStart({ title, status }: StartBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onBeforeEnd({ title, status }: EndBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onAfterStart({ title, status }: StartAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onAfterEnd({ title, status }: EndAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onTeardownStart({ title, status }: StartTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onTeardownEnd({ title, status }: EndTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onSetupStart({title, status}: StartSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.group(title);\n console.group();\n }\n onSetupEnd({ title, status }: EndSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n}\nfunction colorStatus(\n status: \"FAILED\" | \"PASSED\" | \"SKIPPED\" | \"BROKEN\" | undefined,\n text: string\n) {\n switch (status) {\n case \"FAILED\":\n return `${colors.red(\"x\")} ${text}`;\n case \"PASSED\":\n return `${colors.green(\"✔️\")} ${text}`;\n case \"SKIPPED\":\n return `${colors.yellow(\"⊘\")} ${text}`;\n default:\n return text;\n }\n}\n","import { execute } from \"@autometa/jest-executor\";\n\nexport const executor = execute;\n","import \"@autometa/types\";\nimport { AppType as at } from \"@autometa/app\";\nimport { CoordinatorOpts } from \"@autometa/coordinator\";\nexport {\n Fixture,\n LIFE_CYCLE,\n Lifecycle,\n AutometaApp,\n AutometaWorld\n} from \"@autometa/app\";\nexport const OPTS = {} as Record<string, CoordinatorOpts>;\nexport const AppType = at.bind(null, OPTS);\n"],"mappings":"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","names":["After","AutometaApp","AutometaWorld","Before","Feature","Given","Rule","Scenario","ScenarioOutline","Setup","Teardown","Then","When","listener","AutometaApp","AutometaWorld","Feature","Scenario","ScenarioOutline","Rule","Given","When","Then","Before","After","Teardown","Setup"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -16,6 +16,7 @@ import { TestEventEmitter } from '@autometa/events';
|
|
|
16
16
|
export * from '@autometa/events';
|
|
17
17
|
export * from '@autometa/http';
|
|
18
18
|
export * from '@autometa/asserters';
|
|
19
|
+
export { GetAccessedCount, GetAssignedValues, TrackAccess } from '@autometa/fixture-proxies';
|
|
19
20
|
|
|
20
21
|
declare const defineConfig: (...args: {
|
|
21
22
|
runner: "jest" | "vitest";
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { TestEventEmitter } from '@autometa/events';
|
|
|
16
16
|
export * from '@autometa/events';
|
|
17
17
|
export * from '@autometa/http';
|
|
18
18
|
export * from '@autometa/asserters';
|
|
19
|
+
export { GetAccessedCount, GetAssignedValues, TrackAccess } from '@autometa/fixture-proxies';
|
|
19
20
|
|
|
20
21
|
declare const defineConfig: (...args: {
|
|
21
22
|
runner: "jest" | "vitest";
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,8 @@ __export(src_exports, {
|
|
|
43
43
|
Dates: () => import_datetime.Dates,
|
|
44
44
|
Feature: () => Feature2,
|
|
45
45
|
Fixture: () => import_app2.Fixture,
|
|
46
|
+
GetAccessedCount: () => import_fixture_proxies.GetAccessedCount,
|
|
47
|
+
GetAssignedValues: () => import_fixture_proxies.GetAssignedValues,
|
|
46
48
|
Given: () => Given2,
|
|
47
49
|
HTable: () => import_gherkin.HTable,
|
|
48
50
|
MTable: () => import_gherkin.MTable,
|
|
@@ -54,6 +56,7 @@ __export(src_exports, {
|
|
|
54
56
|
Teardown: () => Teardown2,
|
|
55
57
|
Then: () => Then2,
|
|
56
58
|
Time: () => import_datetime.Time,
|
|
59
|
+
TrackAccess: () => import_fixture_proxies.TrackAccess,
|
|
57
60
|
Types: () => import_scopes4.Types,
|
|
58
61
|
VTable: () => import_gherkin.VTable,
|
|
59
62
|
When: () => When2,
|
|
@@ -311,6 +314,7 @@ var import_scopes4 = require("@autometa/scopes");
|
|
|
311
314
|
__reExport(src_exports, events_exports, module.exports);
|
|
312
315
|
__reExport(src_exports, require("@autometa/http"), module.exports);
|
|
313
316
|
__reExport(src_exports, require("@autometa/asserters"), module.exports);
|
|
317
|
+
var import_fixture_proxies = require("@autometa/fixture-proxies");
|
|
314
318
|
function Feature2(...args) {
|
|
315
319
|
return Feature(...args);
|
|
316
320
|
}
|
|
@@ -344,6 +348,8 @@ var Setup2 = Setup;
|
|
|
344
348
|
Dates,
|
|
345
349
|
Feature,
|
|
346
350
|
Fixture,
|
|
351
|
+
GetAccessedCount,
|
|
352
|
+
GetAssignedValues,
|
|
347
353
|
Given,
|
|
348
354
|
HTable,
|
|
349
355
|
MTable,
|
|
@@ -355,6 +361,7 @@ var Setup2 = Setup;
|
|
|
355
361
|
Teardown,
|
|
356
362
|
Then,
|
|
357
363
|
Time,
|
|
364
|
+
TrackAccess,
|
|
358
365
|
Types,
|
|
359
366
|
VTable,
|
|
360
367
|
When,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/config.ts","../src/parameters.ts","../src/scopes.ts","../src/events.ts","../src/event-logger.ts","../src/executor.ts","../src/app.ts"],"sourcesContent":["import type {\n FeatureAction,\n FeatureScope,\n ScenarioAction,\n ScenarioScope,\n SizedTimeout,\n TestTimeout\n} from \"@autometa/scopes\";\n\nexport { defineConfig } from \"./config\";\nexport { defineParameterType } from \"./parameters\";\nimport {\n Feature as FeatureDefinition,\n Scenario as ScenarioDefinition,\n ScenarioOutline as ScenarioOutlineDefinition,\n Rule as RuleDefinition,\n Given as GivenDefinition,\n When as WhenDefinition,\n Then as ThenDefinition,\n Before as BeforeDefinition,\n After as AfterDefinition,\n Teardown as TeardownDefinition,\n Setup as SetupDefinition\n} from \"./scopes\";\nimport { RuleAction } from \"@autometa/scopes\";\nimport { RuleScope } from \"@autometa/scopes\";\nexport { Pass } from \"./scopes\";\nexport * from \"@autometa/phrases\";\nexport { App, World, AutometaApp, AutometaWorld } from \"@autometa/app\";\nexport { AppType, Fixture } from \"./app\";\nexport { Dates, Time } from \"@autometa/datetime\";\nexport { AutomationError, raise } from \"@autometa/errors\";\nexport { DataTable, HTable, VTable, MTable } from \"@autometa/gherkin\";\nexport { Bind } from \"@autometa/bind-decorator\";\nexport { Types } from \"@autometa/scopes\";\nexport * from \"./events\";\nexport * from \"@autometa/http\";\nexport * from \"@autometa/asserters\";\n\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n *\n * ``ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * Feature('../features/my-feature.feature')\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber stle.\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n */\nexport function Feature(filepath: string): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n * // 10 second timeout\n * Feature('../features/my-feature.feature', 10_000)\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber style.\n *\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n * @param timeout The timeout in milliseconds to apply to all tests within the feature.\n */\nexport function Feature(filepath: string, timeout: number): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout as a `TestTimeout` which is a tuple of `[durationNumber, 'ms' | 's' | 'm' | 'h']`\n * which will be applied to all tests within the feature.\n *\n * i.e. `[10, 's']` is a 10 second timeout. `[1, 'm']` is a 1 minute timeout.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('../features/my-feature.feature', [10, 's'])\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * };\n *\n * ```\n *\n * @param filepath\n * @param timeout\n */\nexport function Feature(filepath: string, timeout: TestTimeout): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * })\n * ```ts\n *\n * If defined in the Gherkin, it will also use any Globally defined Step Definitions which match,\n * if none is defined locally. If a Step Definition is defined both globally and locally,\n * the most local definition will be used. This applies to sub-scopes like Scenarios and Rules\n * also.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n *\n * Scenario('My Scenario', () => {\n * Given('I have a step', () => {})\n * })\n *\n * Rule('My Rule', () => {\n * Given('I have a step', () => {})\n * })\n *\n * @param testDefinition\n * @param filepath\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string\n): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * }, 10_000)\n * ```\n * @param testDefinition the Feature definition callback\n * @param filepath\n * @param timeout\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string,\n timeout: number\n): FeatureScope;\nexport function Feature(\n ...args: (FeatureAction | string | TestTimeout)[]\n): FeatureScope {\n return FeatureDefinition(...args);\n}\n\nexport function Scenario(title: string, action: ScenarioAction): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function Scenario(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioDefinition(...args);\n}\n\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function ScenarioOutline(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioOutlineDefinition(...args);\n}\n\nexport function Rule(title: string, action: RuleAction): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: number\n): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: SizedTimeout\n): RuleScope;\nexport function Rule(\n ...args: (string | RuleAction | SizedTimeout | number)[]\n): RuleScope {\n return RuleDefinition(...args);\n}\n/**\n * Defines a `Given` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * the context of a scenario, but cannot be accessed from the same step in a different\n * scenario.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * Given('I have a step', (app) => {\n * app.world.someData = 'some value'\n * })\n * // using destructuring\n * Given('I have a step', ({ world }) => {\n * world.someData = 'some value'\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * // matches 'Given I have a step with a 'blue' value'\n * Given('I have a step with a {string} value', (value, { world }) => {\n * world.someData = value\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Given = GivenDefinition;\n/**\n * Defines a `When` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * When('I do something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * When('I do something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * // matches 'When I do something with a 'blue' value'\n * When('I do something with a {string} value', async (value, { webdriver }) => {\n * await webdriver.click(`#some-button-${value}`)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const When = WhenDefinition;\n\n/**\n * Defines a `Then` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * Then('I expect something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Then('I expect something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * // matches 'Then I expect something with a 'blue' value'\n * Then('I expect something with a {string} value', async (value, { world }) => {\n * expect(world.someData).toBe(value)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Then = ThenDefinition;\n\n/**\n * Defines a `Before` hook. Executes before each scenario.\n * \n * ```ts\n * import { Before } from '@autometa/runner'\n * \n * Before(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Before(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Before = BeforeDefinition;\n\n/**\n * Defines a `After` hook. Executes after each scenario.\n * \n * ```ts\n * import { After } from '@autometa/runner'\n * \n * After(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * After(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const After = AfterDefinition;\n\n/**\n * Defines a `Setup` hook. Executes before all scenarios.\n * Setups are scoped, meaning a Setup defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleton fixture.\n * \n * ```ts\n * import { Setup } from '@autometa/runner'\n * \n * Setup(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Setup(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Teardown = TeardownDefinition;\n\n/**\n * Defines a `Teardown` hook. Executes after all scenarios have completed.\n * Teardowns are scoped, meaning a Teardown defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleston fixture.\n * ```ts\n * import { Teardown } from '@autometa/runner'\n * \n * Teardown(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Teardown(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Setup = SetupDefinition;\n\n\n","import {\n Config,\n TestExecutorConfig,\n defineConfig as dc\n} from \"@autometa/config\";\n\nexport const CONFIG = new Config(new Map<string, TestExecutorConfig>());\nexport const defineConfig = dc.bind(null, CONFIG);\n","import { ParameterTypeRegistry } from \"@cucumber/cucumber-expressions\";\nimport {\n BooleanParam,\n DateParam,\n NumberParam,\n PrimitiveParam,\n OrdinalParam,\n TextParam,\n defineParameterType as dpt\n} from \"@autometa/cucumber-expressions\";\n\nexport const PARAM_REGISTRY = new ParameterTypeRegistry();\n\n/**\n * Defines a parameter type for use in step definitions.\n * \n * ```ts\n * import { Color } from '../support/color';\n * \n * defineParameterType({\n * name: \"color\",\n * regexpPattern: /red|blue|yellow/,\n * transform: (value: string) => Color(value)\n * })\n * \n * // using regex arrays\n * defineParameterType({\n * name: \"color\",\n * regexpPattern: [/red/, /blue/, /yellow/],\n * transform: (value: string) => Color(value)\n * })\n * ```\n */\nexport const defineParameterType = dpt.bind(null, PARAM_REGISTRY);\n\ndefineParameterType(\n NumberParam,\n BooleanParam,\n PrimitiveParam,\n TextParam,\n DateParam,\n OrdinalParam\n);\n","import { PARAM_REGISTRY } from \"./parameters\";\nimport { GetCucumberFunctions, Pass } from \"@autometa/scopes\";\nimport { Coordinator } from \"@autometa/coordinator\";\nimport { CONFIG } from \"./config\";\nimport { makeTestEmitter } from \"./events\";\nimport { executor } from \"./executor\";\nimport { OPTS } from \"./app\";\nconst {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Global\n} = GetCucumberFunctions(PARAM_REGISTRY);\nconst coordinator = new Coordinator(Global, CONFIG, OPTS);\nGlobal.onFeatureExecuted = (feature, caller) => {\n const groupLogger = CONFIG.current.test?.groupLogging ?? false;\n const events = makeTestEmitter({ groupLogger });\n coordinator.run(feature, caller, events, executor);\n};\n\nexport {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Pass\n};\n","import { TestEventEmitter } from \"@autometa/events\";\nimport { CONFIG } from \"./config\";\nexport * from \"@autometa/events\";\nimport { GroupLogEvents } from \"./event-logger\";\nimport p from \"path\";\nexport function makeTestEmitter(opts: { groupLogger: boolean }) {\n const events = CONFIG.current.events;\n const emitter = new TestEventEmitter();\n if (opts.groupLogger) {\n emitter.load(new GroupLogEvents());\n }\n if (!events) {\n return emitter;\n }\n\n for (const event of events) {\n const isLocal = isRelativePath(event) || isAbsolutePath(event);\n if (isLocal) {\n const uriRoot = process.cwd();\n const uri = p.join(uriRoot, event);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(uri);\n if('default' in listener && typeof listener.default === \"function\") {\n emitter.load(new listener.default());\n return emitter;\n }\n if('default' in listener && typeof listener.default === \"object\") {\n emitter.load(listener.default);\n return emitter;\n }\n if(typeof listener === \"function\") {\n emitter.load(new listener());\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(event);\n if('default' in listener) {\n emitter.load(listener.default);\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n\n return emitter;\n}\n\nfunction isRelativePath(path: string) {\n return path.startsWith(\".\");\n}\n\nfunction isAbsolutePath(path: string) {\n return p.isAbsolute(path);\n}\n","import {\n EndAfterOpts,\n EndBeforeOpts,\n EndFeatureOpts,\n EndRuleOpts,\n EndScenarioOpts,\n EndScenarioOutlineOpts,\n EndSetupOpts,\n EndStepOpts,\n EndTeardownOpts,\n EventSubscriber,\n StartAfterOpts,\n StartBeforeOpts,\n StartFeatureOpts,\n StartRuleOpts,\n StartScenarioOpts,\n StartScenarioOutlineOpts,\n StartSetupOpts,\n StartStepOpts,\n StartTeardownOpts\n} from \"@autometa/events\";\nimport colors from \"colors-cli\";\nexport class GroupLogEvents implements EventSubscriber {\n onFeatureStart({ title }: StartFeatureOpts) {\n console.group(title);\n console.group();\n }\n onFeatureEnd({ title, status }: EndFeatureOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioStart({ title }: StartScenarioOpts): void {\n console.group(title);\n console.group();\n }\n onScenarioEnd({ title, status }: EndScenarioOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioOutlineStart(opts: StartScenarioOutlineOpts): void {\n console.group(opts.title);\n console.group();\n }\n onScenarioOutlineEnd({ title, status }: EndScenarioOutlineOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onRuleStart({ title }: StartRuleOpts): void {\n console.group(title);\n console.group();\n }\n onRuleEnd({ title, status }: EndRuleOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onStepStart({ title }: StartStepOpts) {\n console.group(title);\n console.group();\n }\n onStepEnd({ title, status }: EndStepOpts) {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onBeforeStart({ title, status }: StartBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onBeforeEnd({ title, status }: EndBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onAfterStart({ title, status }: StartAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onAfterEnd({ title, status }: EndAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onTeardownStart({ title, status }: StartTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onTeardownEnd({ title, status }: EndTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onSetupStart({title, status}: StartSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.group(title);\n console.group();\n }\n onSetupEnd({ title, status }: EndSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n}\nfunction colorStatus(\n status: \"FAILED\" | \"PASSED\" | \"SKIPPED\" | \"BROKEN\" | undefined,\n text: string\n) {\n switch (status) {\n case \"FAILED\":\n return `${colors.red(\"x\")} ${text}`;\n case \"PASSED\":\n return `${colors.green(\"✔️\")} ${text}`;\n case \"SKIPPED\":\n return `${colors.yellow(\"⊘\")} ${text}`;\n default:\n return text;\n }\n}\n","import { execute } from \"@autometa/jest-executor\";\n\nexport const executor = execute;\n","import \"@autometa/types\";\nimport { AppType as at } from \"@autometa/app\";\nimport { CoordinatorOpts } from \"@autometa/coordinator\";\nexport {\n Fixture,\n LIFE_CYCLE,\n Lifecycle,\n AutometaApp,\n AutometaWorld\n} from \"@autometa/app\";\nexport const OPTS = {} as Record<string, CoordinatorOpts>;\nexport const AppType = at.bind(null, OPTS);\n"],"mappings":"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","names":["After","Before","Feature","Given","Rule","Scenario","ScenarioOutline","Setup","Teardown","Then","When","dc","import_cucumber_expressions","dpt","colors","p","listener","import_app","at","import_app","import_scopes","Feature","Scenario","ScenarioOutline","Rule","Given","When","Then","Before","After","Teardown","Setup"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/config.ts","../src/parameters.ts","../src/scopes.ts","../src/events.ts","../src/event-logger.ts","../src/executor.ts","../src/app.ts"],"sourcesContent":["import type {\n FeatureAction,\n FeatureScope,\n ScenarioAction,\n ScenarioScope,\n SizedTimeout,\n TestTimeout\n} from \"@autometa/scopes\";\n\nexport { defineConfig } from \"./config\";\nexport { defineParameterType } from \"./parameters\";\nimport {\n Feature as FeatureDefinition,\n Scenario as ScenarioDefinition,\n ScenarioOutline as ScenarioOutlineDefinition,\n Rule as RuleDefinition,\n Given as GivenDefinition,\n When as WhenDefinition,\n Then as ThenDefinition,\n Before as BeforeDefinition,\n After as AfterDefinition,\n Teardown as TeardownDefinition,\n Setup as SetupDefinition\n} from \"./scopes\";\nimport { RuleAction } from \"@autometa/scopes\";\nimport { RuleScope } from \"@autometa/scopes\";\nexport { Pass } from \"./scopes\";\nexport * from \"@autometa/phrases\";\nexport { App, World, AutometaApp, AutometaWorld } from \"@autometa/app\";\nexport { AppType, Fixture } from \"./app\";\nexport { Dates, Time } from \"@autometa/datetime\";\nexport { AutomationError, raise } from \"@autometa/errors\";\nexport { DataTable, HTable, VTable, MTable } from \"@autometa/gherkin\";\nexport { Bind } from \"@autometa/bind-decorator\";\nexport { Types } from \"@autometa/scopes\";\nexport * from \"./events\";\nexport * from \"@autometa/http\";\nexport * from \"@autometa/asserters\";\nexport { GetAccessedCount, GetAssignedValues, TrackAccess } from \"@autometa/fixture-proxies\";\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n *\n * ``ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * Feature('../features/my-feature.feature')\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber stle.\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n */\nexport function Feature(filepath: string): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n * // 10 second timeout\n * Feature('../features/my-feature.feature', 10_000)\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * }\n * ```\n *\n * Global steps are defined in standard Cucumber style.\n *\n * ```ts\n * // ./test/steps/my-steps.ts\n * import { Given, When, Then } from '@autometa/runner'\n *\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * ```\n * @param filepath The absolute, relative, or 'feature root' path to the `.feature` file.\n * @param timeout The timeout in milliseconds to apply to all tests within the feature.\n */\nexport function Feature(filepath: string, timeout: number): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and globally defined Step Definitions.\n * Accepts a timeout as a `TestTimeout` which is a tuple of `[durationNumber, 'ms' | 's' | 'm' | 'h']`\n * which will be applied to all tests within the feature.\n *\n * i.e. `[10, 's']` is a 10 second timeout. `[1, 'm']` is a 1 minute timeout.\n *\n * ```ts\n * // using relative path\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('../features/my-feature.feature', [10, 's'])\n * ```\n *\n * Steps will be automatically assembled from Globally defined Step Definitions,\n * if a step definition root and app root are defined.\n *\n * ```ts\n * import { defineConfig } from '@autometa/runner'\n *\n * defineConfig({\n * ...\n * roots: {\n * steps: ['./test/steps'],\n * app: ['./app'],\n * },\n * };\n *\n * ```\n *\n * @param filepath\n * @param timeout\n */\nexport function Feature(filepath: string, timeout: TestTimeout): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * })\n * ```ts\n *\n * If defined in the Gherkin, it will also use any Globally defined Step Definitions which match,\n * if none is defined locally. If a Step Definition is defined both globally and locally,\n * the most local definition will be used. This applies to sub-scopes like Scenarios and Rules\n * also.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n *\n * Scenario('My Scenario', () => {\n * Given('I have a step', () => {})\n * })\n *\n * Rule('My Rule', () => {\n * Given('I have a step', () => {})\n * })\n *\n * @param testDefinition\n * @param filepath\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string\n): FeatureScope;\n/**\n * Executes a gherkin `.feature` file. Assembles Tests\n * using the Cucumber file and optionally locally defined steps,\n * mixed with optionally globally defined Step Definitions.\n * Accepts a timeout in milliseconds which will be applied to\n * all tests within the feature.\n *\n * ```ts\n * import { Feature } from '@autometa/runner'\n *\n * // 10 second timeout\n * Feature('My Feature', () => {\n * Given('I have a step', () => {})\n * When('I do something', () => {})\n * Then('I expect something', () => {})\n * }, 10_000)\n * ```\n * @param testDefinition the Feature definition callback\n * @param filepath\n * @param timeout\n */\nexport function Feature(\n testDefinition: FeatureAction,\n filepath: string,\n timeout: number\n): FeatureScope;\nexport function Feature(\n ...args: (FeatureAction | string | TestTimeout)[]\n): FeatureScope {\n return FeatureDefinition(...args);\n}\n\nexport function Scenario(title: string, action: ScenarioAction): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function Scenario(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function Scenario(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioDefinition(...args);\n}\n\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: number\n): ScenarioScope;\nexport function ScenarioOutline(\n title: string,\n action: ScenarioAction,\n timeout: SizedTimeout\n): ScenarioScope;\nexport function ScenarioOutline(\n ...args: (string | ScenarioAction | SizedTimeout | number)[]\n): ScenarioScope {\n return ScenarioOutlineDefinition(...args);\n}\n\nexport function Rule(title: string, action: RuleAction): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: number\n): RuleScope;\nexport function Rule(\n title: string,\n action: RuleAction,\n timeout: SizedTimeout\n): RuleScope;\nexport function Rule(\n ...args: (string | RuleAction | SizedTimeout | number)[]\n): RuleScope {\n return RuleDefinition(...args);\n}\n/**\n * Defines a `Given` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * the context of a scenario, but cannot be accessed from the same step in a different\n * scenario.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * Given('I have a step', (app) => {\n * app.world.someData = 'some value'\n * })\n * // using destructuring\n * Given('I have a step', ({ world }) => {\n * world.someData = 'some value'\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Given } from '@autometa/runner'\n * \n * // matches 'Given I have a step with a 'blue' value'\n * Given('I have a step with a {string} value', (value, { world }) => {\n * world.someData = value\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Given = GivenDefinition;\n/**\n * Defines a `When` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * When('I do something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * When('I do something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { When } from '@autometa/runner'\n * \n * // matches 'When I do something with a 'blue' value'\n * When('I do something with a {string} value', async (value, { webdriver }) => {\n * await webdriver.click(`#some-button-${value}`)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const When = WhenDefinition;\n\n/**\n * Defines a `Then` step definition. Matches a gherkin step\n * as either a string literal match, or a Cucumber Expression.\n * \n * The callback function is passed as it's last (or only) argument\n * a copy of the `App` object which also contains a reference to the World.\n * This can be used to access features, or store data across steps within a test.\n * \n * N.b. The App instance is shared between all step definitions and hooks within\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * Then('I expect something', async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Then('I expect something', async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * Steps also support Cucumber Expressions, which can be used to match\n * dynamic values in the step.\n * \n * ```ts\n * import { Then } from '@autometa/runner'\n * \n * // matches 'Then I expect something with a 'blue' value'\n * Then('I expect something with a {string} value', async (value, { world }) => {\n * expect(world.someData).toBe(value)\n * })\n * \n * @param pattern The step pattern to match.\n * @param action The step action to execute.\n */\nexport const Then = ThenDefinition;\n\n/**\n * Defines a `Before` hook. Executes before each scenario.\n * \n * ```ts\n * import { Before } from '@autometa/runner'\n * \n * Before(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Before(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Before = BeforeDefinition;\n\n/**\n * Defines a `After` hook. Executes after each scenario.\n * \n * ```ts\n * import { After } from '@autometa/runner'\n * \n * After(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * After(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const After = AfterDefinition;\n\n/**\n * Defines a `Setup` hook. Executes before all scenarios.\n * Setups are scoped, meaning a Setup defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleton fixture.\n * \n * ```ts\n * import { Setup } from '@autometa/runner'\n * \n * Setup(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Setup(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Teardown = TeardownDefinition;\n\n/**\n * Defines a `Teardown` hook. Executes after all scenarios have completed.\n * Teardowns are scoped, meaning a Teardown defined inside the scope of a rule\n * will only apply to scenarios within that rule.\n * \n * N.b the Setup Hook and Teardown Hook reference their own unique\n * copy of the App with it's own unique life cycle. Values stored here\n * will not be accessible in tests without a singleston fixture.\n * ```ts\n * import { Teardown } from '@autometa/runner'\n * \n * Teardown(async (app) => {\n * await app.webdriver.click('#some-button')\n * })\n * \n * // using destructuring\n * Teardown(async ({ webdriver }) => {\n * await webdriver.click('#some-button')\n * })\n * ```\n * \n * @param action The hook action to execute.\n */\nexport const Setup = SetupDefinition;\n\n\n","import {\n Config,\n TestExecutorConfig,\n defineConfig as dc\n} from \"@autometa/config\";\n\nexport const CONFIG = new Config(new Map<string, TestExecutorConfig>());\nexport const defineConfig = dc.bind(null, CONFIG);\n","import { ParameterTypeRegistry } from \"@cucumber/cucumber-expressions\";\nimport {\n BooleanParam,\n DateParam,\n NumberParam,\n PrimitiveParam,\n OrdinalParam,\n TextParam,\n defineParameterType as dpt\n} from \"@autometa/cucumber-expressions\";\n\nexport const PARAM_REGISTRY = new ParameterTypeRegistry();\n\n/**\n * Defines a parameter type for use in step definitions.\n * \n * ```ts\n * import { Color } from '../support/color';\n * \n * defineParameterType({\n * name: \"color\",\n * regexpPattern: /red|blue|yellow/,\n * transform: (value: string) => Color(value)\n * })\n * \n * // using regex arrays\n * defineParameterType({\n * name: \"color\",\n * regexpPattern: [/red/, /blue/, /yellow/],\n * transform: (value: string) => Color(value)\n * })\n * ```\n */\nexport const defineParameterType = dpt.bind(null, PARAM_REGISTRY);\n\ndefineParameterType(\n NumberParam,\n BooleanParam,\n PrimitiveParam,\n TextParam,\n DateParam,\n OrdinalParam\n);\n","import { PARAM_REGISTRY } from \"./parameters\";\nimport { GetCucumberFunctions, Pass } from \"@autometa/scopes\";\nimport { Coordinator } from \"@autometa/coordinator\";\nimport { CONFIG } from \"./config\";\nimport { makeTestEmitter } from \"./events\";\nimport { executor } from \"./executor\";\nimport { OPTS } from \"./app\";\nconst {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Global\n} = GetCucumberFunctions(PARAM_REGISTRY);\nconst coordinator = new Coordinator(Global, CONFIG, OPTS);\nGlobal.onFeatureExecuted = (feature, caller) => {\n const groupLogger = CONFIG.current.test?.groupLogging ?? false;\n const events = makeTestEmitter({ groupLogger });\n coordinator.run(feature, caller, events, executor);\n};\n\nexport {\n Feature,\n Scenario,\n ScenarioOutline,\n Rule,\n Given,\n When,\n Then,\n Before,\n After,\n Teardown,\n Setup,\n Pass\n};\n","import { TestEventEmitter } from \"@autometa/events\";\nimport { CONFIG } from \"./config\";\nexport * from \"@autometa/events\";\nimport { GroupLogEvents } from \"./event-logger\";\nimport p from \"path\";\nexport function makeTestEmitter(opts: { groupLogger: boolean }) {\n const events = CONFIG.current.events;\n const emitter = new TestEventEmitter();\n if (opts.groupLogger) {\n emitter.load(new GroupLogEvents());\n }\n if (!events) {\n return emitter;\n }\n\n for (const event of events) {\n const isLocal = isRelativePath(event) || isAbsolutePath(event);\n if (isLocal) {\n const uriRoot = process.cwd();\n const uri = p.join(uriRoot, event);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(uri);\n if('default' in listener && typeof listener.default === \"function\") {\n emitter.load(new listener.default());\n return emitter;\n }\n if('default' in listener && typeof listener.default === \"object\") {\n emitter.load(listener.default);\n return emitter;\n }\n if(typeof listener === \"function\") {\n emitter.load(new listener());\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const listener = require(event);\n if('default' in listener) {\n emitter.load(listener.default);\n return emitter;\n }\n emitter.load(listener);\n return emitter;\n }\n\n return emitter;\n}\n\nfunction isRelativePath(path: string) {\n return path.startsWith(\".\");\n}\n\nfunction isAbsolutePath(path: string) {\n return p.isAbsolute(path);\n}\n","import {\n EndAfterOpts,\n EndBeforeOpts,\n EndFeatureOpts,\n EndRuleOpts,\n EndScenarioOpts,\n EndScenarioOutlineOpts,\n EndSetupOpts,\n EndStepOpts,\n EndTeardownOpts,\n EventSubscriber,\n StartAfterOpts,\n StartBeforeOpts,\n StartFeatureOpts,\n StartRuleOpts,\n StartScenarioOpts,\n StartScenarioOutlineOpts,\n StartSetupOpts,\n StartStepOpts,\n StartTeardownOpts\n} from \"@autometa/events\";\nimport colors from \"colors-cli\";\nexport class GroupLogEvents implements EventSubscriber {\n onFeatureStart({ title }: StartFeatureOpts) {\n console.group(title);\n console.group();\n }\n onFeatureEnd({ title, status }: EndFeatureOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioStart({ title }: StartScenarioOpts): void {\n console.group(title);\n console.group();\n }\n onScenarioEnd({ title, status }: EndScenarioOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onScenarioOutlineStart(opts: StartScenarioOutlineOpts): void {\n console.group(opts.title);\n console.group();\n }\n onScenarioOutlineEnd({ title, status }: EndScenarioOutlineOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onRuleStart({ title }: StartRuleOpts): void {\n console.group(title);\n console.group();\n }\n onRuleEnd({ title, status }: EndRuleOpts): void {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onStepStart({ title }: StartStepOpts) {\n console.group(title);\n console.group();\n }\n onStepEnd({ title, status }: EndStepOpts) {\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onBeforeStart({ title, status }: StartBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onBeforeEnd({ title, status }: EndBeforeOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onAfterStart({ title, status }: StartAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onAfterEnd({ title, status }: EndAfterOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onTeardownStart({ title, status }: StartTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.group(title);\n console.group();\n }\n onTeardownEnd({ title, status }: EndTeardownOpts): void {\n if (status === \"SKIPPED\") {\n return;\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n onSetupStart({title, status}: StartSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.group(title);\n console.group();\n }\n onSetupEnd({ title, status }: EndSetupOpts): void {\n if (status === \"SKIPPED\") {\n return\n }\n console.groupEnd();\n console.log(colorStatus(status, `Ending ${title}`));\n console.groupEnd();\n }\n}\nfunction colorStatus(\n status: \"FAILED\" | \"PASSED\" | \"SKIPPED\" | \"BROKEN\" | undefined,\n text: string\n) {\n switch (status) {\n case \"FAILED\":\n return `${colors.red(\"x\")} ${text}`;\n case \"PASSED\":\n return `${colors.green(\"✔️\")} ${text}`;\n case \"SKIPPED\":\n return `${colors.yellow(\"⊘\")} ${text}`;\n default:\n return text;\n }\n}\n","import { execute } from \"@autometa/jest-executor\";\n\nexport const executor = execute;\n","import \"@autometa/types\";\nimport { AppType as at } from \"@autometa/app\";\nimport { CoordinatorOpts } from \"@autometa/coordinator\";\nexport {\n Fixture,\n LIFE_CYCLE,\n Lifecycle,\n AutometaApp,\n AutometaWorld\n} from \"@autometa/app\";\nexport const OPTS = {} as Record<string, CoordinatorOpts>;\nexport const AppType = at.bind(null, OPTS);\n"],"mappings":"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","names":["After","Before","Feature","Given","Rule","Scenario","ScenarioOutline","Setup","Teardown","Then","When","dc","import_cucumber_expressions","dpt","colors","p","listener","import_app","at","import_app","import_scopes","Feature","Scenario","ScenarioOutline","Rule","Given","When","Then","Before","After","Teardown","Setup"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autometa/runner",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.51",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,21 +30,22 @@
|
|
|
30
30
|
"vitest": "0.34.6"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@autometa/app": "^0.2.
|
|
33
|
+
"@autometa/app": "^0.2.2",
|
|
34
34
|
"@autometa/asserters": "^0.1.6",
|
|
35
35
|
"@autometa/bind-decorator": "^0.5.1",
|
|
36
|
-
"@autometa/config": "^0.1.
|
|
37
|
-
"@autometa/coordinator": "^0.2.
|
|
36
|
+
"@autometa/config": "^0.1.16",
|
|
37
|
+
"@autometa/coordinator": "^0.2.6",
|
|
38
38
|
"@autometa/cucumber-expressions": "^0.3.9",
|
|
39
39
|
"@autometa/datetime": "^0.1.14",
|
|
40
40
|
"@autometa/errors": "^0.2.0",
|
|
41
41
|
"@autometa/events": "^0.2.7",
|
|
42
|
+
"@autometa/fixture-proxies": "^0.1.1",
|
|
42
43
|
"@autometa/gherkin": "^0.5.4",
|
|
43
|
-
"@autometa/http": "^1.0.
|
|
44
|
-
"@autometa/jest-executor": "^0.3.
|
|
44
|
+
"@autometa/http": "^1.0.12",
|
|
45
|
+
"@autometa/jest-executor": "^0.3.3",
|
|
45
46
|
"@autometa/phrases": "^0.1.10",
|
|
46
|
-
"@autometa/scopes": "^0.4.
|
|
47
|
-
"@autometa/test-builder": "^0.1.
|
|
47
|
+
"@autometa/scopes": "^0.4.5",
|
|
48
|
+
"@autometa/test-builder": "^0.1.34",
|
|
48
49
|
"@autometa/types": "^0.4.1",
|
|
49
50
|
"@cucumber/cucumber-expressions": "^16.1.2",
|
|
50
51
|
"colors-cli": "^1.0.32"
|