@uuv/assistant
Version:
UUV Helper used to improve the life of testers and developers by generating cucumber phrases from the GUI.
88 lines (87 loc) • 3.83 kB
JavaScript
;
/**
* Software Name : UUV
*
* SPDX-License-Identifier: MIT
*
* This software is distributed under the MIT License,
* see the "LICENSE" file for more details
*
* Authors: NJAKO MOLOM Louis Fredice & SERVICAL Stanley
* Software description: Make test writing fast, understandable by any human
* understanding English or French.
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TableAndGridService = void 0;
const dom_accessibility_api_1 = require("dom-accessibility-api");
const abstract_component_service_1 = require("./abstract-component-service");
class TableAndGridService extends abstract_component_service_1.AbstractComponentService {
buildResultSentence(selectedArray) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
const sentences = [];
const tableName = (0, dom_accessibility_api_1.computeAccessibleName)(selectedArray);
let headers;
const indefiniteArticle = "a";
let roleName;
let values;
let cellRoleName;
const sentenceKey = "key.then.element.withRoleAndNameAndContent";
const role = (_a = (0, dom_accessibility_api_1.getRole)(selectedArray)) !== null && _a !== void 0 ? _a : "";
switch (role) {
case "table": {
const headerAndDataRows = this.extractHeaderAndDataRows(selectedArray);
headers = headerAndDataRows.headers;
values = headerAndDataRows.values;
roleName = "table";
cellRoleName = "cell";
break;
}
case "grid": {
const headerAndDataRows = this.extractHeaderAndDataRows(selectedArray);
headers = headerAndDataRows.headers;
values = headerAndDataRows.values;
roleName = "grid";
cellRoleName = "gridcell";
break;
}
case "treegrid": {
const headerAndDataRows = this.extractHeaderAndDataRows(selectedArray);
headers = headerAndDataRows.headers;
values = headerAndDataRows.values;
roleName = "treegrid";
cellRoleName = "gridcell";
break;
}
}
const result = this.expectTranslator.computeTableSentenceFromKeyNameAndContent(sentenceKey, indefiniteArticle, roleName, tableName, headers, values, cellRoleName);
sentences.push(result);
return sentences;
});
}
extractHeaderAndDataRows(selectedArray) {
const rows = Array.from(selectedArray.querySelectorAll('[role=row], tr'));
if (rows.length > 0) {
return {
headers: rows[0],
values: rows.slice(1)
};
}
else {
return {
headers: [],
values: []
};
}
}
}
exports.TableAndGridService = TableAndGridService;