-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestrunnerapi.js
83 lines (78 loc) · 2.8 KB
/
testrunnerapi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const createTestCafe = require('testcafe');
const fs = require('fs');
const path = require('path');
require('events').EventEmitter.prototype._maxListeners = 1000;
const config = require('./localConfig');
let testcafe = null;
const {exec} = require('child_process');
const group = config.api.group;
const allFilesSync = (dir, fileList = []) => {
fs.readdirSync(dir).forEach((file) => {
const filePath = path.join(dir, file)
fileList.push(
fs.statSync(filePath).isDirectory()
? allFilesSync(filePath)
: filePath
)
});
return fileList.filter((arr)=>{
return arr.length !==0;
})
};
function cleanReports() {
return new Promise((resolve, reject)=>{
// remove allure report if exist
exec('rm -rf ' + 'allure', (err, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
resolve();
});
// remove existing screenshot if exist
exec('rm -rf ' + 'reports', (err, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
resolve();
});
})
}
async function createReport(){
console.log('Opening report .....');
await exec('allure generate allure/allure-results --clean -o allure/allure-report && allure open allure/allure-report', async (err, stdout, stderr) => {
if (err) {
console.log('couldn\'t execute the allure....');
return;
}
await console.log(`stdout: ${stdout}`);
await console.log(`stderr: ${stderr}`);
});
}
try {
createTestCafe()
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();
runSuite =(suite)=>{
const runoptions = {
skipJsErrors: config.api.skipCriticalConsoleJsErrors,
quarantineMode: config.api.quarantineMode,
speed: config.api.speed,
debugMode: false,
selectorTimeout: config.api.selectorTimeOut,
assertionTimeout: config.api.assertionTimeout,
};
return runner.
src(suite)
.filter(testName => /^api/.test(testName))
.browsers(config.api.browser)
.reporter('allure')
.run(runoptions)
.catch(e => console.log('runner failed', e));
}
const testFolder = config.api.testsFolder;
const testsList = allFilesSync(testFolder);
console.log("Running tests under ", testsList);
runSuite(testsList).then(()=>testcafe.close()).then(()=> createReport())
});
}catch (e){
console.error(e)
}