Package Exports
- cypress-html-validate
- cypress-html-validate/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cypress-html-validate) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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.
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
In cypress/plugins/index.js
:
const htmlvalidate = require("cypress-html-validate/dist/plugin");
module.exports = (on) => {
htmlvalidate.install(on);
};
In cypress/support/index.js
:
import "cypress-html-validate/dist/commands";
In specs:
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 cypress/plugins/index.js
:
/* 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: ElementMessage[]): void
Custom formatter/reporter for detected errors.
Default uses console.table(..)
to log to console.
Set to null
to disable.