Skip to content
This repository was archived by the owner on Nov 19, 2020. It is now read-only.

Commit a28515f

Browse files
author
vu-bui
committed
2 parents e31313d + a0dcbd2 commit a28515f

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed

Marketing/Scenario-2.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
const { parseString } = require('xml2js');
2+
const request = require('request');
3+
const submitTestLog = async (requestData, projectId, qTestConfig) => {
4+
await new Promise((resolve, reject) => {
5+
request({
6+
uri: `${qTestConfig.qTestUrl}/api/v3/projects/${projectId}/auto-test-logs?type=automation`,
7+
method: 'POST',
8+
headers: {
9+
'Authorization': `bearer ${qTestConfig.token}`,
10+
'Content-Type': 'application/json',
11+
'accept': 'application/json'
12+
},
13+
body: requestData
14+
}, (err, res, body) => {
15+
if (err) { return reject(err); }
16+
console.log(body);
17+
resolve(true);
18+
});
19+
});
20+
}
21+
const submitTestResults = async (event, qTestConfig) => {
22+
let resultData = await new Promise((resolve, reject) => {
23+
parseString(event.result, (err, result) => {
24+
if (err) {
25+
reject(err);
26+
}
27+
resolve(result);
28+
});
29+
});
30+
let testCases = resultData.testsuite.testcase;
31+
let requestData = {
32+
name: event.jobName,
33+
test_logs: [],
34+
test_cycle: event.testcycle
35+
};
36+
for (let i = 0; i < testCases.length; i++) {
37+
let testCase = testCases[i]['$'];
38+
let status = 'PASS';
39+
if (testCases[i].failure) {
40+
status = 'FAIL';
41+
}
42+
if (testCases[i].skipped) {
43+
status = 'SKIP';
44+
}
45+
requestData.test_logs.push({
46+
status: status,
47+
// set start and end date to current time
48+
exe_start_date: new Date(),
49+
exe_end_date: new Date(),
50+
name: testCase.name,
51+
automation_content: `${testCase.classname}.${testCase.name}`,
52+
module_names: ['Automation Module']
53+
});
54+
}
55+
await submitTestLog(JSON.stringify(requestData), event.projectID, qTestConfig);
56+
};
57+
exports.handler = async (event, { clientContext: { constants, triggers } }, callback) => {
58+
await submitTestResults(event, { qTestUrl: constants.qTestUrl, token: constants.qTestToken});
59+
console.log('Done processing test results.');
60+
}

Marketing/Scenario-4.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
const { parseString } = require('xml2js');
2+
const request = require('request');
3+
const submitTestLog = async (requestData, projectId, qTestConfig) => {
4+
await new Promise((resolve, reject) => {
5+
request({
6+
uri: `${qTestConfig.qTestUrl}/api/v3/projects/${projectId}/auto-test-logs?type=automation`,
7+
method: 'POST',
8+
headers: {
9+
'Authorization': `bearer ${qTestConfig.token}`,
10+
'Content-Type': 'application/json',
11+
'accept': 'application/json'
12+
},
13+
body: requestData
14+
}, (err, res, body) => {
15+
if (err) { return reject(err); }
16+
console.log(body);
17+
resolve(true);
18+
});
19+
});
20+
}
21+
const submitTestResults = async (event, qTestConfig) => {
22+
let resultData = await new Promise((resolve, reject) => {
23+
parseString(event.result, (err, result) => {
24+
if (err) {
25+
reject(err);
26+
}
27+
resolve(result);
28+
});
29+
});
30+
let testCases = resultData.testsuite.testcase;
31+
let requestData = {
32+
name: event.jobName,
33+
test_logs: [],
34+
test_cycle: event.testcycle
35+
};
36+
for (let i = 0; i < testCases.length; i++) {
37+
let testCase = testCases[i]['$'];
38+
let status = 'PASS';
39+
if (testCases[i].failure) {
40+
status = 'FAIL';
41+
}
42+
if (testCases[i].skipped) {
43+
status = 'SKIP';
44+
}
45+
requestData.test_logs.push({
46+
status: status,
47+
// set start and end date to current time
48+
exe_start_date: new Date(),
49+
exe_end_date: new Date(),
50+
name: testCase.name,
51+
automation_content: `${testCase.classname}.${testCase.name}`,
52+
module_names: ['Automation Module']
53+
});
54+
}
55+
await submitTestLog(JSON.stringify(requestData), event.projectID, qTestConfig);
56+
};
57+
const triggerSlackWebhook = async (webhook, content) => {
58+
await new Promise((resolve, reject) => {
59+
request({
60+
uri: webhook,
61+
method: 'POST',
62+
json: { text: content }
63+
}, (err, res, body) => {
64+
if (err) { return reject(err); }
65+
resolve();
66+
});
67+
});
68+
};
69+
exports.handler = async (event, { clientContext: { constants, triggers } }, callback) => {
70+
await submitTestResults(event, { qTestUrl: constants.qTestUrl, token: constants.qTestToken});
71+
await triggerSlackWebhook(constants.SlackWebhook, 'Created test case in qTest Manager');
72+
console.log('Done processing test results.');
73+
}

0 commit comments

Comments
 (0)