artes 1.0.62 → 1.0.63

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.
Files changed (38) hide show
  1. package/README.md +356 -356
  2. package/cucumber.config.js +98 -98
  3. package/docs/functionDefinitions.md +2342 -2342
  4. package/docs/stepDefinitions.md +352 -352
  5. package/executer.js +59 -59
  6. package/index.js +44 -44
  7. package/package.json +50 -50
  8. package/src/helper/contextManager/browserManager.js +66 -66
  9. package/src/helper/contextManager/requestManager.js +30 -30
  10. package/src/helper/executers/cleaner.js +23 -23
  11. package/src/helper/executers/exporter.js +15 -15
  12. package/src/helper/executers/helper.js +44 -44
  13. package/src/helper/executers/projectCreator.js +162 -162
  14. package/src/helper/executers/reportGenerator.js +29 -29
  15. package/src/helper/executers/testRunner.js +59 -59
  16. package/src/helper/executers/versionChecker.js +13 -13
  17. package/src/helper/imports/commons.js +51 -51
  18. package/src/helper/pomController/elementController.js +146 -146
  19. package/src/helper/pomController/pomCollector.js +20 -20
  20. package/src/helper/stepFunctions/APIActions.js +271 -271
  21. package/src/helper/stepFunctions/assertions.js +523 -523
  22. package/src/helper/stepFunctions/browserActions.js +21 -21
  23. package/src/helper/stepFunctions/elementInteractions.js +38 -38
  24. package/src/helper/stepFunctions/exporter.js +19 -19
  25. package/src/helper/stepFunctions/frameActions.js +50 -50
  26. package/src/helper/stepFunctions/keyboardActions.js +41 -41
  27. package/src/helper/stepFunctions/mouseActions.js +145 -145
  28. package/src/helper/stepFunctions/pageActions.js +27 -27
  29. package/src/hooks/context.js +15 -15
  30. package/src/hooks/hooks.js +76 -76
  31. package/src/stepDefinitions/API.steps.js +248 -248
  32. package/src/stepDefinitions/assertions.steps.js +826 -826
  33. package/src/stepDefinitions/browser.steps.js +7 -7
  34. package/src/stepDefinitions/frameActions.steps.js +76 -76
  35. package/src/stepDefinitions/keyboardActions.steps.js +87 -87
  36. package/src/stepDefinitions/mouseActions.steps.js +256 -256
  37. package/src/stepDefinitions/page.steps.js +71 -71
  38. package/src/stepDefinitions/random.steps.js +25 -25
