UNPKG

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
'use strict'; 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