Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

cypress-html-validate

html-validate31.7kMIT7.1.0TypeScript support: included

Cypress plugin for html-validate

html, html-validate, cypress, validator

readme

Cypress HTML-Validate plugin

Validates HTML using html-validate. It automatically fetches the active source markup from the browser and validates, failing the test if any validation errors is encountered.

Prerequisites

Installation

npm install --save-dev html-validate cypress-html-validate

Make sure you install both html-validate and the plugin cypress-html-validate. With NPM 7 or later it will be satisfied by the peer dependency but for a more consistent and deterministic experience it is suggested to include both as dependencies for your project.

Usage

With Cypress 10 or later

Import the plugin:

import htmlvalidate from "cypress-html-validate/plugin";

Add the setupNodeEvents if it doesnt already exist (either in the e2e or component block):

export default defineConfig({
  e2e: {
    setupNodeEvents(on) {
      htmlvalidate.install(on);
    },
  },
});

Import the command in the support file (default cypress/support/e2e.[jt]s for E2E-tests and cypress/support/component.[jt]s for component tests):

import "cypress-html-validate/commands";

With earlier versions (pre v10)

Install the plugin in cypress/plugins/index.js:

const htmlvalidate = require("cypress-html-validate/plugin");

module.exports = (on) => {
  htmlvalidate.install(on);
};

Import the command in the support file cypress/support/index.js:

import "cypress-html-validate/commands";

In test files:

it("should be valid", () => {
  cy.visit("/my-page.html");
  cy.htmlvalidate();
});

To automatically run after each test you can use afterEach either in the spec file or in cypress/support/index.js:

afterEach(() => {
  cy.htmlvalidate();
});

Options may optionally be passed (both plugin options and html-validate configuration):

/* plugin option to exclude an element */
cy.htmlvalidate({
  exclude: [".ignore-me"],
});

/* html-validate config to disable a rule */
cy.htmlvalidate({
  rules: {
    "input-missing-label": "off",
  },
});

/* both options */
cy.htmlvalidate(
  {
    rules: {
      "input-missing-label": "off",
    },
  },
  {
    exclude: [".ignore-me"],
  },
);

Running without a subject validates the entire document (with exception of using configuration options include and exclude). If you use it on a subject only that element and its descendants are validated:

it("should be valid", () => {
  cy.visit("/my-page.html");
  cy.get("#my-fancy-element").htmlvalidate();
});

Configuration

html-validate and the plugin can configured globally in the install function:

/* html-validate configuration */
const config = {
  rules: {
    foo: "error",
  },
};

/* plugin options */
const options = {
  exclude: [],
  include: [],
  formatter(messages) {
    console.log(messages);
  },
};

htmlvalidate.install(on, config, options);

The default configuration extends html-validate:recommended and html-validate:document (see presets). This can be overridden by explictly specifying extends: []:

htmlvalidate.install(on, {
  extends: [],
});

See html-validate documentation for full description of configuration.

If you want to override per call you can pass configuration and/or options directly to the function:

cy.htmlvalidate([config], [options]);

Options

exclude: string[]

A list of selectors to ignore errors from. Any errors from the elements or any descendant will be ignored.

include: []

A list of selectors to include errors from. If this is set to non-empty array only errors from elements or any descendants will be included.

formatter

  • type: (messages: Message[]): void

Custom formatter/reporter for detected errors. Default uses console.table(..) to log to console. Set to null to disable.

The original formatter can be imported with:

import { formatter } from "cypress-html-validate";

changelog

cypress-html-validate changelog

7.1.0 (2025-01-20)

Features

  • deps: support cypress v14 (e8a35f3)

Bug Fixes

  • deps: update dependency html-validate to v9 (40d028c)

7.0.0 (2024-12-15)

⚠BREAKING CHANGES

  • deps: require nodejs v18 or later
  • deps: require cypress v11 or later
  • deps: require html-validate v8 or later

Features

  • deps: require cypress v11 or later (19681ed)
  • deps: require html-validate v8 or later (d17d7d6)
  • deps: require nodejs v18 or later (c33bae1)
  • deps: support html-validate v9 (1b8a014)

6.1.0 (2023-09-09)

Features

  • deps: support cypress v13 (153eb2e)

6.0.2 (2023-07-16)

Bug Fixes

  • fix webpack ?? null coalescing error (a05db3b)

