@qualweb/core
Version:
QualWeb evaluator core engine
75 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EvaluationManager = void 0;
const crypto_1 = require("crypto");
const Report_object_1 = require("./Report.object");
class EvaluationManager {
page;
constructor(page) {
this.page = page;
}
async evaluate(options) {
const testingData = await this.page.getTestingData(options);
const systemData = await this.getSystemData();
const report = new Report_object_1.Report(systemData);
for (const moduleToExecute of options.modules) {
const moduleReport = await moduleToExecute.execute(this.page, options.translate, testingData);
report.addModuleReport(moduleReport);
}
return report.getCopy();
}
async getSystemData() {
const [html, title, elementCount, userAgent] = await Promise.all([
this.page.getOuterHTML(),
this.page.getTitle(),
this.page.getNumberOfHTMLElements(),
this.page.getUserAgent()
]);
const viewport = this.page.getViewport();
return {
name: 'QualWeb',
description: 'QualWeb is an automatic accessibility evaluator for webpages.',
version: '4.0.0',
homepage: 'http://www.qualweb.di.fc.ul.pt/',
date: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''),
hash: (0, crypto_1.randomBytes)(64).toString('hex'),
url: this.page.getInputUrl() ? this.parseUrl() : undefined,
page: {
viewport: {
mobile: viewport?.isMobile,
landscape: viewport?.isLandscape,
userAgent,
resolution: {
width: viewport?.width,
height: viewport?.height
}
},
dom: {
html,
title,
elementCount
}
}
};
}
parseUrl() {
const inputUrl = this.page.getInputUrl() ?? '';
const completeUrl = this.page.getFinalUrl();
const urlObject = new URL(completeUrl);
const protocol = urlObject.protocol.split(':')[0];
const domainName = urlObject.origin.split('/')[2];
const tmp = domainName.split('.');
const domain = tmp[tmp.length - 1];
const uri = urlObject.pathname;
return {
inputUrl,
protocol,
domainName,
domain,
uri,
completeUrl
};
}
}
exports.EvaluationManager = EvaluationManager;
//# sourceMappingURL=EvaluationManager.object.js.map