froth-webdriverio-framework 1.0.4 → 1.0.6
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.
|
@@ -62,6 +62,7 @@ async function updateExecuitonDetails(frothUrl, token, id, resultdetails) {
|
|
|
62
62
|
formData.append('excution_time', resultdetails.excution_time);
|
|
63
63
|
formData.append('id', BUFFER.getItem("EXECUTION_ID"))
|
|
64
64
|
formData.append('report_url',BUFFER.getItem("REPORT_URL"))
|
|
65
|
+
|
|
65
66
|
const response = await fetch(url, {
|
|
66
67
|
method: 'PUT',
|
|
67
68
|
headers: {
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
// Function to get data from the API using the Bearer token
|
|
3
|
+
async function getintegrationdetails(frothUrl, token, id) {
|
|
4
|
+
let jsondata = {};
|
|
5
|
+
if ( id != 0) {
|
|
6
|
+
const url = `https://${frothUrl}/api/intergration-view/${id}/`;
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
|
|
10
|
+
const response = await fetch(url, {
|
|
11
|
+
method: 'GET',
|
|
12
|
+
headers: {
|
|
13
|
+
'Authorization': `Bearer ${token}`,
|
|
14
|
+
'Content-Type': 'application/json'
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
if (response.ok) {
|
|
19
|
+
const data = await response.json();
|
|
20
|
+
console.log(data)
|
|
21
|
+
jsondata.product = data.product;
|
|
22
|
+
jsondata.username = data.username;
|
|
23
|
+
jsondata.email = data.email;
|
|
24
|
+
jsondata.token= data.token;
|
|
25
|
+
|
|
26
|
+
console.log("json data :" + JSON.stringify(jsondata));
|
|
27
|
+
|
|
28
|
+
return jsondata;
|
|
29
|
+
|
|
30
|
+
} else if (response.status === 401) { // Unauthorized, token expired
|
|
31
|
+
// Call login function to obtain a new token
|
|
32
|
+
const newToken = await getLoginToken(BUFFER.getItem("SERVICE_USER"), BUFFER.getItem("SERVICE_PASSWORD")); // You need to implement the login function
|
|
33
|
+
// Retry the request with the new token
|
|
34
|
+
return getintegrationdetails(frothUrl, newToken, id);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const errorText = await response.text();
|
|
38
|
+
console.error('Data fetch failed response:', errorText);
|
|
39
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('Error fetching data:', error);
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
console.error('Error fetching data: Invalid ID');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = getintegrationdetails;
|
package/api/getsuiteDetails.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
const getLoginToken = require("../api/loginapi");
|
|
3
|
-
|
|
4
2
|
// Function to get data from the API using the Bearer token
|
|
5
3
|
async function getSuiteDetails(frothUrl, token, id) {
|
|
6
4
|
let jsondata = {};
|
|
7
|
-
if (
|
|
5
|
+
if (id != 0) {
|
|
8
6
|
const url = `https://${frothUrl}/api/automationsuite-retrieve/${id}/`;
|
|
9
7
|
|
|
10
8
|
try {
|
|
@@ -23,6 +21,7 @@ async function getSuiteDetails(frothUrl, token, id) {
|
|
|
23
21
|
jsondata.automation_suite_id = data.id;
|
|
24
22
|
jsondata.automation_suite_name = data.automation_suite_name;
|
|
25
23
|
jsondata.test_data_id = data.test_data_id;
|
|
24
|
+
jsondata.browser_stack_urls = data.browser_stack_urls;
|
|
26
25
|
console.log("json data :" + JSON.stringify(jsondata));
|
|
27
26
|
|
|
28
27
|
return jsondata;
|
package/config/commonconfig.js
CHANGED
|
@@ -1,43 +1,21 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const getLoginToken = require("../api/loginapi");
|
|
4
|
-
const getSuiteDetails = require("../api/getsuiteDetails");
|
|
5
|
-
const { LocalStorage } = require('node-localstorage');
|
|
6
|
-
global.BUFFER = new LocalStorage('./storage');
|
|
1
|
+
const setAllDetails = require("./setallDatainBuffer")
|
|
2
|
+
|
|
7
3
|
const getBSSessionDetails = require("../api/browsersatckSessionInfo")
|
|
8
4
|
// Description: This file contains the common configuration for the webdriverio framework.
|
|
9
5
|
const commonconfig = {
|
|
10
6
|
|
|
11
7
|
|
|
12
8
|
onPrepare: async function (capabilities, specs) {
|
|
13
|
-
BUFFER.setItem("TOTAL_DURATION", 0);
|
|
14
9
|
// This code runs before the test suite starts
|
|
15
10
|
// console.log("organisation url" + process.env.ORGANISATION_DOMAIN_URL);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
process.env.LOGIN_TOKEN = getToken;
|
|
25
|
-
BUFFER.setItem("LOGIN_TOKEN", getToken)
|
|
26
|
-
|
|
27
|
-
const getExeDetails = await exeDetails.getExecuitonDetails(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), getToken, BUFFER.getItem("EXECUTION_ID"));
|
|
28
|
-
if (getExeDetails.automation_suite_id != null) {
|
|
29
|
-
const getSuiteDetail = await getSuiteDetails(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), getToken, getExeDetails.automation_suite_id);
|
|
30
|
-
if (getSuiteDetail.test_data_id != null) {
|
|
31
|
-
const jsonobject = await getDataById(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), getToken, getSuiteDetail.test_data_id);
|
|
32
|
-
if (jsonobject == null) {
|
|
33
|
-
console.log("Test data is not available");
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
BUFFER.setItem("BUFFER", JSON.stringify(jsonobject))
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
11
|
+
|
|
12
|
+
await setAllDetails.setEnvVariables();
|
|
13
|
+
await setAllDetails.setLoginToken();
|
|
14
|
+
await setAllDetails.setExecutionDetails();
|
|
15
|
+
await setAllDetails.setIntegrationsDetails();
|
|
16
|
+
await setAllDetails.setSuiteDetails();
|
|
17
|
+
await setAllDetails.setTestDataDetails();
|
|
18
|
+
|
|
41
19
|
},
|
|
42
20
|
|
|
43
21
|
before: function (capabilities, specs) {
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const getDataById = require("../api/readTestdata");
|
|
2
|
+
const exeDetails = require("../api/getexecutionDetails")
|
|
3
|
+
const getintegrationdetails = require("../api/getintegrationDetails");
|
|
4
|
+
const getLoginToken = require("../api/loginapi");
|
|
5
|
+
const getSuiteDetails = require("../api/getsuiteDetails");
|
|
6
|
+
|
|
7
|
+
const { LocalStorage } = require('node-localstorage');
|
|
8
|
+
global.BUFFER = new LocalStorage('./storage');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async function setEnvVariables() {
|
|
12
|
+
BUFFER.setItem("TOTAL_DURATION", 0);
|
|
13
|
+
BUFFER.setItem("EXECUTION_ID", process.env.EXECUTION_ID);
|
|
14
|
+
BUFFER.setItem("INTEGRATION_ID", process.env.INTEGRATION_ID);
|
|
15
|
+
BUFFER.setItem("ORGANISATION_DOMAIN_URL", process.env.ORGANISATION_DOMAIN_URL);
|
|
16
|
+
BUFFER.setItem("SERVICE_USER", "frothbot@roboticodigital.com");
|
|
17
|
+
BUFFER.setItem("SERVICE_PASSWORD", "RnJvdGh0ZXN0b3BzQDU1NQ==");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async function setLoginToken() {
|
|
21
|
+
try {
|
|
22
|
+
const getToken = await getLoginToken(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), BUFFER.getItem("SERVICE_USER"), BUFFER.getItem("SERVICE_PASSWORD"));
|
|
23
|
+
process.env.LOGIN_TOKEN = getToken;
|
|
24
|
+
BUFFER.setItem("LOGIN_TOKEN", getToken)
|
|
25
|
+
} catch (error) {
|
|
26
|
+
// console.error('Error in main function:', error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function setExecutionDetails() {
|
|
31
|
+
try {
|
|
32
|
+
const getExeDetails = await exeDetails.getExecuitonDetails(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), process.env.LOGIN_TOKEN, BUFFER.getItem("EXECUTION_ID"));
|
|
33
|
+
BUFFER.setItem("AUTOMATION_SUITE_ID", getExeDetails.automation_suite_id);
|
|
34
|
+
|
|
35
|
+
} catch (error) {
|
|
36
|
+
// console.error('Error in main function:', error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function setIntegrationsDetails() {
|
|
41
|
+
try {
|
|
42
|
+
const getIntegrationDetails = await getintegrationdetails(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), process.env.LOGIN_TOKEN, BUFFER.getItem("INTEGRATION_ID"));
|
|
43
|
+
if (getIntegrationDetails.product === "BrowserStack") {
|
|
44
|
+
process.env.BROWSERSTACK_USERNAME = getIntegrationDetails.username;
|
|
45
|
+
process.env.BROWSERSTACK_ACCESS_KEY = getIntegrationDetails.token;
|
|
46
|
+
BUFFER.setItem("BROWSERSTACK_USERNAME", process.env.BROWSERSTACK_USERNAME);
|
|
47
|
+
BUFFER.setItem("BROWSERSTACK_ACCESS_KEY", process.env.BROWSERSTACK_ACCESS_KEY);
|
|
48
|
+
}
|
|
49
|
+
} catch (error) {
|
|
50
|
+
// console.error('Error in main function:', error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function setSuiteDetails() {
|
|
54
|
+
try {
|
|
55
|
+
const getSuiteDetail = await getSuiteDetails(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), process.env.LOGIN_TOKEN, BUFFER.getItem("AUTOMATION_SUITE_ID"));
|
|
56
|
+
process.env.BROWSERSTACK_APP_PATH = getSuiteDetail.browser_stack_urls;
|
|
57
|
+
console.log("BROWSERSTACK_APP_PATH"+BROWSERSTACK_APP_PATH)
|
|
58
|
+
process.env.TESTDATA_ID = getSuiteDetail.test_data_id;
|
|
59
|
+
|
|
60
|
+
} catch (error) {
|
|
61
|
+
// console.error('Error in main function:', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function setTestDataDetails() {
|
|
65
|
+
try {
|
|
66
|
+
const jsonobject = await getDataById(BUFFER.getItem("ORGANISATION_DOMAIN_URL"), process.env.LOGIN_TOKEN, BUFFER.getItem("TESTDATA_ID"));
|
|
67
|
+
if (jsonobject == null) {
|
|
68
|
+
console.log("Test data is not available");
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
BUFFER.setItem("BUFFER", JSON.stringify(jsonobject))
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
} catch (error) {
|
|
75
|
+
// console.error('Error in main function:', error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
module.exports = {
|
|
79
|
+
setEnvVariables,
|
|
80
|
+
setLoginToken,
|
|
81
|
+
setExecutionDetails,
|
|
82
|
+
setIntegrationsDetails,
|
|
83
|
+
setSuiteDetails,
|
|
84
|
+
setTestDataDetails
|
|
85
|
+
};
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "froth-webdriverio-framework",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"readme": "WendriverIO Integration with [BrowserStack]",
|
|
5
5
|
"description": "WebdriverIO and BrowserStack App Automate",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"build": "webpack",
|
|
9
8
|
"wdio:ios": "npx wdio ./ios.conf.js",
|
|
10
9
|
"wdio:android": "npx wdio ./android.conf.js",
|
|
11
10
|
"wdio:web": "npx wdio ./web.conf.js",
|
package/config/setenvvariable.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
|
|
4
|
-
function setEnvVariablesFromJson() {
|
|
5
|
-
const jsonFilePath = path.resolve(__dirname, 'data.json');
|
|
6
|
-
const jsonData = JSON.parse(fs.readFileSync(jsonFilePath, 'utf-8'));
|
|
7
|
-
|
|
8
|
-
Object.keys(jsonData).forEach(key => {
|
|
9
|
-
process.env[key.toUpperCase()] = jsonData[key];
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
setEnvVariablesFromJson();
|