UNPKG

hae-uitest

Version:

A UI Test Framework for Huawei HAE

96 lines (78 loc) 2.82 kB
//根据 TML 文件生成对应的测试脚本 var fs = require('fs'); var path = require('path'); var utils = require('./utils'); var xml2js = require('xml2js'); var json2wts = require('./json2wts'); var config = require('../config'); var parser = new xml2js.Parser(); //检查 TML 生成的 JSON 合法性 var checkJson = function(json) { var result = true; try { result = result && 1 === json.tml.config.length; result = result && 1 === json.tml.data.length; result = result && 1 === json.tml.test.length; } catch (e) { result = false; } return result; } //将 TML 转化为 WTS module.exports = function(tmlContent, taskConf, tmlIndex, callback) { //将 tml 转换为 json parser.parseString(tmlContent, function(err, json) { if (err) callback(err, null); var wtsList = []; if (!checkJson(json)) { callback.call(this, new Error('illegal TML format.'), null); return false; } //fs.writeFileSync('D:\\tml2json.json', JSON.stringify(json, null, '\t'), encoding = 'utf8'); //为 tml 设置 desc taskConf.testScripts[tmlIndex].desc = json.tml.test[0].$.desc; //合并 taskConf 与 config.js var arrConf = ['browserName', 'version', 'platform'] for (var i = 0; i < arrConf.length; i++) { if (arrConf[i] in taskConf.testScripts[tmlIndex]) { config.capabilities[arrConf[i]] = taskConf.testScripts[tmlIndex][arrConf[i]]; } else { taskConf.testScripts[tmlIndex][arrConf[i]] = config.capabilities[arrConf[i]]; } } //合并 tml.config 与 config.js var tmlConf = 'object' === typeof json.tml.config[0] ? json.tml.config[0] : {}; for (var x in tmlConf) { var tempConfig = (x in config) ? config[x] : (config[x] = {}); var tempTmlConf = tmlConf[x][0].$; for (var y in tempTmlConf) { tempConfig[y] = tempTmlConf[y]; } } //console.dir(config); //设置合并后的配置 json.config = config; //如果 dataGroup 设置为 'all' 则遍历 data 的 group 来生成 wts if ('all' === json.tml.test[0].$.dataGroup) { for (var i = 0; i < json.tml.data[0].group.length; i++) { json.tml.test[0].$.dataGroup = json.tml.data[0].group[i].$.name; makeWts(json, i); }; } else { makeWts(json, 0); } //根据 dataGroup 的配置来生成 wts function makeWts(json, i) { var wts = {}; wts.timestamp = (parseInt(utils.getTimestamp()) + i).toString(); wts.dataGroup = json.tml.test[0].$.dataGroup; //设置截图目录 json.screenshotPath = path.join(taskConf.screenshotPath, taskConf.fulldate, taskConf.timestamp, wts.timestamp) .replace(/\\/g,'\\\\'); //将 json 转换为 wts wts.content = json2wts(json); wtsList.push(wts); } callback(null, wtsList); }); }