{
    "type": "test-case",
    "name": "eslint",
    "description": "Runs ESLint on all scripts loaded from the page's origin.",
    "supports": 3,
    "test": "async function () { if (!window.eslint) { await fetch(\"https://eslint.org/js/app/eslint.js\").then((response) => response.text()).then((text) => Function(text)()); } let linter = new window.eslint; let rules = Array.from(linter.getRules()).filter(([key, value]) => value.meta.docs.recommended).reduce((accumulator, [key, value]) => { accumulator[key] = \"error\"; return accumulator; }, {}); let origin = window.location.origin; let issues = {}; let resources = WebInspectorAudit.Resources.getResources(); let scripts = resources.filter((resource) => resource.url.startsWith(origin) && (new URL(resource.url)).pathname.endsWith(\".js\")); for (let script of scripts) { let content = WebInspectorAudit.Resources.getResourceContent(script.id); if (!content.data || content.base64Encoded) { continue; } let result = linter.verify(content.data, {env: {browser: true, es6: true}, rules}, {fix: false}).map(({line, endLine, column, endColumn, ruleId, message}) => { let item = {}; item.line = line; if (endLine !== line) { item.endLine = endLine; } item.column = column; if (endColumn !== column) { item.endColumn = endColumn; } item.ruleId = ruleId; item.message = message; return item; }); if (result.length) { issues[script.url.substring(origin.length + 1)] = result; } } return { ...issues, level: Object.keys(issues).length ? \"fail\" : \"pass\" }; }"
}
