webdriverio
Version:
Next-gen browser and mobile automation test framework for Node.js
38 lines (28 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = uploadFile;
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var _archiver = _interopRequireDefault(require("archiver"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function uploadFile(localPath) {
if (typeof localPath !== 'string') {
throw new Error('number or type of arguments don\'t agree with uploadFile command');
}
if (typeof this.file !== 'function') {
throw new Error(`The uploadFile command is not available in ${this.capabilities.browserName}`);
}
let zipData = [];
let source = _fs.default.createReadStream(localPath);
return new Promise((resolve, reject) => {
(0, _archiver.default)('zip').on('error', err => reject(err)).on('data', data => zipData.push(data)).on('end', () => this.file(Buffer.concat(zipData).toString('base64')).then(resolve, reject)).append(source, {
name: _path.default.basename(localPath)
}).finalize(err => {
if (err) {
reject(err);
}
});
});
}