UNPKG

donobu

Version:

Create browser automations with an LLM agent and replay them as Playwright scripts.

49 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RunAccessibilityTestTool = void 0; const Tool_1 = require("./Tool"); const JsonUtils_1 = require("../utils/JsonUtils"); class RunAccessibilityTestTool extends Tool_1.Tool { constructor() { super(RunAccessibilityTestTool.NAME, 'Run an web accessibility (i.e. axe-core) test on the current webpage.', 'RunAccessibilityTestToolCoreParameters', 'RunAccessibilityTestToolGptParameters'); } async call(context, _parameters) { const page = context.page; // Run the Axe-core analysis const fullResultStr = (await page.evaluate(() => { return window.axe.run().then((results) => { return JSON.stringify(results); }); })); const fullResult = JsonUtils_1.JsonUtils.jsonStringToJsonObject(fullResultStr); const violations = fullResult.violations; if (!violations || violations.length === 0) { return { isSuccessful: true, forLlm: 'No accessibility violations found.', metadata: fullResult, }; } // Summarize the violations using "help" as the key const violationSummary = new Map(); for (const violation of violations) { violationSummary.set(violation.help, (violationSummary.get(violation.help) ?? 0) + violation.nodes.length); } // Build the summary report const summaryReport = []; violationSummary.forEach((count, helpText) => { summaryReport.push(`${count} violations found for: ${helpText}`); }); return { isSuccessful: true, forLlm: summaryReport.join('\n'), metadata: fullResult, }; } async callFromGpt(context, parameters) { return this.call(context, parameters); } } exports.RunAccessibilityTestTool = RunAccessibilityTestTool; RunAccessibilityTestTool.NAME = 'runAccessibilityTest'; //# sourceMappingURL=RunAccessibilityTestTool.js.map