javascriptcypresse2e-testinglighthouse

Not able to add the plugin such as the lighthouse in my cypress project


I have a project with the cypress automation. I am trying to add the plugin such as the cypress in my project but after changing my index.js in plugin folder.It shows me the error of

cy.lighthouse() is not a function 

index.js file

const { lighthouse, pa11y, prepareAudit } = require("cypress-audit");
module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config
};

can any one help on this issue. Thanks!


Solution

  • If you take a look at the docs, this should be the full cypress/plugins/index.js

    Cypress v9 - cypress/plugins/index.js

    const { lighthouse, pa11y, prepareAudit } = require("cypress-audit");
    
    module.exports = (on, config) => {
      on("before:browser:launch", (browser = {}, launchOptions) => {
        prepareAudit(launchOptions);
      });
    
      on("task", {
        lighthouse: lighthouse(), // calling the function is important
        pa11y: pa11y(), // calling the function is important
      });
    };
    

    But your error message "cy.lighthouse() is not a function" is caused by missing line in cypress/support/index.js which you also add

    Cypress v9 - cypress/support/index.js

    import "cypress-audit/commands";
    

    For latest Cypress

    Cypress v10 - cypress.config.js

    const { defineConfig } = require('cypress')
    const { lighthouse, pa11y, prepareAudit } = require("cypress-audit");
    
    module.exports = defineConfig({
      e2e: {
        baseUrl: 'http://localhost:1234',
        setupNodeEvents(on, config) {
    
        on("before:browser:launch", (browser = {}, launchOptions) => {
          prepareAudit(launchOptions);
        });
    
        on("task", {
          lighthouse: lighthouse(), // calling the function is important
          pa11y: pa11y(), // calling the function is important
        }); 
      },
    })
    

    Cypress v10 - cypress/support/e2e.js

    import "cypress-audit/commands";