html-reporter
Version:
Html-reporter and GUI for viewing and managing results of a tests run. Currently supports Testplane and Hermione.
125 lines • 5.26 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.closeDatabase = exports.getTableRows = exports.getSuitesTableRows = exports.getMainDatabaseUrl = exports.connectToDatabase = exports.mergeDatabases = exports.fetchDataFromDatabases = void 0;
/* eslint-env browser */
const lodash_1 = require("lodash");
/** @type Record<string, (...args: unknown[]) => unknown> */
const common_1 = __importStar(require("./common"));
const common_utils_1 = require("../common-utils");
const database_1 = require("../constants/database");
function fetchDataFromDatabases(dbJsonUrls, onDownloadProgress) {
const loadDbJsonUrl = (dbJsonUrl) => (0, common_utils_1.fetchFile)(dbJsonUrl);
const prepareUrls = (urls, baseUrl) => (0, common_utils_1.normalizeUrls)(urls, baseUrl);
const formatData = (dbJsonUrl, jsonResponseStatus = 'unknown') => {
return { url: dbJsonUrl, status: jsonResponseStatus, data: null };
};
const loadDbUrl = async (dbUrl) => {
const loadOptions = { responseType: 'arraybuffer' };
if (typeof onDownloadProgress === 'function') {
loadOptions.onDownloadProgress = (e) => {
onDownloadProgress(dbUrl, e.loaded / e.total);
};
}
const { data, status } = await (0, common_utils_1.fetchFile)(dbUrl, loadOptions);
return { url: dbUrl, status, data };
};
return (0, common_1.handleDatabases)(dbJsonUrls, { loadDbJsonUrl, prepareUrls, formatData, loadDbUrl });
}
exports.fetchDataFromDatabases = fetchDataFromDatabases;
async function mergeDatabases(dataForDbs) {
const SQL = await window.initSqlJs();
const fetchedDataArray = dataForDbs.map(data => new Uint8Array(data));
const connections = fetchedDataArray.map(data => new SQL.Database(data));
if (connections.length === 0) {
return null;
}
else if (connections.length === 1) {
return connections[0];
}
const sumOfChunkSizes = fetchedDataArray.reduce((acc, data) => {
return acc + data.length;
}, 0);
const mergedDbConnection = new SQL.Database(undefined, sumOfChunkSizes);
const dbPaths = connections.map(db => db.filename);
(0, common_1.mergeTables)({ db: mergedDbConnection, dbPaths, getExistingTables: (statement) => {
const tables = [];
while (statement.step()) {
tables.push(...statement.get());
}
return tables;
} });
connections.forEach(db => db.close());
return mergedDbConnection;
}
exports.mergeDatabases = mergeDatabases;
async function connectToDatabase(dbUrl) {
const mainDatabaseUrl = new URL(dbUrl);
const { data } = await (0, common_utils_1.fetchFile)(mainDatabaseUrl.href, {
responseType: 'arraybuffer'
});
const SQL = await window.initSqlJs();
return new SQL.Database(new Uint8Array(data));
}
exports.connectToDatabase = connectToDatabase;
function getMainDatabaseUrl() {
return new URL(database_1.LOCAL_DATABASE_NAME, window.location.href);
}
exports.getMainDatabaseUrl = getMainDatabaseUrl;
function getSuitesTableRows(db) {
const databaseRows = getTableRows(db, database_1.DB_SUITES_TABLE_NAME);
if ((0, lodash_1.isEmpty)(databaseRows)) {
return;
}
return databaseRows.values.sort(common_1.compareDatabaseRowsByTimestamp);
}
exports.getSuitesTableRows = getSuitesTableRows;
function getTableRows(db, tableName) {
const [databaseRows] = db.exec((0, common_1.selectAllQuery)(tableName));
if (!databaseRows) {
console.warn(`Table "${tableName}" is empty`);
return [];
}
return databaseRows;
}
exports.getTableRows = getTableRows;
function closeDatabase(db) {
db.close();
}
exports.closeDatabase = closeDatabase;
__exportStar(require("./common"), exports);
exports.default = {
...common_1.default,
fetchDataFromDatabases,
mergeDatabases,
connectToDatabase,
getMainDatabaseUrl,
getSuitesTableRows,
closeDatabase
};
//# sourceMappingURL=client.js.map