Advanced Reporting Configuration

Building a Page Title

The page title can be built from the page itself. Be aware that this looks into the Alfa representation of the page where the API is somewhat different from the normal DOM API. For example, to get the first <h1> heading of the page:

import { Element, Query } from "@siteimprove/alfa-dom";

const pageReportURL = Audit.run(alfaPage, {
  rules: { include: Rules.componentFilter },
}).then((alfaResult) => {
  SIP.upload(alfaResult, {
    userName: process.env.SI_USER_NAME,
    apiKey: process.env.SI_API_KEY,
    siteID: "12345",
    pageTitle: (alfaPage) =>
      Query.getElementDescendants(alfaPage.document)
        .filter(Element.isElement)
        .find(Element.hasName("h1"))
        .map((heading) => heading.textContent())
        .getOr("Unnamed page"),
  });
});

Building a Page URL

Similarly, the page URL can be built from the (Alfa representation of the) page, which can be useful typically to overwrite localhost URLs:

const pageReportURL = Audit.run(alfaPage, {
  rules: { include: Rules.comnponentFilter },
}).then((alfaResult) => {
  SIP.upload(alfaResult, {
    userName: process.env.SI_USER_NAME,
    apiKey: process.env.SI_API_KEY,
    siteID: "12345",
    pageURL: (alfaPage) =>
      alfaPage.response.url.toString().replace("localhost:8080", "example.com"),
  });
});

Building a Test Name

The testName option can also be a function producing a string from basic commit information. For example, it can be convenient to name a test after the branch it comes from:

import { getCommitInformation } from "@siteimprove/alfa-test-utils/git";
            
const gitInformation = await getCommitInformation();

const pageReportURL = Audit.run(alfaPage, {
  rules: { include: Rules.aaFilter },
}).then((alfaResult) => {
  SIP.upload(alfaResult, {
    userName: process.env.SI_USER_NAME,
    apiKey: process.env.SI_API_KEY,
    siteID: "12345",
    commitInformation: gitInformation,
    testName: (commit) =>
      `WCAG 2.2 Level AA conformance test on ${commit.BranchName}`,
  });
});

Previous: Configuring the ReportsNext: Technical Reference