artes 1.2.14 → 1.2.16

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 +533 -533
  2. package/cucumber.config.js +171 -171
  3. package/docs/functionDefinitions.md +2401 -2401
  4. package/docs/stepDefinitions.md +352 -352
  5. package/executer.js +161 -161
  6. package/index.js +48 -48
  7. package/package.json +51 -54
  8. package/src/helper/contextManager/browserManager.js +63 -63
  9. package/src/helper/contextManager/requestManager.js +23 -23
  10. package/src/helper/controller/elementController.js +182 -182
  11. package/src/helper/controller/pomCollector.js +25 -25
  12. package/src/helper/executers/cleaner.js +19 -19
  13. package/src/helper/executers/exporter.js +15 -15
  14. package/src/helper/executers/helper.js +95 -95
  15. package/src/helper/executers/projectCreator.js +198 -198
  16. package/src/helper/executers/reportGenerator.js +58 -57
  17. package/src/helper/executers/testRunner.js +30 -30
  18. package/src/helper/executers/versionChecker.js +31 -31
  19. package/src/helper/imports/commons.js +56 -56
  20. package/src/helper/stepFunctions/APIActions.js +362 -362
  21. package/src/helper/stepFunctions/assertions.js +523 -523
  22. package/src/helper/stepFunctions/browserActions.js +22 -22
  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 +257 -257
  31. package/src/stepDefinitions/API.steps.js +299 -299
  32. package/src/stepDefinitions/assertions.steps.js +861 -861
  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 +226 -226
  36. package/src/stepDefinitions/mouseActions.steps.js +275 -275
  37. package/src/stepDefinitions/page.steps.js +71 -71
  38. package/src/stepDefinitions/random.steps.js +158 -158
