From 9eca135317e62f91d72360115a406e329324aad1 Mon Sep 17 00:00:00 2001 From: Andy Kuny Date: Mon, 23 Oct 2023 15:55:20 -0400 Subject: [PATCH] Integrate scan into db service --- entities/core-result.entity.ts | 7 +++-- libs/core-scanner/src/core-scanner.service.ts | 11 ++++--- .../core-results/core-result.service.spec.ts | 10 +++++++ .../src/core-results/core-result.service.ts | 29 +++++++++++++++++++ 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/entities/core-result.entity.ts b/entities/core-result.entity.ts index 34893d6f..f9e649b3 100644 --- a/entities/core-result.entity.ts +++ b/entities/core-result.entity.ts @@ -22,6 +22,7 @@ export type CoreResultPages = { robotsTxt: ScanPage.RobotsTxtPageScan; sitemapXml: ScanPage.SitemapXmlPageScan; dns: ScanPage.DnsPageScan; + accessibility: ScanPage.AccessibilityPageScan; }; @Entity() @@ -374,17 +375,17 @@ export class CoreResult { @Column({ nullable: true }) @Expose({ name: 'missing_img_alt_issues' }) @Exclude() - missingImgAltIssues?: boolean; + missingImgAltIssues?: number; @Column({ nullable: true }) @Expose({ name: 'html_attribute_issues' }) @Exclude() - htmlAttributeIssues?: boolean; + htmlAttributeIssues?: number; @Column({ nullable: true }) @Expose({ name: 'color_contrast_issues' }) @Exclude() - colorContrastIssues?: boolean; + colorContrastIssues?: number; static getColumnNames(): string[] { // return class-transformer version of column names diff --git a/libs/core-scanner/src/core-scanner.service.ts b/libs/core-scanner/src/core-scanner.service.ts index 79a398e6..9cfc86fb 100644 --- a/libs/core-scanner/src/core-scanner.service.ts +++ b/libs/core-scanner/src/core-scanner.service.ts @@ -39,14 +39,13 @@ export class CoreScannerService robotsTxt: await this.runRobotsTxtScan(browser, input, scanLogger), sitemapXml: await this.runSitemapXmlScan(browser, input, scanLogger), dns: await this.runDnsScan(input.url, scanLogger), + accessibility: await this.runAccessibilityScan( + browser, + input, + scanLogger, + ), }; - const a11yScanResults = await this.runAccessibilityScan( - browser, - input, - scanLogger, - ); - scanLogger.info({ result }, 'solutions scan results'); return result; diff --git a/libs/database/src/core-results/core-result.service.spec.ts b/libs/database/src/core-results/core-result.service.spec.ts index 017404e3..d66df6c3 100644 --- a/libs/database/src/core-results/core-result.service.spec.ts +++ b/libs/database/src/core-results/core-result.service.spec.ts @@ -193,6 +193,16 @@ describe('CoreResultService', () => { }, }, }, + accessibility: { + status: scanStatus, + result: { + accessibilityScan: { + missingImgAltIssues: 0, + htmlAttributeIssues: 0, + colorContrastIssues: 0, + }, + }, + }, }; const logger = mock(); diff --git a/libs/database/src/core-results/core-result.service.ts b/libs/database/src/core-results/core-result.service.ts index 98725cc3..6dee99bd 100644 --- a/libs/database/src/core-results/core-result.service.ts +++ b/libs/database/src/core-results/core-result.service.ts @@ -35,6 +35,7 @@ export class CoreResultService { this.updateRobotsTxtScanResults(coreResult, pages, logger); this.updateSitemapXmlScanResults(coreResult, pages, logger); this.updateDnsScanResults(coreResult, pages, logger); + this.updateAccessibilityScanResults(coreResult, pages, logger); return this.create(coreResult); } @@ -296,4 +297,32 @@ export class CoreResultService { coreResult.dnsHostname = null; } } + + private updateAccessibilityScanResults( + coreResult: CoreResult, + pages: CoreResultPages, + logger: Logger, + ) { + coreResult.accessibilityScanStatus = pages.accessibility.status; + + if (pages.accessibility.status === ScanStatus.Completed) { + coreResult.missingImgAltIssues = + pages.accessibility.result.accessibilityScan.missingImgAltIssues; + + coreResult.htmlAttributeIssues = + pages.accessibility.result.accessibilityScan.htmlAttributeIssues; + + coreResult.colorContrastIssues = + pages.accessibility.result.accessibilityScan.colorContrastIssues; + } else { + logger.error({ + msg: pages.accessibility.error, + page: 'accessibility', + }); + + coreResult.missingImgAltIssues = null; + coreResult.htmlAttributeIssues = null; + coreResult.colorContrastIssues = null; + } + } }