package/executer.js CHANGED
@@ -1,59 +1,59 @@
1
- #!/usr/bin/env node
2
-
3
- const {
4
- showHelp,
5
- showVersion,
6
- createProject,
7
- runTests,
8
- generateReport,
9
- cleanUp,
10
- } = require("./src/helper/executers/exporter");
11
-
12
- const args = process.argv.slice(2);
13
-
14
- const flags = {
15
- help: args.includes("-h") || args.includes("--help"),
16
- version: args.includes("-v") || args.includes("--version"),
17
- create: args.includes("-c") || args.includes("--create"),
18
- createYes: args.includes("-y") || args.includes("--yes"),
19
- report: args.includes("-r") || args.includes("--report"),
20
- trace: args.includes("-t") || args.includes("--trace"),
21
- features: args.includes("--features"),
22
- tags: args.includes("--tags"),
23
- env: args.includes("--env"),
24
- headless: args.includes("--headless"),
25
- };
26
-
27
- function main() {
28
- if (flags.help) {
29
- showHelp();
30
- return;
31
- }
32
-
33
- if (flags.version) {
34
- showVersion();
35
- return;
36
- }
37
-
38
- if (flags.create) {
39
- createProject(flags.createYes);
40
- return;
41
- }
42
-
43
- // if (flags.trace) {
44
- // runTests();
45
- // tracer();
46
- // cleanUp();
47
- // }
48
-
49
- if (flags.report) {
50
- runTests(args, flags);
51
- generateReport();
52
- cleanUp();
53
- } else {
54
- runTests(args, flags);
55
- cleanUp();
56
- }
57
- }
58
-
59
- main();
1
+ #!/usr/bin/env node
2
+
3
+ const {
4
+ showHelp,
5
+ showVersion,
6
+ createProject,
7
+ runTests,
8
+ generateReport,
9
+ cleanUp,
10
+ } = require("./src/helper/executers/exporter");
11
+
12
+ const args = process.argv.slice(2);
13
+
14
+ const flags = {
15
+ help: args.includes("-h") || args.includes("--help"),
16
+ version: args.includes("-v") || args.includes("--version"),
17
+ create: args.includes("-c") || args.includes("--create"),
18
+ createYes: args.includes("-y") || args.includes("--yes"),
19
+ report: args.includes("-r") || args.includes("--report"),
20
+ trace: args.includes("-t") || args.includes("--trace"),
21
+ features: args.includes("--features"),
22
+ tags: args.includes("--tags"),
23
+ env: args.includes("--env"),
24
+ headless: args.includes("--headless"),
25
+ };
26
+
27
+ function main() {
28
+ if (flags.help) {
29
+ showHelp();
30
+ return;
31
+ }
32
+
33
+ if (flags.version) {
34
+ showVersion();
35
+ return;
36
+ }
37
+
38
+ if (flags.create) {
39
+ createProject(flags.createYes);
40
+ return;
41
+ }
42
+
43
+ // if (flags.trace) {
44
+ // runTests();
45
+ // tracer();
46
+ // cleanUp();
47
+ // }
48
+
49
+ if (flags.report) {
50
+ runTests(args, flags);
51
+ generateReport();
52
+ cleanUp();
53
+ } else {
54
+ runTests(args, flags);
55
+ cleanUp();
56
+ }
57
+ }
58
+
59
+ main();
package/index.js CHANGED
@@ -1,44 +1,44 @@
1
- const {
2
- expect,
3
- Given,
4
- When,
5
- Then,
6
- context,
7
- element,
8
- selector,
9
- saveVar,
10
- extractVarsFromResponse,
11
- page,
12
- request,
13
- random,
14
- } = require("./src/helper/imports/commons");
15
- const {
16
- keyboard,
17
- mouse,
18
- frame,
19
- assert,
20
- elementInteractions,
21
- api,
22
- } = require("./src/helper/stepFunctions/exporter");
23
-
24
- module.exports = {
25
- expect,
26
- Given,
27
- When,
28
- Then,
29
- element,
30
- selector,
31
- saveVar,
32
- extractVarsFromResponse,
33
- context,
34
- api,
35
- random,
36
- page,
37
- request,
38
- api,
39
- keyboard,
40
- mouse,
41
- frame,
42
- assert,
43
- elementInteractions,
44
- };
1
+ const {
2
+ expect,
3
+ Given,
4
+ When,
5
+ Then,
6
+ context,
7
+ element,
8
+ selector,
9
+ saveVar,
10
+ extractVarsFromResponse,
11
+ page,
12
+ request,
13
+ random,
14
+ } = require("./src/helper/imports/commons");
15
+ const {
16
+ keyboard,
17
+ mouse,
18
+ frame,
19
+ assert,
20
+ elementInteractions,
21
+ api,
22
+ } = require("./src/helper/stepFunctions/exporter");
23
+
24
+ module.exports = {
25
+ expect,
26
+ Given,
27
+ When,
28
+ Then,
29
+ element,
30
+ selector,
31
+ saveVar,
32
+ extractVarsFromResponse,
33
+ context,
34
+ api,
35
+ random,
36
+ page,
37
+ request,
38
+ api,
39
+ keyboard,
40
+ mouse,
41
+ frame,
42
+ assert,
43
+ elementInteractions,
44
+ };
package/package.json CHANGED
@@ -1,50 +1,50 @@
1
- {
2
- "name": "artes",
3
- "version": "1.0.62",
4
- "description": "The simplest way to automate UI and API tests using Cucumber-style steps.",
5
- "main": "index.js",
6
- "scripts": {
7
- "test": "cucumber-js --config=cucumber.config.js",
8
- "testWithReport": "allure generate --clean --single-file allure-result --output",
9
- "createProject": "node ./src/helper/executers/projectCreator.js",
10
- "clean": "rimraf",
11
- "publishOnly": "prettier -w . && npm version patch && npm publish"
12
- },
13
- "bin": {
14
- "artes": "./executer.js"
15
- },
16
- "keywords": [
17
- "kdt",
18
- "automation",
19
- "playwright",
20
- "cucumber",
21
- "test automation",
22
- "end-to-end",
23
- "API testing"
24
- ],
25
- "author": "VhdAghyv",
26
- "license": "ISC",
27
- "dependencies": {
28
- "@cucumber/cucumber": "^11.0.1",
29
- "@cucumber/messages": "^26.0.1",
30
- "@faker-js/faker": "^9.8.0",
31
- "@gatling.io/cli": "3.12.0",
32
- "@gatling.io/core": "3.12.0",
33
- "@gatling.io/http": "3.12.0",
34
- "@types/node": "^22.9.0",
35
- "ajv": "^8.17.1",
36
- "allure-commandline": "^2.30.0",
37
- "allure-cucumberjs": "^3.0.5",
38
- "allure-js-commons": "^3.0.5",
39
- "playwright": "^1.48.2",
40
- "rimraf": "^6.0.1"
41
- },
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/4gayev1/Artes"
45
- },
46
- "bugs": {
47
- "url": "https://github.com/4gayev1/Artes/issues"
48
- },
49
- "homepage": "https://github.com/4gayev1/Artes/blob/main/README.md"
50
- }
1
+ {
2
+ "name": "artes",
3
+ "version": "1.0.63",
4
+ "description": "The simplest way to automate UI and API tests using Cucumber-style steps.",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "cucumber-js --config=cucumber.config.js",
8
+ "testWithReport": "allure generate --clean --single-file allure-result --output",
9
+ "createProject": "node ./src/helper/executers/projectCreator.js",
10
+ "clean": "rimraf",
11
+ "publishOnly": "prettier -w . && npm version patch && npm publish"
12
+ },
13
+ "bin": {
14
+ "artes": "./executer.js"
15
+ },
16
+ "keywords": [
17
+ "kdt",
18
+ "automation",
19
+ "playwright",
20
+ "cucumber",
21
+ "test automation",
22
+ "end-to-end",
23
+ "API testing"
24
+ ],
25
+ "author": "VhdAghyv",
26
+ "license": "ISC",
27
+ "dependencies": {
28
+ "@cucumber/cucumber": "^11.0.1",
29
+ "@cucumber/messages": "^26.0.1",
30
+ "@faker-js/faker": "^9.8.0",
31
+ "@gatling.io/cli": "3.12.0",
32
+ "@gatling.io/core": "3.12.0",
33
+ "@gatling.io/http": "3.12.0",
34
+ "@types/node": "^22.9.0",
35
+ "ajv": "^8.17.1",
36
+ "allure-commandline": "^2.30.0",
37
+ "allure-cucumberjs": "^3.0.5",
38
+ "allure-js-commons": "^3.0.5",
39
+ "playwright": "^1.48.2",
40
+ "rimraf": "^6.0.1"
41
+ },
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/4gayev1/Artes"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/4gayev1/Artes/issues"
48
+ },
49
+ "homepage": "https://github.com/4gayev1/Artes/blob/main/README.md"
50
+ }
@@ -1,66 +1,66 @@
1
- const { chromium, firefox, webkit } = require("playwright");
2
- const cucumberConfig = require("../../../cucumber.config.js");
3
-
4
- const invokeBrowser = async () => {
5
- let browser;
6
-
7
- let baseURL = "";
8
-
9
- if (typeof cucumberConfig.baseURL === "object") {
10
- if (
11
- cucumberConfig.env != "" ||
12
- cucumberConfig.env != undefined ||
13
- cucumberConfig.env != null
14
- ) {
15
- baseURL = cucumberConfig.baseURL[cucumberConfig.env.trim()];
16
- } else {
17
- baseURL =
18
- cucumberConfig.baseURL[Object.keys(cucumberConfig.baseURL)[0].trim()];
19
- }
20
- } else {
21
- baseURL = cucumberConfig.baseURL;
22
- }
23
-
24
- const options = {
25
- headless: cucumberConfig.browser.headless,
26
- args: [cucumberConfig.browser.maximizeScreen ? "--start-maximized" : ""],
27
- };
28
-
29
- const browserType =
30
- cucumberConfig.browser.browserType.toLowerCase() || "chrome";
31
-
32
- const browserContextOptions = {
33
- baseURL: baseURL,
34
- viewport: cucumberConfig.browser.maximizeScreen
35
- ? null
36
- : cucumberConfig.browser.viewport,
37
- recordVideo: {
38
- dir: "./test-results/visualReport/",
39
- size: cucumberConfig.browser.viewport,
40
- },
41
- ignoreHTTPSErrors: true,
42
- };
43
-
44
- switch (browserType) {
45
- case "chrome":
46
- browser = await chromium.launch(options);
47
- break;
48
- case "firefox":
49
- browser = await firefox.launch(options);
50
- break;
51
- case "webkit":
52
- browser = await webkit.launch(options);
53
- break;
54
- default:
55
- throw new Error(
56
- "Please set the proper browser!\n Options: chrome, firefox, webkit",
57
- );
58
- }
59
-
60
- const context = await browser.newContext(browserContextOptions);
61
- return await context;
62
- };
63
-
64
- module.exports = {
65
- invokeBrowser,
66
- };
1
+ const { chromium, firefox, webkit } = require("playwright");
2
+ const cucumberConfig = require("../../../cucumber.config.js");
3
+
4
+ const invokeBrowser = async () => {
5
+ let browser;
6
+
7
+ let baseURL = "";
8
+
9
+ if (typeof cucumberConfig.baseURL === "object") {
10
+ if (
11
+ cucumberConfig.env != "" ||
12
+ cucumberConfig.env != undefined ||
13
+ cucumberConfig.env != null
14
+ ) {
15
+ baseURL = cucumberConfig.baseURL[cucumberConfig.env.trim()];
16
+ } else {
17
+ baseURL =
18
+ cucumberConfig.baseURL[Object.keys(cucumberConfig.baseURL)[0].trim()];
19
+ }
20
+ } else {
21
+ baseURL = cucumberConfig.baseURL;
22
+ }
23
+
24
+ const options = {
25
+ headless: cucumberConfig.browser.headless,
26
+ args: [cucumberConfig.browser.maximizeScreen ? "--start-maximized" : ""],
27
+ };
28
+
29
+ const browserType =
30
+ cucumberConfig.browser.browserType.toLowerCase() || "chrome";
31
+
32
+ const browserContextOptions = {
33
+ baseURL: baseURL,
34
+ viewport: cucumberConfig.browser.maximizeScreen
35
+ ? null
36
+ : cucumberConfig.browser.viewport,
37
+ recordVideo: {
38
+ dir: "./test-results/visualReport/",
39
+ size: cucumberConfig.browser.viewport,
40
+ },
41
+ ignoreHTTPSErrors: true,
42
+ };
43
+
44
+ switch (browserType) {
45
+ case "chrome":
46
+ browser = await chromium.launch(options);
47
+ break;
48
+ case "firefox":
49
+ browser = await firefox.launch(options);
50
+ break;
51
+ case "webkit":
52
+ browser = await webkit.launch(options);
53
+ break;
54
+ default:
55
+ throw new Error(
56
+ "Please set the proper browser!\n Options: chrome, firefox, webkit",
57
+ );
58
+ }
59
+
60
+ const context = await browser.newContext(browserContextOptions);
61
+ return await context;
62
+ };
63
+
64
+ module.exports = {
65
+ invokeBrowser,
66
+ };
@@ -1,30 +1,30 @@
1
- const { request } = require("playwright");
2
- const cucumberConfig = require("../../../cucumber.config.js");
3
-
4
- let baseURL = "";
5
-
6
- if (typeof cucumberConfig.baseURL === "object") {
7
- if (
8
- cucumberConfig.env != "" ||
9
- cucumberConfig.env != undefined ||
10
- cucumberConfig.env != null
11
- ) {
12
- baseURL = cucumberConfig.baseURL[cucumberConfig.env.trim()];
13
- } else {
14
- baseURL =
15
- cucumberConfig.baseURL[Object.keys(cucumberConfig.baseURL)[0].trim()];
16
- }
17
- } else {
18
- baseURL = cucumberConfig.baseURL;
19
- }
20
-
21
- const requestContextOptions = {
22
- baseURL: baseURL,
23
- };
24
-
25
- async function invokeRequest() {
26
- const context = await request.newContext(requestContextOptions);
27
- return context;
28
- }
29
-
30
- module.exports = { invokeRequest };
1
+ const { request } = require("playwright");
2
+ const cucumberConfig = require("../../../cucumber.config.js");
3
+
4
+ let baseURL = "";
5
+
6
+ if (typeof cucumberConfig.baseURL === "object") {
7
+ if (
8
+ cucumberConfig.env != "" ||
9
+ cucumberConfig.env != undefined ||
10
+ cucumberConfig.env != null
11
+ ) {
12
+ baseURL = cucumberConfig.baseURL[cucumberConfig.env.trim()];
13
+ } else {
14
+ baseURL =
15
+ cucumberConfig.baseURL[Object.keys(cucumberConfig.baseURL)[0].trim()];
16
+ }
17
+ } else {
18
+ baseURL = cucumberConfig.baseURL;
19
+ }
20
+
21
+ const requestContextOptions = {
22
+ baseURL: baseURL,
23
+ };
24
+
25
+ async function invokeRequest() {
26
+ const context = await request.newContext(requestContextOptions);
27
+ return context;
28
+ }
29
+
30
+ module.exports = { invokeRequest };
@@ -1,23 +1,23 @@
1
- const { moduleConfig } = require("../imports/commons");
2
- const { spawnSync } = require("child_process");
3
-
4
- function cleanUp() {
5
- try {
6
- const result = spawnSync(
7
- "npm",
8
- ["run", "clean", moduleConfig.cleanUpPaths],
9
- {
10
- cwd: moduleConfig.modulePath,
11
- stdio: "ignore",
12
- shell: true,
13
- },
14
- );
15
- } catch (error) {
16
- console.error("❌ Error in cleanup:", error.message);
17
- process.exit(1);
18
- }
19
- }
20
-
21
- module.exports = {
22
- cleanUp,
23
- };
1
+ const { moduleConfig } = require("../imports/commons");
2
+ const { spawnSync } = require("child_process");
3
+
4
+ function cleanUp() {
5
+ try {
6
+ const result = spawnSync(
7
+ "npm",
8
+ ["run", "clean", moduleConfig.cleanUpPaths],
9
+ {
10
+ cwd: moduleConfig.modulePath,
11
+ stdio: "ignore",
12
+ shell: true,
13
+ },
14
+ );
15
+ } catch (error) {
16
+ console.error("❌ Error in cleanup:", error.message);
17
+ process.exit(1);
18
+ }
19
+ }
20
+
21
+ module.exports = {
22
+ cleanUp,
23
+ };
@@ -1,15 +1,15 @@
1
- const { showHelp } = require("./helper");
2
- const { createProject } = require("./projectCreator");
3
- const { generateReport } = require("./reportGenerator");
4
- const { runTests } = require("./testRunner");
5
- const { showVersion } = require("./versionChecker");
6
- const { cleanUp } = require("./cleaner");
7
-
8
- module.exports = {
9
- createProject,
10
- generateReport,
11
- runTests,
12
- showHelp,
13
- showVersion,
14
- cleanUp,
15
- };
1
+ const { showHelp } = require("./helper");
2
+ const { createProject } = require("./projectCreator");
3
+ const { generateReport } = require("./reportGenerator");
4
+ const { runTests } = require("./testRunner");
5
+ const { showVersion } = require("./versionChecker");
6
+ const { cleanUp } = require("./cleaner");
7
+
8
+ module.exports = {
9
+ createProject,
10
+ generateReport,
11
+ runTests,
12
+ showHelp,
13
+ showVersion,
14
+ cleanUp,
15
+ };
@@ -1,44 +1,44 @@
1
- function showHelp() {
2
- console.log(`
3
- 🚀 Artes - Playwright Test Runner
4
-
5
- Description:
6
- Artes is a test runner for Playwright that executes Cucumber tests
7
- and can generate Allure reports.
8
-
9
- Usage:
10
- npx artes [options]
11
-
12
- Options:
13
- 🆘 -h, --help Show this help message
14
- Usage: artes -h or artes --help
15
-
16
- 🏷️ -v, --version Show current version of artes
17
- Usage: artes -v or artes --version
18
-
19
- 🏗️ -c, --create Create example project with artes
20
- Usage: artes -c or artes --create
21
-
22
- ✅ -y, --yes Skip confirmation prompt for creating example project
23
- Usage: artes -c -y or artes --create --yes
24
-
25
- 📊 -r, --report Run tests and generate Allure report
26
- Usage: artes -r or artes --report
27
-
28
- 📁 --features Specify one or more feature files' relative paths to run (comma-separated)
29
- Usage: artes --features "tests/features/Alma, tests/features/Banan.feature"
30
-
31
- 🔖 --tags Run tests with specified Cucumber tags
32
- Usage: artes --tags "@smoke and not @wip"
33
-
34
- 🌐 --env Set environment for the test run
35
- Usage: artes --env "dev"
36
-
37
- 🕶️ --headless Run browser in headless mode
38
- Usage: artes --headless
39
- `);
40
- }
41
-
42
- module.exports = {
43
- showHelp,
44
- };
1
+ function showHelp() {
2
+ console.log(`
3
+ 🚀 Artes - Playwright Test Runner
4
+
5
+ Description:
6
+ Artes is a test runner for Playwright that executes Cucumber tests
7
+ and can generate Allure reports.
8
+
9
+ Usage:
10
+ npx artes [options]
11
+
12
+ Options:
13
+ 🆘 -h, --help Show this help message
14
+ Usage: artes -h or artes --help
15
+
16
+ 🏷️ -v, --version Show current version of artes
17
+ Usage: artes -v or artes --version
18
+
19
+ 🏗️ -c, --create Create example project with artes
20
+ Usage: artes -c or artes --create
21
+
22
+ ✅ -y, --yes Skip confirmation prompt for creating example project
23
+ Usage: artes -c -y or artes --create --yes
24
+
25
+ 📊 -r, --report Run tests and generate Allure report
26
+ Usage: artes -r or artes --report
27
+
28
+ 📁 --features Specify one or more feature files' relative paths to run (comma-separated)
29
+ Usage: artes --features "tests/features/Alma, tests/features/Banan.feature"
30
+
31
+ 🔖 --tags Run tests with specified Cucumber tags
32
+ Usage: artes --tags "@smoke and not @wip"
33
+
34
+ 🌐 --env Set environment for the test run
35
+ Usage: artes --env "dev"
36
+
37
+ 🕶️ --headless Run browser in headless mode
38
+ Usage: artes --headless
39
+ `);
40
+ }
41
+
42
+ module.exports = {
43
+ showHelp,
44
+ };