{"id":18494226,"url":"https://github.com/workleap/azure-pipelines-lighthouse","last_synced_at":"2025-08-17T18:42:17.981Z","repository":{"id":42224246,"uuid":"156751371","full_name":"workleap/azure-pipelines-lighthouse","owner":"workleap","description":"Embed Google Lighthouse HTML reports into Azure Pipelines","archived":false,"fork":false,"pushed_at":"2025-04-08T02:35:35.000Z","size":961,"stargazers_count":37,"open_issues_count":2,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-08T03:29:47.431Z","etag":null,"topics":["azure-devops","azure-devops-extension","azure-pipelines","lighthouse"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=GSoft.lighthouse-vsts","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/workleap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-08T18:30:19.000Z","updated_at":"2025-03-31T14:20:21.000Z","dependencies_parsed_at":"2023-09-29T04:04:25.347Z","dependency_job_id":"bd8fd134-1424-4520-9d98-238b9b6d08e7","html_url":"https://github.com/workleap/azure-pipelines-lighthouse","commit_stats":null,"previous_names":["workleap/azure-pipelines-lighthouse","gsoft-inc/azure-pipelines-lighthouse"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fazure-pipelines-lighthouse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fazure-pipelines-lighthouse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fazure-pipelines-lighthouse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workleap%2Fazure-pipelines-lighthouse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/workleap","download_url":"https://codeload.github.com/workleap/azure-pipelines-lighthouse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247940005,"owners_count":21021886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-devops","azure-devops-extension","azure-pipelines","lighthouse"],"created_at":"2024-11-06T13:18:36.030Z","updated_at":"2025-07-07T16:40:02.439Z","avatar_url":"https://github.com/workleap.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lighthouse for Azure Pipelines\n\nThis is an [Azure DevOps extension](https://marketplace.visualstudio.com/items?itemName=GSoft.lighthouse-vsts) that allows you to **enhance your Azure Pipelines with a Lighthouse tab**.\nThe Lighthouse tab embed one or many HTML reports generated by [Google Lighthouse](https://developers.google.com/web/tools/lighthouse/).\n\nThe task only requires a target URL to execute Lighthouse against.\n\nIf the [Lighthouse NPM package](https://www.npmjs.com/package/lighthouse) is already installed locally or globally on the agent, then the task will use it.\nOtherwise, it will install the latest version in a temporary folder.\n\n![Lighthouse HTML report embed in a tab](https://raw.githubusercontent.com/workleap/azure-pipelines-lighthouse/main/docs/lh-result.png)\n\nYou can also specify **audit score assertions** that can make the pipeline fail based on the audit scores.\n\nFor example, the Google Lighthouse audit `is-on-https` produces a boolean score that will be equal to `1` if the site uses HTTPS.\nThis is an example of a score assertion for this audit:\n\n```\nis-on-https = 1\n```\n\nWhich means that you expect the audit `is-on-https` to have a score equal to `1`.\n\n**Any audit score generated by Lighthouse is between 0 and 1**. You can also use the `\u003e` (greater than) and the `\u003c` (lower than) operator to evaluate decimal audit scores.\nAudit score assertions must be written on separate lines.\n\n![Lighthouse task](https://raw.githubusercontent.com/workleap/azure-pipelines-lighthouse/main/docs/lh-task.png)\n\n## Installation\n\nLighthouse for Azure Pipelines can be installed from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=GSoft.lighthouse-vsts).\n\n## Lighthouse audits that can be used in assertions\n\nThe following audits are available for assertions in **Lighthouse 10.1.0**.\nThey may change with new versions.\nExecute `lighthouse --list-all-audits` to discover the available audits for your desired Lighthouse version.\n\n| Audit                        | Type    | Description                                                                                                                        |\n|------------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------|\n| is-on-https                  | binary  | Uses HTTPS                                                                                                                         |\n| service-worker               | binary  | Does not register a service worker that controls page and `start_url`                                                              |\n| viewport                     | binary  | Has a `\u003cmeta name=\"viewport\"\u003e` tag with `width` or `initial-scale`                                                                 |\n| first-contentful-paint       | numeric | First Contentful Paint                                                                                                             |\n| largest-contentful-paint     | numeric | Largest Contentful Paint                                                                                                           |\n| first-meaningful-paint       | numeric | First Meaningful Paint                                                                                                             |\n| speed-index                  | numeric | Speed Index                                                                                                                        |\n| total-blocking-time          | numeric | Total Blocking Time                                                                                                                |\n| max-potential-fid            | numeric | Max Potential First Input Delay                                                                                                    |\n| cumulative-layout-shift      | numeric | Cumulative Layout Shift                                                                                                            |\n| errors-in-console            | binary  | No browser errors logged to the console                                                                                            |\n| server-response-time         | binary  | Initial server response time was short                                                                                             |\n| interactive                  | numeric | Time to Interactive                                                                                                                |\n| redirects                    | numeric | Avoid multiple page redirects                                                                                                      |\n| installable-manifest         | binary  | Web app manifest or service worker do not meet the installability requirements                                                     |\n| splash-screen                | binary  | Is not configured for a custom splash screen                                                                                       |\n| themed-omnibox               | binary  | Does not set a theme color for the address bar.                                                                                    |\n| maskable-icon                | binary  | Manifest doesn't have a maskable icon                                                                                              |\n| content-width                | binary  | Content is sized correctly for the viewport                                                                                        |\n| image-aspect-ratio           | binary  | Displays images with correct aspect ratio                                                                                          |\n| image-size-responsive        | binary  | Serves images with appropriate resolution                                                                                          |\n| deprecations                 | binary  | Avoids deprecated APIs                                                                                                             |\n| mainthread-work-breakdown    | numeric | Minimizes main-thread work                                                                                                         |\n| bootup-time                  | numeric | JavaScript execution time                                                                                                          |\n| uses-rel-preconnect          | numeric | Preconnect to required origins                                                                                                     |\n| font-display                 | binary  | All text remains visible during webfont loads                                                                                      |\n| third-party-summary          | binary  | Minimize third-party usage                                                                                                         |\n| no-unload-listeners          | binary  | Avoids `unload` event listeners                                                                                                    |\n| unsized-images               | binary  | Image elements have explicit `width` and `height`                                                                                  |\n| valid-source-maps            | binary  | Page has valid source maps                                                                                                         |\n| aria-allowed-attr            | binary  | `[aria-*]` attributes match their roles                                                                                            |\n| aria-hidden-body             | binary  | `[aria-hidden=\"true\"]` is not present on the document `\u003cbody\u003e`                                                                     |\n| aria-hidden-focus            | binary  | `[aria-hidden=\"true\"]` elements contain focusable descendents                                                                      |\n| aria-valid-attr-value        | binary  | `[aria-*]` attributes have valid values                                                                                            |\n| aria-valid-attr              | binary  | `[aria-*]` attributes are valid and not misspelled                                                                                 |\n| button-name                  | binary  | Buttons have an accessible name                                                                                                    |\n| color-contrast               | binary  | Background and foreground colors have a sufficient contrast ratio                                                                  |\n| document-title               | binary  | Document has a `\u003ctitle\u003e` element                                                                                                   |\n| duplicate-id-active          | binary  | `[id]` attributes on active, focusable elements are unique                                                                         |\n| duplicate-id-aria            | binary  | ARIA IDs are unique                                                                                                                |\n| heading-order                | binary  | Heading elements appear in a sequentially-descending order                                                                         |\n| html-has-lang                | binary  | `\u003chtml\u003e` element has a `[lang]` attribute                                                                                          |\n| html-lang-valid              | binary  | `\u003chtml\u003e` element has a valid value for its `[lang]` attribute                                                                      |\n| image-alt                    | binary  | Image elements have `[alt]` attributes                                                                                             |\n| link-name                    | binary  | Links have a discernible name                                                                                                      |\n| list                         | binary  | Lists contain only `\u003cli\u003e` elements and script supporting elements (`\u003cscript\u003e` and `\u003ctemplate\u003e`).                                   |\n| listitem                     | binary  | List items (`\u003cli\u003e`) are contained within `\u003cul\u003e`, `\u003col\u003e` or `\u003cmenu\u003e` parent elements                                                |\n| meta-viewport                | binary  | `[user-scalable=\"no\"]` is not used in the `\u003cmeta name=\"viewport\"\u003e` element and the `[maximum-scale]` attribute is not less than 5. |\n| uses-long-cache-ttl          | numeric | Uses efficient cache policy on static assets                                                                                       |\n| total-byte-weight            | numeric | Avoids enormous network payloads                                                                                                   |\n| offscreen-images             | numeric | Defer offscreen images                                                                                                             |\n| render-blocking-resources    | numeric | Eliminate render-blocking resources                                                                                                |\n| unminified-css               | numeric | Minify CSS                                                                                                                         |\n| unminified-javascript        | numeric | Minify JavaScript                                                                                                                  |\n| unused-css-rules             | numeric | Reduce unused CSS                                                                                                                  |\n| unused-javascript            | numeric | Reduce unused JavaScript                                                                                                           |\n| modern-image-formats         | numeric | Serve images in next-gen formats                                                                                                   |\n| uses-optimized-images        | numeric | Efficiently encode images                                                                                                          |\n| uses-text-compression        | numeric | Enable text compression                                                                                                            |\n| uses-responsive-images       | numeric | Properly size images                                                                                                               |\n| efficient-animated-content   | numeric | Use video formats for animated content                                                                                             |\n| duplicated-javascript        | numeric | Remove duplicate modules in JavaScript bundles                                                                                     |\n| legacy-javascript            | numeric | Avoid serving legacy JavaScript to modern browsers                                                                                 |\n| doctype                      | binary  | Page has the HTML doctype                                                                                                          |\n| charset                      | binary  | Properly defines charset                                                                                                           |\n| dom-size                     | numeric | Avoids an excessive DOM size                                                                                                       |\n| geolocation-on-start         | binary  | Avoids requesting the geolocation permission on page load                                                                          |\n| inspector-issues             | binary  | No issues in the `Issues` panel in Chrome Devtools                                                                                 |\n| no-document-write            | binary  | Avoids `document.write()`                                                                                                          |\n| notification-on-start        | binary  | Avoids requesting the notification permission on page load                                                                         |\n| paste-preventing-inputs      | binary  | Allows users to paste into input fields                                                                                            |\n| uses-http2                   | numeric | Use HTTP/2                                                                                                                         |\n| uses-passive-event-listeners | binary  | Uses passive listeners to improve scrolling performance                                                                            |\n| meta-description             | binary  | Document has a meta description                                                                                                    |\n| http-status-code             | binary  | Page has successful HTTP status code                                                                                               |\n| font-size                    | binary  | Document uses legible font sizes                                                                                                   |\n| link-text                    | binary  | Links have descriptive text                                                                                                        |\n| crawlable-anchors            | binary  | Links are crawlable                                                                                                                |\n| is-crawlable                 | binary  | Page isn’t blocked from indexing                                                                                                   |\n| robots-txt                   | binary  | robots.txt is valid                                                                                                                |\n| tap-targets                  | binary  | Tap targets are sized appropriately                                                                                                |\n| hreflang                     | binary  | Document has a valid `hreflang`                                                                                                    |\n| plugins                      | binary  | Document avoids plugins                                                                                                            |\n| canonical                    | binary  | Document has a valid `rel=canonical`                                                                                               |\n| bf-cache                     | binary  | Page prevented back/forward cache restoration                                                                                      |\n\n\n## Build and release process\n\nThere are GitHub actions that take care of testing, packaging and publishing the extension.\n\n## License\n\nCopyright © 2023, Groupe GSoft Inc. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/workleap/azure-pipelines-lighthouse/blob/main/LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkleap%2Fazure-pipelines-lighthouse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworkleap%2Fazure-pipelines-lighthouse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkleap%2Fazure-pipelines-lighthouse/lists"}