package/executer.js CHANGED
@@ -1,161 +1,161 @@
1
- #!/usr/bin/env node
2
- const {
3
- showHelp,
4
- showVersion,
5
- createProject,
6
- runTests,
7
- generateReport,
8
- cleanUp,
9
- } = require("./src/helper/executers/exporter");
10
- const fs = require("fs");
11
- const path = require("path");
12
-
13
- const configPath = path.resolve(process.cwd(), "artes.config.js");
14
-
15
- let artesConfig = {};
16
-
17
- if (fs.existsSync(configPath)) {
18
- artesConfig = require(configPath);
19
- }
20
-
21
- const args = process.argv.slice(2);
22
-
23
- const flags = {
24
- help: args.includes("-h") || args.includes("--help"),
25
- version: args.includes("-v") || args.includes("--version"),
26
- create: args.includes("-c") || args.includes("--create"),
27
- createYes: args.includes("-y") || args.includes("--yes"),
28
- report: args.includes("-r") || args.includes("--report"),
29
- reportSuccess: args.includes("--reportSuccess"),
30
- trace: args.includes("-t") || args.includes("--trace"),
31
- reportWithTrace: args.includes("-rwt") || args.includes("--reportWithTrace"),
32
- singleFileReport: args.includes("--singleFileReport"),
33
- zip: args.includes("--zip"),
34
- features: args.includes("--features"),
35
- stepDef: args.includes("--stepDef"),
36
- tags: args.includes("--tags"),
37
- env: args.includes("--env"),
38
- headless: args.includes("--headless"),
39
- parallel: args.includes("--parallel"),
40
- retry: args.includes("--retry"),
41
- dryRun: args.includes("--dryRun"),
42
- percentage: args.includes("--percentage"),
43
- browser: args.includes("--browser"),
44
- baseURL: args.includes("--baseURL"),
45
- maximizeScreen: args.includes("--maxScreen"),
46
- width: args.includes("--width"),
47
- height: args.includes("--height"),
48
- timeout: args.includes("--timeout"),
49
- slowMo: args.includes("--slowMo"),
50
- };
51
-
52
- const env = args[args.indexOf("--env") + 1];
53
- const featureFiles = args[args.indexOf("--features") + 1];
54
- const features = flags.features && featureFiles;
55
- const stepDef = args[args.indexOf("--stepDef") + 1];
56
- const tags = args[args.indexOf("--tags") + 1];
57
- const parallel = args[args.indexOf("--parallel") + 1];
58
- const retry = args[args.indexOf("--retry") + 1];
59
- const percentage = args[args.indexOf("--percentage") + 1];
60
- const browser = args[args.indexOf("--browser") + 1];
61
- const baseURL = args[args.indexOf("--baseURL") + 1];
62
- const width = args[args.indexOf("--width") + 1];
63
- const height = args[args.indexOf("--height") + 1];
64
- const timeout = args[args.indexOf("--timeout") + 1];
65
- const slowMo = args[args.indexOf("--slowMo") + 1];
66
-
67
-
68
- flags.env ? (process.env.ENV = env) : ""
69
-
70
- flags.reportWithTrace ||
71
- artesConfig.reportWithTrace ||
72
- flags.report ||
73
- artesConfig.report
74
- ? (process.env.REPORT_FORMAT = JSON.stringify([
75
- "allure-cucumberjs/reporter:./allure-results",
76
- ]))
77
- : "";
78
-
79
- flags.reportSuccess ? (process.env.REPORT_SUCCESS = true) : "";
80
-
81
- flags.tags && console.log("Running tags:", tags);
82
- flags.tags ? (process.env.RUN_TAGS = JSON.stringify(tags)) : "";
83
-
84
- flags.features && console.log("Running features:", features);
85
- flags.features ? (process.env.FEATURES = features) : "";
86
-
87
- flags.stepDef && console.log("Running step definitions:", flags.stepDef);
88
- flags.stepDef ? (process.env.STEP_DEFINITIONS = stepDef) : "";
89
-
90
- flags.report ? (process.env.REPORT = true) : "";
91
-
92
- flags.trace ? (process.env.TRACE = true) : "";
93
-
94
- flags.reportWithTrace ? (process.env.REPORT_WITH_TRACE = true) : (process.env.REPORT_WITH_TRACE=false);
95
-
96
- flags.singleFileReport ? (process.env.SINGLE_FILE_REPORT = true) : (process.env.SINGLE_FILE_REPORT=false);
97
-
98
- flags.zip ? (process.env.ZIP = true) : (process.env.ZIP=false);
99
-
100
- flags.headless &&
101
- console.log("Running mode:", flags.headless ? "headless" : "headed");
102
- flags.headless ? (process.env.MODE = JSON.stringify(true)) : false;
103
-
104
- flags.parallel ? (process.env.PARALLEL = parallel) : "";
105
-
106
- flags.retry ? (process.env.RETRY = retry) : "";
107
-
108
- flags.dryRun ? (process.env.DRYRUN = flags.dryRun) : "";
109
-
110
- flags.percentage ? (process.env.PERCENTAGE = percentage) : "";
111
-
112
- flags.browser && console.log("Running browser:", browser);
113
- flags.browser ? (process.env.BROWSER = JSON.stringify(browser)) : "";
114
-
115
- flags.baseURL ? (process.env.BASE_URL = JSON.stringify(baseURL)) : "";
116
-
117
- flags.maximizeScreen
118
- ? (process.env.MAXIMIZE_SCREEN = flags.maximizeScreen)
119
- : "";
120
-
121
- flags.width && console.log("Running width:", width);
122
- flags.width ? (process.env.WIDTH = width) : "";
123
-
124
- flags.height && console.log("Running height:", height);
125
- flags.height ? (process.env.HEIGHT = height) : "";
126
-
127
- flags.timeout ? (process.env.TIMEOUT = timeout) : "";
128
-
129
- flags.slowMo ? (process.env.SLOWMO = slowMo) : "";
130
-
131
- function main() {
132
- if (flags.help) return showHelp();
133
- if (flags.version) return showVersion();
134
- if (flags.create) return createProject(flags.createYes);
135
-
136
- runTests();
137
- if (
138
- flags.reportWithTrace ||
139
- artesConfig.reportWithTrace ||
140
- flags.report ||
141
- artesConfig.report
142
- )
143
- generateReport();
144
-
145
- if (
146
- fs.existsSync(
147
- path.join(process.cwd(), "node_modules", "artes", "EXIT_CODE.txt"),
148
- )
149
- ) {
150
- const data = fs.readFileSync(
151
- path.join(process.cwd(), "node_modules", "artes", "EXIT_CODE.txt"),
152
- "utf8",
153
- );
154
- process.env.EXIT_CODE = parseInt(data, 10);
155
- }
156
-
157
- cleanUp();
158
- process.exit(process.env.EXIT_CODE);
159
- }
160
-
161
- main();
1
+ #!/usr/bin/env node
2
+ const {
3
+ showHelp,
4
+ showVersion,
5
+ createProject,
6
+ runTests,
7
+ generateReport,
8
+ cleanUp,
9
+ } = require("./src/helper/executers/exporter");
10
+ const fs = require("fs");
11
+ const path = require("path");
12
+
13
+ const configPath = path.resolve(process.cwd(), "artes.config.js");
14
+
15
+ let artesConfig = {};
16
+
17
+ if (fs.existsSync(configPath)) {
18
+ artesConfig = require(configPath);
19
+ }
20
+
21
+ const args = process.argv.slice(2);
22
+
23
+ const flags = {
24
+ help: args.includes("-h") || args.includes("--help"),
25
+ version: args.includes("-v") || args.includes("--version"),
26
+ create: args.includes("-c") || args.includes("--create"),
27
+ createYes: args.includes("-y") || args.includes("--yes"),
28
+ report: args.includes("-r") || args.includes("--report"),
29
+ reportSuccess: args.includes("--reportSuccess"),
30
+ trace: args.includes("-t") || args.includes("--trace"),
31
+ reportWithTrace: args.includes("-rwt") || args.includes("--reportWithTrace"),
32
+ singleFileReport: args.includes("--singleFileReport"),
33
+ zip: args.includes("--zip"),
34
+ features: args.includes("--features"),
35
+ stepDef: args.includes("--stepDef"),
36
+ tags: args.includes("--tags"),
37
+ env: args.includes("--env"),
38
+ headless: args.includes("--headless"),
39
+ parallel: args.includes("--parallel"),
40
+ retry: args.includes("--retry"),
41
+ dryRun: args.includes("--dryRun"),
42
+ percentage: args.includes("--percentage"),
43
+ browser: args.includes("--browser"),
44
+ baseURL: args.includes("--baseURL"),
45
+ maximizeScreen: args.includes("--maxScreen"),
46
+ width: args.includes("--width"),
47
+ height: args.includes("--height"),
48
+ timeout: args.includes("--timeout"),
49
+ slowMo: args.includes("--slowMo"),
50
+ };
51
+
52
+ const env = args[args.indexOf("--env") + 1];
53
+ const featureFiles = args[args.indexOf("--features") + 1];
54
+ const features = flags.features && featureFiles;
55
+ const stepDef = args[args.indexOf("--stepDef") + 1];
56
+ const tags = args[args.indexOf("--tags") + 1];
57
+ const parallel = args[args.indexOf("--parallel") + 1];
58
+ const retry = args[args.indexOf("--retry") + 1];
59
+ const percentage = args[args.indexOf("--percentage") + 1];
60
+ const browser = args[args.indexOf("--browser") + 1];
61
+ const baseURL = args[args.indexOf("--baseURL") + 1];
62
+ const width = args[args.indexOf("--width") + 1];
63
+ const height = args[args.indexOf("--height") + 1];
64
+ const timeout = args[args.indexOf("--timeout") + 1];
65
+ const slowMo = args[args.indexOf("--slowMo") + 1];
66
+
67
+
68
+ flags.env ? (process.env.ENV = env) : ""
69
+
70
+ flags.reportWithTrace ||
71
+ artesConfig.reportWithTrace ||
72
+ flags.report ||
73
+ artesConfig.report
74
+ ? (process.env.REPORT_FORMAT = JSON.stringify([
75
+ "allure-cucumberjs/reporter:./allure-results",
76
+ ]))
77
+ : "";
78
+
79
+ flags.reportSuccess ? (process.env.REPORT_SUCCESS = true) : "";
80
+
81
+ flags.tags && console.log("Running tags:", tags);
82
+ flags.tags ? (process.env.RUN_TAGS = JSON.stringify(tags)) : "";
83
+
84
+ flags.features && console.log("Running features:", features);
85
+ flags.features ? (process.env.FEATURES = features) : "";
86
+
87
+ flags.stepDef && console.log("Running step definitions:", flags.stepDef);
88
+ flags.stepDef ? (process.env.STEP_DEFINITIONS = stepDef) : "";
89
+
90
+ flags.report ? (process.env.REPORT = true) : "";
91
+
92
+ flags.trace ? (process.env.TRACE = true) : "";
93
+
94
+ flags.reportWithTrace ? (process.env.REPORT_WITH_TRACE = true) : (process.env.REPORT_WITH_TRACE=false);
95
+
96
+ flags.singleFileReport ? (process.env.SINGLE_FILE_REPORT = true) : (process.env.SINGLE_FILE_REPORT=false);
97
+
98
+ flags.zip ? (process.env.ZIP = true) : (process.env.ZIP=false);
99
+
100
+ flags.headless &&
101
+ console.log("Running mode:", flags.headless ? "headless" : "headed");
102
+ flags.headless ? (process.env.MODE = JSON.stringify(true)) : false;
103
+
104
+ flags.parallel ? (process.env.PARALLEL = parallel) : "";
105
+
106
+ flags.retry ? (process.env.RETRY = retry) : "";
107
+
108
+ flags.dryRun ? (process.env.DRYRUN = flags.dryRun) : "";
109
+
110
+ flags.percentage ? (process.env.PERCENTAGE = percentage) : "";
111
+
112
+ flags.browser && console.log("Running browser:", browser);
113
+ flags.browser ? (process.env.BROWSER = JSON.stringify(browser)) : "";
114
+
115
+ flags.baseURL ? (process.env.BASE_URL = JSON.stringify(baseURL)) : "";
116
+
117
+ flags.maximizeScreen
118
+ ? (process.env.MAXIMIZE_SCREEN = flags.maximizeScreen)
119
+ : "";
120
+
121
+ flags.width && console.log("Running width:", width);
122
+ flags.width ? (process.env.WIDTH = width) : "";
123
+
124
+ flags.height && console.log("Running height:", height);
125
+ flags.height ? (process.env.HEIGHT = height) : "";
126
+
127
+ flags.timeout ? (process.env.TIMEOUT = timeout) : "";
128
+
129
+ flags.slowMo ? (process.env.SLOWMO = slowMo) : "";
130
+
131
+ function main() {
132
+ if (flags.help) return showHelp();
133
+ if (flags.version) return showVersion();
134
+ if (flags.create) return createProject(flags.createYes);
135
+
136
+ runTests();
137
+ if (
138
+ flags.reportWithTrace ||
139
+ artesConfig.reportWithTrace ||
140
+ flags.report ||
141
+ artesConfig.report
142
+ )
143
+ generateReport();
144
+
145
+ if (
146
+ fs.existsSync(
147
+ path.join(process.cwd(), "node_modules", "artes", "EXIT_CODE.txt"),
148
+ )
149
+ ) {
150
+ const data = fs.readFileSync(
151
+ path.join(process.cwd(), "node_modules", "artes", "EXIT_CODE.txt"),
152
+ "utf8",
153
+ );
154
+ process.env.EXIT_CODE = parseInt(data, 10);
155
+ }
156
+
157
+ cleanUp();
158
+ process.exit(process.env.EXIT_CODE);
159
+ }
160
+
161
+ main();
package/index.js CHANGED
@@ -1,48 +1,48 @@
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
- time,
15
- resolveVariable,
16
- } = require("./src/helper/imports/commons");
17
- const {
18
- keyboard,
19
- mouse,
20
- frame,
21
- assert,
22
- elementInteractions,
23
- api,
24
- } = require("./src/helper/stepFunctions/exporter");
25
-
26
- module.exports = {
27
- expect,
28
- Given,
29
- When,
30
- Then,
31
- element,
32
- selector,
33
- saveVar,
34
- extractVarsFromResponse,
35
- resolveVariable,
36
- context,
37
- api,
38
- random,
39
- time,
40
- page,
41
- request,
42
- api,
43
- keyboard,
44
- mouse,
45
- frame,
46
- assert,
47
- elementInteractions,
48
- };
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
+ time,
15
+ resolveVariable,
16
+ } = require("./src/helper/imports/commons");
17
+ const {
18
+ keyboard,
19
+ mouse,
20
+ frame,
21
+ assert,
22
+ elementInteractions,
23
+ api,
24
+ } = require("./src/helper/stepFunctions/exporter");
25
+
26
+ module.exports = {
27
+ expect,
28
+ Given,
29
+ When,
30
+ Then,
31
+ element,
32
+ selector,
33
+ saveVar,
34
+ extractVarsFromResponse,
35
+ resolveVariable,
36
+ context,
37
+ api,
38
+ random,
39
+ time,
40
+ page,
41
+ request,
42
+ api,
43
+ keyboard,
44
+ mouse,
45
+ frame,
46
+ assert,
47
+ elementInteractions,
48
+ };
package/package.json CHANGED
@@ -1,54 +1,51 @@
1
- {
2
- "name": "artes",
3
- "version": "1.2.14",
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
- "createProject": "node ./src/helper/executers/projectCreator.js",
9
- "clean": "rimraf",
10
- "publishOnly": "prettier -w . && npm version patch && npm publish"
11
- },
12
- "bin": {
13
- "artes": "./executer.js"
14
- },
15
- "publishConfig": {
16
- "registry": "https://registry.npmjs.org/"
17
- },
18
- "author": "VhdAghyv",
19
- "license": "ISC",
20
- "dependencies": {
21
- "@cucumber/cucumber": "11.0.1",
22
- "@cucumber/messages": "26.0.1",
23
- "@faker-js/faker": "9.8.0",
24
- "@gatling.io/cli": "3.12.0",
25
- "@gatling.io/core": "3.12.0",
26
- "@gatling.io/http": "3.12.0",
27
- "@types/node": "22.9.0",
28
- "ajv": "8.17.1",
29
- "allure-commandline": "2.30.0",
30
- "allure-cucumberjs": "3.0.5",
31
- "allure-js-commons": "3.0.5",
32
- "dayjs": "1.11.13",
33
- "deasync": "^0.1.31",
34
- "playwright": "1.52.0",
35
- "rimraf": "6.0.1"
36
- },
37
- "repository": {
38
- "type": "git",
39
- "url": "git+https://github.com/4gayev1/Artes"
40
- },
41
- "bugs": {
42
- "url": "https://github.com/4gayev1/Artes/issues"
43
- },
44
- "homepage": "https://github.com/4gayev1/Artes/blob/main/README.md",
45
- "keywords": [
46
- "kdt",
47
- "automation",
48
- "playwright",
49
- "cucumber",
50
- "test automation",
51
- "end-to-end",
52
- "API testing"
53
- ]
54
- }
1
+ {
2
+ "name": "artes",
3
+ "version": "1.2.16",
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
+ "createProject": "node ./src/helper/executers/projectCreator.js",
9
+ "clean": "rimraf",
10
+ "publishOnly": "prettier -w . && npm version patch && npm publish"
11
+ },
12
+ "bin": {
13
+ "artes": "./executer.js"
14
+ },
15
+ "publishConfig": {
16
+ "registry": "https://registry.npmjs.org/"
17
+ },
18
+ "author": "VhdAghyv",
19
+ "license": "ISC",
20
+ "dependencies": {
21
+ "@cucumber/cucumber": "11.0.1",
22
+ "@cucumber/messages": "26.0.1",
23
+ "@faker-js/faker": "9.8.0",
24
+ "@types/node": "22.9.0",
25
+ "ajv": "8.17.1",
26
+ "allure-commandline": "2.30.0",
27
+ "allure-cucumberjs": "3.0.5",
28
+ "allure-js-commons": "3.0.5",
29
+ "dayjs": "1.11.13",
30
+ "deasync": "^0.1.31",
31
+ "playwright": "1.52.0",
32
+ "rimraf": "6.0.1"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/4gayev1/Artes"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/4gayev1/Artes/issues"
40
+ },
41
+ "homepage": "https://github.com/4gayev1/Artes/blob/main/README.md",
42
+ "keywords": [
43
+ "kdt",
44
+ "automation",
45
+ "playwright",
46
+ "cucumber",
47
+ "test automation",
48
+ "end-to-end",
49
+ "API testing"
50
+ ]
51
+ }
@@ -1,63 +1,63 @@
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
- const env = (cucumberConfig.env || "").trim();
11
- baseURL = cucumberConfig.baseURL[env];
12
- } else {
13
- baseURL = cucumberConfig.baseURL;
14
- }
15
-
16
- const options = {
17
- headless: cucumberConfig.browser.headless,
18
- slowMo: cucumberConfig.browser.slowMo,
19
- args: [cucumberConfig.browser.maximizeScreen ? "--start-maximized" : ""],
20
- };
21
-
22
- const browserType =
23
- cucumberConfig.browser.browserType.toLowerCase() || "chrome";
24
-
25
- const browserContextOptions = {
26
- baseURL: baseURL,
27
- viewport: cucumberConfig.browser.maximizeScreen
28
- ? null
29
- : cucumberConfig.browser.viewport,
30
- recordVideo: {
31
- dir: "./test-results/visualReport/",
32
- size: cucumberConfig.browser.viewport,
33
- },
34
- ignoreHTTPSErrors: true,
35
- };
36
-
37
- switch (browserType) {
38
- case "chrome":
39
- browser = await chromium.launch(options);
40
- break;
41
- case "firefox":
42
- browser = await firefox.launch(options);
43
- break;
44
- case "webkit":
45
- browser = await webkit.launch(options);
46
- break;
47
- default:
48
- throw new Error(
49
- "Please set the proper browser!\n Options: chrome, firefox, webkit",
50
- );
51
- }
52
-
53
- const context = await browser.newContext(browserContextOptions);
54
-
55
- return {
56
- browser: browser,
57
- context: context,
58
- };
59
- };
60
-
61
- module.exports = {
62
- invokeBrowser,
63
- };
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
+ const env = (cucumberConfig.env || "").trim();
11
+ baseURL = cucumberConfig.baseURL[env];
12
+ } else {
13
+ baseURL = cucumberConfig.baseURL;
14
+ }
15
+
16
+ const options = {
17
+ headless: cucumberConfig.browser.headless,
18
+ slowMo: cucumberConfig.browser.slowMo,
19
+ args: [cucumberConfig.browser.maximizeScreen ? "--start-maximized" : ""],
20
+ };
21
+
22
+ const browserType =
23
+ cucumberConfig.browser.browserType.toLowerCase() || "chrome";
24
+
25
+ const browserContextOptions = {
26
+ baseURL: baseURL,
27
+ viewport: cucumberConfig.browser.maximizeScreen
28
+ ? null
29
+ : cucumberConfig.browser.viewport,
30
+ recordVideo: {
31
+ dir: "./test-results/visualReport/",
32
+ size: cucumberConfig.browser.viewport,
33
+ },
34
+ ignoreHTTPSErrors: true,
35
+ };
36
+
37
+ switch (browserType) {
38
+ case "chrome":
39
+ browser = await chromium.launch(options);
40
+ break;
41
+ case "firefox":
42
+ browser = await firefox.launch(options);
43
+ break;
44
+ case "webkit":
45
+ browser = await webkit.launch(options);
46
+ break;
47
+ default:
48
+ throw new Error(
49
+ "Please set the proper browser!\n Options: chrome, firefox, webkit",
50
+ );
51
+ }
52
+
53
+ const context = await browser.newContext(browserContextOptions);
54
+
55
+ return {
56
+ browser: browser,
57
+ context: context,
58
+ };
59
+ };
60
+
61
+ module.exports = {
62
+ invokeBrowser,
63
+ };