UNPKG

@qualweb/core

Version:
75 lines 2.73 kB
"use strict"; 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