You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.0 KiB
56 lines
2.0 KiB
(function (factory) { |
|
if (typeof module === "object" && typeof module.exports === "object") { |
|
var v = factory(require, exports); |
|
if (v !== undefined) module.exports = v; |
|
} |
|
else if (typeof define === "function" && define.amd) { |
|
define(["require", "exports", "./Driver"], factory); |
|
} |
|
})(function (require, exports) { |
|
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
const Driver_1 = require("./Driver"); |
|
class Tester { |
|
constructor(remoteUrl) { |
|
this.remoteUrl = remoteUrl; |
|
} |
|
runForMany(browsers, callback) { |
|
return Promise.all(browsers.map((browser) => this.runFor(browser, callback))).then(() => { |
|
}); |
|
} |
|
runFor(browser, callback) { |
|
const driver = Driver_1.Driver.create(browser, this.remoteUrl); |
|
return new Promise((resolve) => { |
|
resolve(callback(driver)); |
|
}) |
|
.then(() => { |
|
return driver.quit(); |
|
}, (error) => { |
|
return Promise.race([ |
|
driver.quit(), |
|
new Promise((resolve) => setTimeout(resolve, 2000)) |
|
]).then(() => Promise.reject(error)); |
|
}); |
|
} |
|
test(testName, callback) { |
|
return new Promise((resolve, reject) => { |
|
this.log(`Starting test '${testName}'`, 33); |
|
resolve(callback()); |
|
}) |
|
.then(() => { |
|
this.log(`test '${testName}' succeed`, 32); |
|
}, (error) => { |
|
this.log(`test '${testName}' failed`, 31); |
|
console.log(error); |
|
throw error; |
|
}); |
|
} |
|
log(content, color) { |
|
console.log(this.colorString(content, color)); |
|
} |
|
colorString(content, color = 0) { |
|
return `\x1b[${color}m${content}\x1b[0m`; |
|
} |
|
} |
|
exports.Tester = Tester; |
|
});
|
|
|