@qavajs/playwright-runner-adapter 1.5.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/adapter/PlaywrightWorld.js +16 -10
- package/adapter/PlaywrightWorld.js.map +1 -1
- package/adapter/Template.d.ts +10 -0
- package/adapter/Template.js +27 -0
- package/adapter/Template.js.map +1 -0
- package/adapter/cucumber.spec.js +4 -7
- package/adapter/cucumber.spec.js.map +1 -1
- package/adapter/defineCucumber.js +2 -3
- package/adapter/defineCucumber.js.map +1 -1
- package/adapter/index.d.ts +5 -0
- package/adapter/index.js +22 -0
- package/adapter/index.js.map +1 -0
- package/adapter/loader.js +6 -8
- package/adapter/loader.js.map +1 -1
- package/adapter/tags.js +2 -0
- package/adapter/tags.js.map +1 -1
- package/package.json +4 -2
- package/src/Template.ts +23 -0
- package/src/index.ts +5 -0
- package/tsconfig.json +1 -1
- package/index.d.ts +0 -4
- package/index.js +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,17 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
|
|
|
14
14
|
|
|
15
15
|
:microscope: - experimental
|
|
16
16
|
|
|
17
|
+
## [1.6.0]
|
|
18
|
+
- :rocket: added `Template` utility function
|
|
19
|
+
```typescript
|
|
20
|
+
import { When, Template } from '@qavajs/playwright-runner-adapter';
|
|
21
|
+
|
|
22
|
+
When('I click {string} and verify {string}', Template((locator, expected) => `
|
|
23
|
+
I click '${locator}'
|
|
24
|
+
I expect '${locator} > Value' to equal '${expected}'
|
|
25
|
+
`));
|
|
26
|
+
```
|
|
27
|
+
|
|
17
28
|
## [1.5.2]
|
|
18
29
|
- :beetle: fixed issue with `this.attach`, made `details` parameter as optional
|
|
19
30
|
|
|
@@ -6,9 +6,13 @@ const test_1 = require("@playwright/test");
|
|
|
6
6
|
* Cucumber world for playwright adapter
|
|
7
7
|
*/
|
|
8
8
|
class TestWorld {
|
|
9
|
+
log;
|
|
10
|
+
attach;
|
|
11
|
+
parameters;
|
|
12
|
+
supportCodeLibrary;
|
|
13
|
+
test = test_1.test;
|
|
14
|
+
expect = test_1.expect;
|
|
9
15
|
constructor(options) {
|
|
10
|
-
this.test = test_1.test;
|
|
11
|
-
this.expect = test_1.expect;
|
|
12
16
|
this.log = options.log;
|
|
13
17
|
this.attach = options.attach;
|
|
14
18
|
this.parameters = options.parameters;
|
|
@@ -35,14 +39,16 @@ exports.TestWorld = TestWorld;
|
|
|
35
39
|
* Cucumber Playwright world for playwright adapter
|
|
36
40
|
*/
|
|
37
41
|
class PlaywrightWorld extends TestWorld {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
page;
|
|
43
|
+
context;
|
|
44
|
+
browser;
|
|
45
|
+
browserName;
|
|
46
|
+
request;
|
|
47
|
+
init = ({ browser, context, page }) => {
|
|
48
|
+
this.browser = browser;
|
|
49
|
+
this.context = context;
|
|
50
|
+
this.page = page;
|
|
51
|
+
};
|
|
46
52
|
}
|
|
47
53
|
exports.PlaywrightWorld = PlaywrightWorld;
|
|
48
54
|
//# sourceMappingURL=PlaywrightWorld.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightWorld.js","sourceRoot":"","sources":["../src/PlaywrightWorld.ts"],"names":[],"mappings":";;;AAAA,2CAAkG;AAElG;;GAEG;AACH,MAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"PlaywrightWorld.js","sourceRoot":"","sources":["../src/PlaywrightWorld.ts"],"names":[],"mappings":";;;AAAA,2CAAkG;AAElG;;GAEG;AACH,MAAa,SAAS;IAClB,GAAG,CAAuB;IAC1B,MAAM,CAA2E;IACjF,UAAU,CAAU;IACpB,kBAAkB,CAAO;IACzB,IAAI,GAAG,WAAI,CAAC;IACZ,MAAM,GAAG,aAAM,CAAC;IAEhB,YAAY,OAAY;QACpB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,WAAW,CAAY,IAAY,EAAE,UAAgB;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,qCAAqC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAS,CAAC;QAChC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC,CAAC;QAClG,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;CACJ;AA3BD,8BA2BC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,SAAS;IAC1C,IAAI,CAAQ;IACZ,OAAO,CAAkB;IACzB,OAAO,CAAW;IAClB,WAAW,CAAU;IACrB,OAAO,CAAqB;IAE5B,IAAI,GAAiC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAA6D,EAAE,EAAE;QAC3H,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC,CAAA;CACJ;AAZD,0CAYC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Define template step
|
|
3
|
+
* @param {string} scenario - multiline string with steps
|
|
4
|
+
* @example
|
|
5
|
+
* When('I click {string} and verify {string}', Template((locator, expected) => `
|
|
6
|
+
* I click '${locator}'
|
|
7
|
+
* I expect '${locator} > Value' to equal '${expected}'
|
|
8
|
+
* `));
|
|
9
|
+
*/
|
|
10
|
+
export declare function Template(scenario: (...args: any[]) => string): (...args: string[]) => string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Template = Template;
|
|
4
|
+
/**
|
|
5
|
+
* Define template step
|
|
6
|
+
* @param {string} scenario - multiline string with steps
|
|
7
|
+
* @example
|
|
8
|
+
* When('I click {string} and verify {string}', Template((locator, expected) => `
|
|
9
|
+
* I click '${locator}'
|
|
10
|
+
* I expect '${locator} > Value' to equal '${expected}'
|
|
11
|
+
* `));
|
|
12
|
+
*/
|
|
13
|
+
function Template(scenario) {
|
|
14
|
+
return new Proxy(scenario, {
|
|
15
|
+
apply: async function (template, world, args) {
|
|
16
|
+
const scenario = template(...args);
|
|
17
|
+
const steps = scenario
|
|
18
|
+
.split('\n')
|
|
19
|
+
.map(step => step.trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
for (const step of steps) {
|
|
22
|
+
await world.executeStep(step);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../src/Template.ts"],"names":[],"mappings":";;AASA,4BAaC;AAtBD;;;;;;;;GAQG;AACH,SAAgB,QAAQ,CAAC,QAAoC;IACzD,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QACvB,KAAK,EAAE,KAAK,WAAW,QAAuC,EAAE,KAAuD,EAAE,IAAW;YAChI,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAE;YACpC,MAAM,KAAK,GAAG,QAAQ;iBACjB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,OAAO,CAAC,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;KACJ,CAAC,CAAA;AACN,CAAC"}
|
package/adapter/cucumber.spec.js
CHANGED
|
@@ -6,9 +6,8 @@ function log(data) {
|
|
|
6
6
|
console.log(data);
|
|
7
7
|
}
|
|
8
8
|
function attach(body, details) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const contentType = (_b = details === null || details === void 0 ? void 0 : details.mediaType) !== null && _b !== void 0 ? _b : 'text/plain';
|
|
9
|
+
const fileName = details?.fileName ?? 'attachment';
|
|
10
|
+
const contentType = details?.mediaType ?? 'text/plain';
|
|
12
11
|
this.test.info().attach(fileName, { body, contentType });
|
|
13
12
|
}
|
|
14
13
|
const fixture = new supportCodeLibrary.World({});
|
|
@@ -29,7 +28,6 @@ for (const feature of features) {
|
|
|
29
28
|
});
|
|
30
29
|
test.beforeEach('Fixtures', world.init);
|
|
31
30
|
test.beforeEach('Before Hooks', async () => {
|
|
32
|
-
var _a;
|
|
33
31
|
const testId = test
|
|
34
32
|
.info()
|
|
35
33
|
.annotations
|
|
@@ -38,7 +36,7 @@ for (const feature of features) {
|
|
|
38
36
|
const testCase = tests.find(test => test.id === testId);
|
|
39
37
|
for (const beforeHook of supportCodeLibrary.beforeTestCaseHookDefinitions) {
|
|
40
38
|
if (beforeHook.appliesToTestCase(testCase)) {
|
|
41
|
-
const hookName =
|
|
39
|
+
const hookName = beforeHook.name ?? 'Before';
|
|
42
40
|
const location = { location: { column: 1, file: beforeHook.uri, line: beforeHook.line } };
|
|
43
41
|
await test.step(hookName, () => beforeHook.code.apply(world, [{
|
|
44
42
|
pickle: testCase
|
|
@@ -109,7 +107,6 @@ for (const feature of features) {
|
|
|
109
107
|
});
|
|
110
108
|
}
|
|
111
109
|
test.afterEach('After Hooks', async () => {
|
|
112
|
-
var _a;
|
|
113
110
|
const testInfo = test.info();
|
|
114
111
|
const testId = testInfo
|
|
115
112
|
.annotations
|
|
@@ -118,7 +115,7 @@ for (const feature of features) {
|
|
|
118
115
|
const testCase = tests.find(test => test.id === testId);
|
|
119
116
|
for (const afterHook of supportCodeLibrary.afterTestCaseHookDefinitions) {
|
|
120
117
|
if (afterHook.appliesToTestCase(testCase)) {
|
|
121
|
-
const hookName =
|
|
118
|
+
const hookName = afterHook.name ?? 'After';
|
|
122
119
|
const location = { location: { column: 1, file: afterHook.uri, line: afterHook.line } };
|
|
123
120
|
await test.step(hookName, () => afterHook.code.apply(world, [{
|
|
124
121
|
pickle: testCase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cucumber.spec.js","sourceRoot":"","sources":["../src/cucumber.spec.ts"],"names":[],"mappings":";;AAAA,qCAAgC;AAEhC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAA,aAAI,GAAE,CAAC;AAEhD,SAAS,GAAG,CAAC,IAAS;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,MAAM,CAAsB,IAAS,EAAE,OAAY
|
|
1
|
+
{"version":3,"file":"cucumber.spec.js","sourceRoot":"","sources":["../src/cucumber.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,8 @@ const node_path_1 = require("node:path");
|
|
|
15
15
|
* })
|
|
16
16
|
*/
|
|
17
17
|
function defineCucumber(config) {
|
|
18
|
-
var _a, _b;
|
|
19
18
|
process.env.CONFIG = config.config;
|
|
20
|
-
process.env.PROFILE =
|
|
21
|
-
return
|
|
19
|
+
process.env.PROFILE = config.profile ?? 'default';
|
|
20
|
+
return config.adapter ?? (0, node_path_1.resolve)('./node_modules/@qavajs/playwright-runner-adapter/adapter');
|
|
22
21
|
}
|
|
23
22
|
//# sourceMappingURL=defineCucumber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineCucumber.js","sourceRoot":"","sources":["../src/defineCucumber.ts"],"names":[],"mappings":";;AAoBA,wCAIC;AAxBD,yCAAoC;AAQpC;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAAC,MAAsB
|
|
1
|
+
{"version":3,"file":"defineCucumber.js","sourceRoot":"","sources":["../src/defineCucumber.ts"],"names":[],"mappings":";;AAoBA,wCAIC;AAxBD,yCAAoC;AAQpC;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAAC,MAAsB;IACjD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IAClD,OAAO,MAAM,CAAC,OAAO,IAAI,IAAA,mBAAO,EAAC,0DAA0D,CAAC,CAAC;AACjG,CAAC"}
|
package/adapter/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./PlaywrightWorld"), exports);
|
|
18
|
+
__exportStar(require("./defineCucumber"), exports);
|
|
19
|
+
__exportStar(require("./tags"), exports);
|
|
20
|
+
__exportStar(require("./Template"), exports);
|
|
21
|
+
__exportStar(require("@cucumber/cucumber"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,mDAAiC;AACjC,yCAAuB;AACvB,6CAA2B;AAC3B,qDAAmC"}
|
package/adapter/loader.js
CHANGED
|
@@ -31,11 +31,10 @@ function duplicates(tests) {
|
|
|
31
31
|
function loadFeatures(globPattern) {
|
|
32
32
|
const files = (0, glob_1.globSync)(globPattern);
|
|
33
33
|
return files.map(file => {
|
|
34
|
-
var _a;
|
|
35
34
|
const filePath = (0, node_path_1.resolve)(file);
|
|
36
35
|
const gherkinDocument = parser.parse((0, node_fs_1.readFileSync)(filePath, 'utf-8'));
|
|
37
36
|
return {
|
|
38
|
-
feature:
|
|
37
|
+
feature: gherkinDocument.feature?.name,
|
|
39
38
|
tests: duplicates((0, gherkin_1.compile)(gherkinDocument, file, uuidFn))
|
|
40
39
|
};
|
|
41
40
|
});
|
|
@@ -51,15 +50,14 @@ function loadStepDefinitions(globPattern) {
|
|
|
51
50
|
return cucumber_1.supportCodeLibraryBuilder.finalize();
|
|
52
51
|
}
|
|
53
52
|
function load() {
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
const profile = (_b = process.env.PROFILE) !== null && _b !== void 0 ? _b : 'default';
|
|
53
|
+
const config = require((0, node_path_1.join)(process.cwd(), process.env.CONFIG ?? 'config.js'));
|
|
54
|
+
const profile = process.env.PROFILE ?? 'default';
|
|
57
55
|
const resolvedConfig = config[profile];
|
|
58
56
|
const features = loadFeatures(resolvedConfig.paths);
|
|
59
57
|
const supportCodeLibrary = loadStepDefinitions([
|
|
60
|
-
...(
|
|
61
|
-
...(
|
|
62
|
-
...(
|
|
58
|
+
...(resolvedConfig.requireModules ?? []),
|
|
59
|
+
...(resolvedConfig.require ?? []),
|
|
60
|
+
...(resolvedConfig.import ?? [])
|
|
63
61
|
]);
|
|
64
62
|
return { features, supportCodeLibrary };
|
|
65
63
|
}
|
package/adapter/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;AA4BA,oCAUC;AAED,kDASC;AAED,oBAYC;AA/DD,qCAAuC;AACvC,yCAA0C;AAC1C,6CAAyC;AACzC,+CAA4F;AAC5F,iDAA+D;AAC/D,+BAAgC;AAChC,uDAAoD;AAEpD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,OAAO,GAAG,IAAI,oCAA0B,EAAE,CAAC;AACjD,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAE3C,SAAS,UAAU,CAAC,KAAY;IAC5B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,YAAY,CAAC,WAAqB;IAC9C,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,WAAW,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/adapter/tags.js
CHANGED
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.tags = tags;
|
|
7
7
|
const tag_expressions_1 = __importDefault(require("@cucumber/tag-expressions"));
|
|
8
8
|
class TagExpression extends RegExp {
|
|
9
|
+
tagExpression;
|
|
10
|
+
expressionNode;
|
|
9
11
|
constructor(tagExpression) {
|
|
10
12
|
super('');
|
|
11
13
|
this.tagExpression = tagExpression;
|
package/adapter/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":";;;;;AA2BA,oBAEC;AA7BD,gFAA6C;AAE7C,MAAM,aAAc,SAAQ,MAAM;
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":";;;;;AA2BA,oBAEC;AA7BD,gFAA6C;AAE7C,MAAM,aAAc,SAAQ,MAAM;IAKV;IAJZ,cAAc,CAEpB;IAEF,YAAoB,aAAqB;QACrC,KAAK,CAAC,EAAE,CAAC,CAAC;QADM,kBAAa,GAAb,aAAa,CAAQ;QAErC,IAAI,CAAC,cAAc,GAAG,IAAA,yBAAK,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,QAAgB;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACJ;AAED;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,aAAqB;IACtC,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qavajs/playwright-runner-adapter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "adapter for playwright test runner",
|
|
5
|
+
"main": "adapter/index.js",
|
|
6
|
+
"types": "adapter/index.d.ts",
|
|
5
7
|
"scripts": {
|
|
6
8
|
"build": "tsc",
|
|
7
9
|
"test:ui": "playwright test --config test/playwright.config.ts --ui",
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
},
|
|
25
27
|
"devDependencies": {
|
|
26
28
|
"@playwright/test": "^1.55.1",
|
|
27
|
-
"@types/node": "^24.6.
|
|
29
|
+
"@types/node": "^24.6.2",
|
|
28
30
|
"typescript": "^5.9.3"
|
|
29
31
|
}
|
|
30
32
|
}
|
package/src/Template.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Define template step
|
|
3
|
+
* @param {string} scenario - multiline string with steps
|
|
4
|
+
* @example
|
|
5
|
+
* When('I click {string} and verify {string}', Template((locator, expected) => `
|
|
6
|
+
* I click '${locator}'
|
|
7
|
+
* I expect '${locator} > Value' to equal '${expected}'
|
|
8
|
+
* `));
|
|
9
|
+
*/
|
|
10
|
+
export function Template(scenario: (...args: any[]) => string) {
|
|
11
|
+
return new Proxy(scenario, {
|
|
12
|
+
apply: async function (template: (...args: string[]) => string, world: { executeStep: (step: string) => Promise<void> }, args: any[]) {
|
|
13
|
+
const scenario = template(...args) ;
|
|
14
|
+
const steps = scenario
|
|
15
|
+
.split('\n')
|
|
16
|
+
.map(step => step.trim())
|
|
17
|
+
.filter(Boolean);
|
|
18
|
+
for (const step of steps) {
|
|
19
|
+
await world.executeStep(step);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
}
|
package/src/index.ts
ADDED
package/tsconfig.json
CHANGED
package/index.d.ts
DELETED
package/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const worlds = require('./adapter/PlaywrightWorld');
|
|
2
|
-
const { defineCucumber } = require('./adapter/defineCucumber');
|
|
3
|
-
const { tags } = require('./adapter/tags');
|
|
4
|
-
const cucumber = require('@cucumber/cucumber');
|
|
5
|
-
module.exports = {
|
|
6
|
-
...worlds,
|
|
7
|
-
defineCucumber,
|
|
8
|
-
tags,
|
|
9
|
-
...cucumber
|
|
10
|
-
}
|