6.0.1 (2023-07-15)

Bug Fixes

  • drop support for deprecated void rule (ade435c)

6.0.0 (2023-06-09)

⚠BREAKING CHANGES

  • deps: require html-validate v5 or later
  • deps: require cypress v10 or later
  • deps: require nodejs v16 or later

Features

  • deps: require cypress v10 or later (7e3acec)
  • deps: require html-validate v5 or later (f9524e6)
  • deps: require nodejs v16 or later (36448a8)

Dependency upgrades

  • deps: support html-validate v8 (8a0309d)

5.1.2 (2023-01-15)

Dependency upgrades

  • deps: support no-unused-disable from html-validate to v7.13.0 (b2188d9)

5.1.1 (2022-12-09)

Dependency upgrades

  • deps: update dependency cypress to v12 (34f1d16)

5.1.0 (2022-11-20)

Features

  • deps: support cypress v11 (6c19c57)

5.0.5 (2022-09-08)

Bug Fixes

5.0.4 (2022-08-05)

Bug Fixes

  • import without dist in path works again (da569a4), closes #15

5.0.3 (2022-07-16)

Bug Fixes

  • fix broken typescript declaration for commands (7feec4d), closes #14

5.0.2 (2022-06-21)

Bug Fixes

  • export formatter function (e921a73)

5.0.1 (2022-06-21)

Bug Fixes

  • add old paths to exports definition (6f7d7ac)

5.0.0 (2022-06-20)

⚠BREAKING CHANGES

  • require Cypress v7 or later

Features

4.0.0 (2022-05-16)

⚠BREAKING CHANGES

  • deps: drop support for cypress v3

Features

  • allow using cy.get(..).htmlvalidate() to validate only selected subject(s) (a4db2c8), closes html-validate#150
  • deps: drop support for cypress v3 (3ef16aa)

3.0.0 (2022-05-08)

⚠BREAKING CHANGES

  • require node 14

Features

Dependency upgrades

  • deps: support html-validate v7 (f0f12af)

2.1.3 (2022-02-06)

Bug Fixes

  • typescript: export options type via main field (883b03e)

2.1.2 (2021-11-14)

Dependency upgrades

  • deps: update dependency cypress to v9 (b96fd3f)

2.1.1 (2021-09-27)

Dependency upgrades

  • deps: update dependency html-validate to v6 (4e32463)

2.1.0 (2021-09-17)

Features

  • support passing config and options to each validator call (30e78ff), closes #9

2.0.2 (2021-07-23)

Dependency upgrades

  • deps: update dependency cypress to v8 (9630137)

2.0.1 (2021-06-27)

Dependency upgrades

  • deps: update dependency html-validate to v5 (9d7076c)

2.0.0 (2021-06-27)

⚠BREAKING CHANGES

  • require NodeJS 12

Features

1.5.1 (2021-05-14)

Bug Fixes

  • configuration merging not overwriting extends (4fe9cd7), closes #7

1.5.0 (2021-04-07)

Features

  • cypress 7 compatibility (6959930), closes #6

1.4.1 (2021-03-16)

Bug Fixes

  • "Converting circular structure to JSON" when HTMLElement was serialized (1a216a3), closes #5

1.4.0 (2021-02-21)

Features

  • add console output support (d484863), closes #4

Bug Fixes

  • error message highlights elements in browser again (a643111)

1.3.1 (2020-12-06)

Dependency upgrades

  • deps: update dependency cypress to v6 (6cc1256)

1.3.0 (2020-11-08)

Features

  • disable void-style by default (51314e3)
  • html-validate v4 compatibility (7b66a34)

1.2.5 (2020-11-01)

1.2.4 (2020-10-25)

1.2.3 (2020-09-30)

1.2.2 (2020-06-09)

Bug Fixes

  • selectors in <head> matches DOM (674544b), closes #1

1.2.1 (2020-05-29)

Bug Fixes

  • disable attribute-empty-style (a2fb02b), closes #1

1.2.0 (2020-02-26)

Features

  • support excluding/including errors via selectors (32ec9dc)

1.1.1 (2020-02-17)

Bug Fixes

  • config: use new void rules (1b585d3)

1.1.0 (2020-01-26)

Features

  • lookup dom elements if selector is present (4a25877)

1.0.0 (2020-01-24)

Features