diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-and-feedback-url.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-and-feedback-url.snap.html index 997d8050448..b9c8705ed63 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-and-feedback-url.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-and-feedback-url.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section-by-tag.input.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section-by-tag.input.snap.html index 1786af69210..6bd6a672a12 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section-by-tag.input.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section-by-tag.input.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section.input.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section.input.snap.html index 507b7855c75..b82f2083b41 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section.input.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-expand-pass-section.input.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-with-incomplete-checks.input.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-with-incomplete-checks.input.snap.html index b26bf3e3f07..4027b06b26f 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-with-incomplete-checks.input.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues-with-incomplete-checks.input.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues.snap.html index da813d02664..5d2563aba22 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-ai-issues.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-feedback-url.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-feedback-url.snap.html index afaaec5f2d3..7094d7d577e 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-feedback-url.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-feedback-url.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-issues.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-issues.snap.html index 78ba1e2588c..0ca17df0520 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-issues.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-with-undefined-feedback-url.snap.html b/packages/report-e2e-tests/src/examples/axe-results-with-undefined-feedback-url.snap.html index 150e457d16e..290b8380b40 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-with-undefined-feedback-url.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-with-undefined-feedback-url.snap.html @@ -2082,4 +2082,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/axe-results-without-issues.snap.html b/packages/report-e2e-tests/src/examples/axe-results-without-issues.snap.html index 8b12bbf0925..d3eacfb4ce9 100644 --- a/packages/report-e2e-tests/src/examples/axe-results-without-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/axe-results-without-issues.snap.html @@ -1693,4 +1693,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/combined-results-with-ai-issues-and-feedback-url.snap.html b/packages/report-e2e-tests/src/examples/combined-results-with-ai-issues-and-feedback-url.snap.html index 2804abb7c9c..68e8aa46efa 100644 --- a/packages/report-e2e-tests/src/examples/combined-results-with-ai-issues-and-feedback-url.snap.html +++ b/packages/report-e2e-tests/src/examples/combined-results-with-ai-issues-and-feedback-url.snap.html @@ -1838,4 +1838,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/combined-results-with-baseline-aware-issues.snap.html b/packages/report-e2e-tests/src/examples/combined-results-with-baseline-aware-issues.snap.html index 8bc5b0906f5..fac022cf330 100644 --- a/packages/report-e2e-tests/src/examples/combined-results-with-baseline-aware-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/combined-results-with-baseline-aware-issues.snap.html @@ -1862,4 +1862,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/combined-results-with-issues-and-feedback-url.snap.html b/packages/report-e2e-tests/src/examples/combined-results-with-issues-and-feedback-url.snap.html index 12020cb3928..8439004e4a6 100644 --- a/packages/report-e2e-tests/src/examples/combined-results-with-issues-and-feedback-url.snap.html +++ b/packages/report-e2e-tests/src/examples/combined-results-with-issues-and-feedback-url.snap.html @@ -1838,4 +1838,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/combined-results-with-issues.snap.html b/packages/report-e2e-tests/src/examples/combined-results-with-issues.snap.html index 12020cb3928..8439004e4a6 100644 --- a/packages/report-e2e-tests/src/examples/combined-results-with-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/combined-results-with-issues.snap.html @@ -1838,4 +1838,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/combined-results-without-issues.snap.html b/packages/report-e2e-tests/src/examples/combined-results-without-issues.snap.html index ec81a203a10..d7429202e93 100644 --- a/packages/report-e2e-tests/src/examples/combined-results-without-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/combined-results-without-issues.snap.html @@ -1733,4 +1733,4 @@ void copyToClipboard(instanceId); }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/summary-scan-with-issues.snap.html b/packages/report-e2e-tests/src/examples/summary-scan-with-issues.snap.html index f7119a8c206..7f633de6db0 100644 --- a/packages/report-e2e-tests/src/examples/summary-scan-with-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/summary-scan-with-issues.snap.html @@ -1656,4 +1656,4 @@ } }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report-e2e-tests/src/examples/summary-scan-without-issues.snap.html b/packages/report-e2e-tests/src/examples/summary-scan-without-issues.snap.html index 31ea861c78a..2eb86e80106 100644 --- a/packages/report-e2e-tests/src/examples/summary-scan-without-issues.snap.html +++ b/packages/report-e2e-tests/src/examples/summary-scan-without-issues.snap.html @@ -1656,4 +1656,4 @@ } }); } -})(document) \ No newline at end of file +})(document) \ No newline at end of file diff --git a/packages/report/README.md b/packages/report/README.md index a855c4c7fd9..8c4aee17058 100644 --- a/packages/report/README.md +++ b/packages/report/README.md @@ -42,7 +42,8 @@ test('my accessibility test', async () => { const html = reporter.fromAxeResult({ results, description: "description of report", - serviceName: "service name", + serviceName: "service name", // Optional, read from `testRunner` if not provided + serviceVersion: "1.0.0", // Optional, read from `testRunner` if not provided scanContext: { pageTitle: await testPage.title(), } diff --git a/src/reports/package/accessibilityInsightsReport.d.ts b/src/reports/package/accessibilityInsightsReport.d.ts index 9b1cfbe0f10..04503644ce8 100644 --- a/src/reports/package/accessibilityInsightsReport.d.ts +++ b/src/reports/package/accessibilityInsightsReport.d.ts @@ -14,7 +14,8 @@ declare namespace AccessibilityInsightsReport { export type AxeReportParameters = { results: axe.AxeResults, description: string; - serviceName: string; + serviceName?: string; + serviceVersion?: string; scanContext: ScanContext; feedbackURL?: string; expandPassSectionDetails?: ExpandPassSectionParameter; @@ -48,7 +49,8 @@ declare namespace AccessibilityInsightsReport { }; export type SummaryReportParameters = { - serviceName: string, + serviceName?: string, + serviceVersion?: string, axeVersion: string, userAgent: string, browserResolution: string, @@ -121,7 +123,8 @@ declare namespace AccessibilityInsightsReport { } export type CombinedReportParameters = { - serviceName: string, + serviceName?: string, + serviceVersion?: string, axeVersion: string, userAgent: string, browserResolution: string, diff --git a/src/reports/package/footer-text-for-service.tsx b/src/reports/package/footer-text-for-service.tsx index 33bf4e9eb77..c32bd63338b 100644 --- a/src/reports/package/footer-text-for-service.tsx +++ b/src/reports/package/footer-text-for-service.tsx @@ -8,14 +8,12 @@ import { ToolLink } from 'reports/components/report-sections/tool-link'; export const FooterTextForService = NamedFC('FooterTextForService', ({ scanMetadata }) => { const toolData = scanMetadata.toolData; + const { applicationProperties, scanEngineProperties } = toolData; + const versionSuffix = applicationProperties.version ? ` ${applicationProperties.version}` : ''; return ( <> - This automated checks result was generated using the {toolData.applicationProperties.name}{' '} - that helps find some of the most common accessibility issues. The scan was{' '} - performed in a clean browser environment, using {toolData.scanEngineProperties.name}{' '} - {toolData.scanEngineProperties.version} and {toolData.applicationProperties.environmentName}{' '} - with a display resolution of {toolData.applicationProperties.resolution}. For a complete{' '} - WCAG 2.1 compliance assessment please visit{' '}. + This automated checks result was generated by {applicationProperties.name}{versionSuffix}, a tool that helps find some of the most common accessibility issues. The scan was{' '} + performed in a clean browser environment, using {scanEngineProperties.name} {scanEngineProperties.version} and {applicationProperties.environmentName} with a display resolution of {applicationProperties.resolution}. For a complete WCAG 2.1 compliance assessment please visit . ); }); diff --git a/src/reports/package/reporter-factory.ts b/src/reports/package/reporter-factory.ts index ab91b5346b9..58756c6dc37 100644 --- a/src/reports/package/reporter-factory.ts +++ b/src/reports/package/reporter-factory.ts @@ -40,6 +40,28 @@ import { GetGuidanceTagsFromGuidanceLinks } from '../../common/get-guidance-tags import { AxeReportParameters, CombinedReportParameters, ReporterFactory, SummaryReportParameters } from './accessibilityInsightsReport'; import { Reporter } from './reporter'; +interface TestRunnerInfo { + name?: string; + version?: string; +} + +function deriveServiceInfo( + serviceName: string | undefined, + serviceVersion: string | undefined, + testRunner?: TestRunnerInfo, +) { + const DEFAULT_SERVICE_NAME = 'Accessibility Insights'; + const effectiveServiceName = + (serviceName && serviceName.trim()) || + (testRunner?.name && String(testRunner.name).trim()) || + DEFAULT_SERVICE_NAME; + + const effectiveServiceVersion = + serviceVersion ?? testRunner?.version ?? null; + + return { effectiveServiceName, effectiveServiceVersion }; +} + const axeResultsReportGenerator = (parameters: AxeReportParameters) => { const { results: { @@ -56,8 +78,13 @@ const axeResultsReportGenerator = (parameters: AxeReportParameters) => { pageTitle: targetPageTitle, }, serviceName, + serviceVersion, } = parameters; + const testRunner: TestRunnerInfo = (parameters.results as any).testRunner || {}; + const { effectiveServiceName, effectiveServiceVersion } = + deriveServiceInfo(serviceName, serviceVersion, testRunner); + const reactStaticRenderer = new ReactStaticRenderer(); const fixInstructionProcessor = new FixInstructionProcessor(); const recommendColor = new RecommendColor(); @@ -65,8 +92,8 @@ const axeResultsReportGenerator = (parameters: AxeReportParameters) => { const toolData = createToolData( 'axe-core', axeVersion, - serviceName, - null, + effectiveServiceName, + effectiveServiceVersion, userAgent, `${windowWidth}x${windowHeight}` ); @@ -118,13 +145,15 @@ const axeResultsReportGenerator = (parameters: AxeReportParameters) => { }; const summaryResultsReportGenerator = (parameters: SummaryReportParameters) => { - const { serviceName, axeVersion, userAgent, browserResolution } = parameters; + const { serviceName, serviceVersion, axeVersion, userAgent, browserResolution } = parameters; + const { effectiveServiceName, effectiveServiceVersion } = + deriveServiceInfo(serviceName, serviceVersion); const toolData = createToolData( 'axe-core', axeVersion, - serviceName, - null, + effectiveServiceName, + effectiveServiceVersion, userAgent, browserResolution, ); @@ -145,13 +174,15 @@ const summaryResultsReportGenerator = (parameters: SummaryReportParameters) => { }; const combinedResultsReportGenerator = (parameters: CombinedReportParameters) => { - const { serviceName, axeVersion, userAgent, browserResolution } = parameters; + const { serviceName, serviceVersion, axeVersion, userAgent, browserResolution } = parameters; + const { effectiveServiceName, effectiveServiceVersion } = + deriveServiceInfo(serviceName, serviceVersion); const toolData = createToolData( 'axe-core', axeVersion, - serviceName, - null, + effectiveServiceName, + effectiveServiceVersion, userAgent, browserResolution, ); diff --git a/src/tests/unit/tests/reports/package/__snapshots__/footer-text-for-service.test.tsx.snap b/src/tests/unit/tests/reports/package/__snapshots__/footer-text-for-service.test.tsx.snap index 246e382ba19..22eb077b23e 100644 --- a/src/tests/unit/tests/reports/package/__snapshots__/footer-text-for-service.test.tsx.snap +++ b/src/tests/unit/tests/reports/package/__snapshots__/footer-text-for-service.test.tsx.snap @@ -2,7 +2,7 @@ exports[`FooterTextForService renders: footer 1`] = ` - This automated checks result was generated using the app-name that helps find some of the most common accessibility issues. The scan was performed in a clean browser environment, using engine-name engine-version and environmentName with a display resolution of 800x600. For a complete WCAG 2.1 compliance assessment please visit + This automated checks result was generated by app-name app-version, a tool that helps find some of the most common accessibility issues. The scan was performed in a clean browser environment, using engine-name engine-version and environmentName with a display resolution of 800x600. For a complete WCAG 2.1 compliance assessment please visit .