Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: htmlhint/HTMLHint
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.16.1
Choose a base ref
...
head repository: htmlhint/HTMLHint
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.16.2
Choose a head ref
  • 13 commits
  • 52 files changed
  • 4 contributors

Commits on Nov 17, 2021

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    4de808c View commit details

Commits on Nov 23, 2021

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    5b52a27 View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    26b4e44 View commit details
  3. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    3c25de8 View commit details
  4. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    4f85a1a View commit details
  5. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    88d3670 View commit details
  6. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    e95cd82 View commit details
  7. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    77e9a6c View commit details
  8. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    63d367e View commit details
  9. chore(deps): bump async from 3.2.0 to 3.2.2 (#739)

    Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.2.
    - [Release notes](https://github.com/caolan/async/releases)
    - [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md)
    - [Commits](caolan/async@v3.2.0...v3.2.2)
    
    ---
    updated-dependencies:
    - dependency-name: async
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 23, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    fad78d8 View commit details
  10. chore(deps-dev): bump @types/xml from 1.0.5 to 1.0.6 (#740)

    Bumps [@types/xml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/xml) from 1.0.5 to 1.0.6.
    - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
    - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/xml)
    
    ---
    updated-dependencies:
    - dependency-name: "@types/xml"
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 23, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    081db96 View commit details
  11. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    98e45b9 View commit details
  12. chore(release): 0.16.2 [skip ci]

    ## [0.16.2](v0.16.1...v0.16.2) (2021-11-23)
    
    ### Bug Fixes
    
    * clenaup non-functional typos ([#727](#727)) ([98e45b9](98e45b9))
    semantic-release-bot committed Nov 23, 2021
    Copy the full SHA
    9796b67 View commit details
Showing with 359 additions and 302 deletions.
  1. +0 −3 .eslintignore
  2. +49 −37 .eslintrc.js
  3. +10 −2 .github/dependabot.yml
  4. +28 −8 .github/workflows/development.yml
  5. +1 −1 .github/workflows/labeler.yml
  6. +33 −14 .github/workflows/production.yml
  7. +4 −9 .github/workflows/test-release.yml
  8. +1 −0 .prettierignore
  9. +10 −4 CHANGELOG.md
  10. +1 −1 README.md
  11. +1 −1 docs/user-guide/rules/input-requires-label.md
  12. +1 −1 docs/user-guide/rules/src-not-empty.md
  13. +7 −7 package-lock.json
  14. +5 −5 package.json
  15. +1 −1 parser-preset.js
  16. +3 −3 src/cli/htmlhint.ts
  17. +1 −1 src/core/rules/tags-check.ts
  18. +0 −1 test/cli/formatters/junit.spec.js
  19. +1 −1 test/core.spec.js
  20. +10 −10 test/rules/alt-require.spec.js
  21. +10 −10 test/rules/attr-lowercase.spec.js
  22. +4 −4 test/rules/attr-no-duplication.spec.js
  23. +4 −4 test/rules/attr-no-unnecessary-whitespace.spec.js
  24. +1 −1 test/rules/attr-sort.spec.js
  25. +4 −4 test/rules/attr-unsafe-chars.spec.js
  26. +6 −6 test/rules/attr-value-double-quotes.spec.js
  27. +4 −4 test/rules/attr-value-not-empty.spec.js
  28. +6 −6 test/rules/attr-value-single-quotes.spec.js
  29. +6 −6 test/rules/attr-whitespace.spec.js
  30. +4 −4 test/rules/doctype-first.spec.js
  31. +4 −4 test/rules/doctype-html5.spec.js
  32. +5 −5 test/rules/empty-tag-not-self-closed.spec.js
  33. +5 −5 test/rules/head-require.spec.js
  34. +5 −5 test/rules/head-script-disabled.spec.js
  35. +10 −10 test/rules/href-abs-or-rel.spec.js
  36. +5 −5 test/rules/html-lang-require.spec.js
  37. +17 −17 test/rules/id-class-ad-disabled.spec.js
  38. +6 −6 test/rules/id-class-value.spec.js
  39. +4 −4 test/rules/id-unique.spec.js
  40. +6 −6 test/rules/inline-script-disabled.spec.js
  41. +4 −4 test/rules/inline-style-disabled.spec.js
  42. +5 −5 test/rules/script-disabled.spec.js
  43. +10 −10 test/rules/space-tab-mixed-disabled.spec.js
  44. +7 −7 test/rules/spec-char-escape.spec.js
  45. +4 −4 test/rules/src-not-empty.spec.js
  46. +4 −4 test/rules/style-disabled.spec.js
  47. +7 −7 test/rules/tag-pair.spec.js
  48. +5 −5 test/rules/tag-self-close.spec.js
  49. +7 −7 test/rules/tagname-lowercase.spec.js
  50. +5 −5 test/rules/tagname-specialchars.spec.js
  51. +15 −15 test/rules/tags-check.spec.js
  52. +3 −3 test/rules/title-require.spec.js
3 changes: 0 additions & 3 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -6,6 +6,3 @@ dist

# Website directory
website

# eslint cannot lint itself
.eslintrc.js
86 changes: 49 additions & 37 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,58 @@
module.exports = {
extends: [
'eslint:recommended',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'prettier/@typescript-eslint',
],
extends: ['eslint:recommended', 'plugin:prettier/recommended'],
env: {
browser: true,
amd: true,
es6: true,
node: true,
mocha: true,
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
project: './tsconfig.lint.json',
warnOnUnsupportedTypeScriptVersion: false,
},
plugins: ['@typescript-eslint'],
rules: {
'arrow-body-style': ['error'],
'no-template-curly-in-string': 'error',
'no-useless-concat': 'error',
'no-useless-escape': 'off',
'no-var': 'error',
'one-var': ['error', 'never'],
'prefer-arrow-callback': ['error', { allowNamedFunctions: true }],
'prefer-const': 'error',
'prefer-template': 'error',
quotes: ['error', 'single', { avoidEscape: true }],
'template-curly-spacing': 'error',
'template-tag-spacing': 'error',
overrides: [
{
files: ['**/*.ts'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:prettier/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
project: './tsconfig.lint.json',
warnOnUnsupportedTypeScriptVersion: false,
},
plugins: ['@typescript-eslint'],
rules: {
'arrow-body-style': ['error'],
'no-template-curly-in-string': 'error',
'no-useless-concat': 'error',
'no-useless-escape': 'off',
'no-var': 'error',
'one-var': ['error', 'never'],
'prefer-arrow-callback': ['error', { allowNamedFunctions: true }],
'prefer-const': 'error',
'prefer-template': 'error',
'template-curly-spacing': 'error',
'template-tag-spacing': 'error',
quotes: ['error', 'single', { avoidEscape: true }],

'@typescript-eslint/adjacent-overload-signatures': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
},
'@typescript-eslint/adjacent-overload-signatures': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
},
},
{
files: ['**/*.spec.js'],
env: {
mocha: true,
},
},
],
}
12 changes: 10 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
directory: '/'
schedule:
interval: weekly
- package-ecosystem: npm
directory: '/website'
schedule:
interval: weekly
- package-ecosystem: npm
directory: '/website/plugins/docusaurus-plugin-hotjar'
schedule:
interval: weekly
versioning-strategy: increase
- package-ecosystem: github-actions
directory: "/"
directory: '/'
schedule:
interval: weekly
36 changes: 28 additions & 8 deletions .github/workflows/development.yml
Original file line number Diff line number Diff line change
@@ -13,13 +13,37 @@ on:
types: [opened, synchronize, reopened]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v2

- name: ⎔ Setup node ${{ matrix.node }}
uses: actions/setup-node@v2
with:
cache: npm

- name: 📥 Download deps
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

- name: 🧪 Run lint
run: npm run lint

build:
# ignore all-contributors PRs
if: ${{ !contains(github.head_ref, 'all-contributors') }}
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
node: [14, 15]
node:
- 12
- 14
- 16
- 17
os: [ubuntu-latest, macOS-latest, windows-latest]

steps:
@@ -32,20 +56,16 @@ jobs:
uses: actions/checkout@v2

- name: ⎔ Setup node ${{ matrix.node }}
uses: actions/setup-node@v2.4.1
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
cache: npm

- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
useLockFile: false
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

- name: 🧪 Run lint
run: npm run lint

- name: 🏗 Build
run: npm run build
env:
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
@@ -9,4 +9,4 @@ jobs:
steps:
- uses: actions/labeler@v3.0.2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
repo-token: '${{ secrets.GITHUB_TOKEN }}'
47 changes: 33 additions & 14 deletions .github/workflows/production.yml
Original file line number Diff line number Diff line change
@@ -12,13 +12,37 @@ on:
- '!all-contributors/**'

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v2

- name: ⎔ Setup node ${{ matrix.node }}
uses: actions/setup-node@v2
with:
cache: npm

- name: 📥 Download deps
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

- name: 🧪 Run lint
run: npm run lint

build:
# ignore all-contributors PRs
if: ${{ !contains(github.head_ref, 'all-contributors') }}
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
node: [14, 15]
node:
- 12
- 14
- 16
- 17
os: [ubuntu-latest, macOS-latest, windows-latest]

steps:
@@ -31,20 +55,16 @@ jobs:
uses: actions/checkout@v2

- name: ⎔ Setup node ${{ matrix.node }}
uses: actions/setup-node@v2.4.1
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
cache: npm

- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
useLockFile: false
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

- name: 🧪 Run lint
run: npm run lint

- name: 🏗 Build
run: npm run build
env:
@@ -59,8 +79,7 @@ jobs:
file: ./coverage/lcov.info

release:
if:
${{ github.repository == 'htmlhint/HTMLHint' &&
if: ${{ github.repository == 'htmlhint/HTMLHint' &&
contains('refs/heads/master,refs/heads/beta,refs/heads/next,refs/heads/alpha',
github.ref) && github.event_name == 'push' }}
runs-on: ubuntu-latest
@@ -70,12 +89,12 @@ jobs:
uses: actions/checkout@v2

- name: ⎔ Setup node
uses: actions/setup-node@v2.4.1
uses: actions/setup-node@v2
with:
cache: npm

- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
useLockFile: false
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

13 changes: 4 additions & 9 deletions .github/workflows/test-release.yml
Original file line number Diff line number Diff line change
@@ -15,22 +15,18 @@ on:
jobs:
test-release:
runs-on: ubuntu-latest
strategy:
matrix:
node: [14]
os: [ubuntu-latest]

steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v2

- name: ⎔ Setup node
uses: actions/setup-node@v2.4.1
uses: actions/setup-node@v2
with:
cache: npm

- name: 📥 Download deps
uses: bahmutov/npm-install@v1
with:
useLockFile: false
run: npm ci
env:
HUSKY_SKIP_INSTALL: true

@@ -56,4 +52,3 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@ npm-debug.log*
.github/PULL_REQUEST_TEMPLATE.md

/website/playground
/website/build
/website/.docusaurus
/website/plugins
/website/static
14 changes: 10 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
## [0.16.1](https://github.com/htmlhint/HTMLHint/compare/v0.16.0...v0.16.1) (2021-11-12)
## [0.16.2](https://github.com/htmlhint/HTMLHint/compare/v0.16.1...v0.16.2) (2021-11-23)


### Bug Fixes

* tagname-specialchars description ([#714](https://github.com/htmlhint/HTMLHint/issues/714)) ([4d702d8](https://github.com/htmlhint/HTMLHint/commit/4d702d8dfac3431fb71516b1ea3eb97950b63835))
* clenaup non-functional typos ([#727](https://github.com/htmlhint/HTMLHint/issues/727)) ([98e45b9](https://github.com/htmlhint/HTMLHint/commit/98e45b9b2e1d7a4b0576d1944b1769c21b52b11e))

## [0.16.2](https://github.com/htmlhint/HTMLHint/compare/v0.16.1...v0.16.2) (2021-11-23)

## [0.16.1](https://github.com/htmlhint/HTMLHint/compare/v0.16.0...v0.16.1) (2021-11-12)

### Bug Fixes

* clenaup non-functional typos ([#727](https://github.com/htmlhint/HTMLHint/issues/727)) ([98e45b9](https://github.com/htmlhint/HTMLHint/commit/98e45b9b2e1d7a4b0576d1944b1769c21b52b11e))

## [0.16.1](https://github.com/htmlhint/HTMLHint/compare/v0.16.0...v0.16.1) (2021-11-12)

### Bug Fixes

* tagname-specialchars description ([#714](https://github.com/htmlhint/HTMLHint/issues/714)) ([4d702d8](https://github.com/htmlhint/HTMLHint/commit/4d702d8dfac3431fb71516b1ea3eb97950b63835))

# [0.16.0](https://github.com/htmlhint/HTMLHint/compare/v0.15.2...v0.16.0) (2021-10-29)
## [0.16.0](https://github.com/htmlhint/HTMLHint/compare/v0.15.2...v0.16.0) (2021-10-29)

### Features

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
<a href="https://www.npmjs.com/package/htmlhint">
<img src="https://img.shields.io/npm/dm/htmlhint.svg" alt="NPM count">
</a>
<img src="https://badgen.net/badge/license/MIT/green" alt="MIT Licence" />
<img src="https://badgen.net/badge/license/MIT/green" alt="MIT License" />
<a href="https://discord.gg/nJ6J9CP">
<img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg" alt="Chat">
</a>
2 changes: 1 addition & 1 deletion docs/user-guide/rules/input-requires-label.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ title: input-requires-label
keywords:
- input
- label
- accessiblity
- accessibility
---

All [ input ] tags must have a corresponding [ label ] tag.
2 changes: 1 addition & 1 deletion docs/user-guide/rules/src-not-empty.md
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ title: src-not-empty

Src of img(script, link) must set value.

Emtpy of src will visit current page twice.
Empty of src will visit current page twice.

Level: `error`

14 changes: 7 additions & 7 deletions package-lock.json
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "htmlhint",
"version": "0.16.1",
"version": "0.16.2",
"description": "The Static Code Analysis Tool for your HTML",
"repository": {
"type": "git",
@@ -30,8 +30,8 @@
"build:rollup": "npm run build:min && npm run build:unmin",
"build:min": "rollup -c --environment NODE_ENV:production --file dist/htmlhint.min.js",
"build:unmin": "rollup -c",
"lint": "eslint . --ext .js,.ts --max-warnings 0",
"lint:fix": "eslint --fix . --ext .js,.ts --max-warnings 0",
"lint": "prettier -c . && eslint . --ext .js,.ts --max-warnings 0",
"lint:fix": "npm run prettier && npm run lint -- --fix",
"test:coverage": "nyc npm run test"
},
"husky": {
@@ -59,7 +59,7 @@
},
"dependencies": {
"@types/node-fetch": "^2.5.12",
"async": "3.2.0",
"async": "3.2.2",
"chalk": "4.1.0",
"commander": "5.1.0",
"glob": "7.1.7",
@@ -83,7 +83,7 @@
"@types/glob": "7.1.3",
"@types/node-fetch": "^2.5.12",
"@types/parse-glob": "3.0.29",
"@types/xml": "1.0.5",
"@types/xml": "1.0.6",
"@typescript-eslint/eslint-plugin": "3.6.0",
"@typescript-eslint/parser": "3.10.1",
"commitizen": "^4.2.4",
2 changes: 1 addition & 1 deletion parser-preset.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
parserOpts: {
headerPattern: /^(\w*)\((\w*)\)\:\s(.*)$/,
headerPattern: /^(\w*)\((\w*)\):\s(.*)$/,
headerCorrespondence: ['type', 'scope', 'subject'],
},
}
6 changes: 3 additions & 3 deletions src/cli/htmlhint.ts
Original file line number Diff line number Diff line change
@@ -174,7 +174,7 @@ function hintTargets(
})
}

// load custom rles
// load custom rules
function loadCustomRules(rulesdir: string) {
rulesdir = rulesdir.replace(/\\/g, '/')
if (existsSync(rulesdir)) {
@@ -215,7 +215,7 @@ function hintAllFiles(
formatter: Formatter
ruleset?: Ruleset
},
onFinised: (result: {
onFinished: (result: {
targetFileCount: number
targetHintFileCount: number
targetHintCount: number
@@ -292,7 +292,7 @@ function hintAllFiles(

function checkAllHinted() {
if (isWalkDone && isHintDone) {
onFinised({
onFinished({
targetFileCount: targetFileCount,
targetHintFileCount: targetHintFileCount,
targetHintCount: targetHintCount,
2 changes: 1 addition & 1 deletion src/core/rules/tags-check.ts
Original file line number Diff line number Diff line change
@@ -146,7 +146,7 @@ export default {
redundantAttrs.forEach((attrName) => {
if (attrs.some((attr) => attr.name === attrName)) {
reporter.error(
`The attr '${attrName}' is redundant for <${tagName}> and should be ommited.`,
`The attr '${attrName}' is redundant for <${tagName}> and should be omitted.`,
event.line,
col,
this,
1 change: 0 additions & 1 deletion test/cli/formatters/junit.spec.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const expect = require('expect.js')

const ChildProcess = require('child_process')
const fs = require('fs')
const path = require('path')

describe('CLI', () => {
2 changes: 1 addition & 1 deletion test/core.spec.js
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ describe('Core', () => {
expect(messages.length).to.be(0)
})

it('Show formated result should not result in an error', () => {
it('Show formatted result should not result in an error', () => {
const code =
'tttttttttttttttttttttttttttttttttttt<div>中文<img src="test.gif" />tttttttttttttttttttttttttttttttttttttttttttttt'
const messages = HTMLHint.verify(code, {
20 changes: 10 additions & 10 deletions test/rules/alt-require.spec.js
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'alt-require'
const ruleId = 'alt-require'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Img tag have empty alt attribute should not result in an error', () => {
const code = '<img width="200" height="300" alt="">'
const messages = HTMLHint.verify(code, ruleOptions)
@@ -24,7 +24,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<img width="200" height="300">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)
expect(messages[0].type).to.be('warning')
@@ -47,7 +47,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<area href="#test">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(6)
expect(messages[0].type).to.be('warning')
@@ -57,13 +57,13 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<area href="#test" alt="">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(6)
expect(messages[0].type).to.be('warning')
})

it('Area[href] tag have non emtpy alt attribute should not result in an error', () => {
it('Area[href] tag have non empty alt attribute should not result in an error', () => {
const code = '<area href="#test" alt="test">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
@@ -85,7 +85,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<input type="image">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
@@ -95,13 +95,13 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<input type="image" alt="">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
})

it('Input[type="image"] tag have non emtpy alt attribute should not result in an error', () => {
it('Input[type="image"] tag have non empty alt attribute should not result in an error', () => {
const code = '<input type="image" alt="test">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
20 changes: 10 additions & 10 deletions test/rules/attr-lowercase.spec.js
Original file line number Diff line number Diff line change
@@ -2,27 +2,27 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-lowercase'
const ruleId = 'attr-lowercase'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Not all lowercase attr should result in an error', () => {
let code = '<p TEST="abc">'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)

code = '<p id=""\r\n TEST1="abc" TEST2="abc">'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(2)
expect(messages[0].col).to.be(1)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(2)
expect(messages[1].col).to.be(13)
})
@@ -35,28 +35,28 @@ describe(`Rules: ${ruldId}`, () => {

it('Set is false should not result in an error', () => {
const code = '<p TEST="abc">'
ruleOptions[ruldId] = false
ruleOptions[ruleId] = false
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})

it('Set to array list should not result in an error', () => {
const code = '<p testBox="abc" tttAAA="ccc">'
ruleOptions[ruldId] = ['testBox', 'tttAAA']
ruleOptions[ruleId] = ['testBox', 'tttAAA']
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})

it('Set to array list with RegExp should not result in an error', () => {
const code = '<p testBox="abc" bind:tapTop="ccc">'
ruleOptions[ruldId] = ['testBox', /bind:.*/]
ruleOptions[ruleId] = ['testBox', /bind:.*/]
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})

it('Set to array list with regex string should not result in an error', () => {
const code = '<p testBox="abc" [ngFor]="ccc">'
ruleOptions[ruldId] = ['testBox', '/\\[.*\\]/']
ruleOptions[ruleId] = ['testBox', '/\\[.*\\]/']
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})
8 changes: 4 additions & 4 deletions test/rules/attr-no-duplication.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-no-duplication'
const ruleId = 'attr-no-duplication'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute name been duplication should result in an error', () => {
const code = '<a href="a" href="b">bbb</a>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(12)
})
8 changes: 4 additions & 4 deletions test/rules/attr-no-unnecessary-whitespace.spec.js
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-no-unnecessary-whitespace'
const ruleId = 'attr-no-unnecessary-whitespace'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute with spaces should result in an error', () => {
const codes = [
'<div title = "a" />',
@@ -17,7 +17,7 @@ describe(`Rules: ${ruldId}`, () => {
for (let i = 0; i < codes.length; i++) {
const messages = HTMLHint.verify(codes[i], ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)
}
2 changes: 1 addition & 1 deletion test/rules/attr-sort.spec.js
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ ruleOptions[ruleId] = true

describe(`Rules: ${ruleId}`, () => {
it('Attribute unsorted tags must result in an error', () => {
const code = '<div id="test" class="class" title="tite"></div>'
const code = '<div id="test" class="class" title="title"></div>'

const messages = HTMLHint.verify(code, ruleOptions)

8 changes: 4 additions & 4 deletions test/rules/attr-unsafe-chars.spec.js
Original file line number Diff line number Diff line change
@@ -2,18 +2,18 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-unsafe-chars'
const ruleId = 'attr-unsafe-chars'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute value have unsafe chars should result in an error', () => {
const code =
'<a href="https://vimeo.com/album/1951235/video/56931059‎">Sud Web 2012</a>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)
expect(messages[0].type).to.be('warning')
12 changes: 6 additions & 6 deletions test/rules/attr-value-double-quotes.spec.js
Original file line number Diff line number Diff line change
@@ -2,23 +2,23 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-value-double-quotes'
const ruleId = 'attr-value-double-quotes'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute value closed by single quotes should result in an error', () => {
const code = "<a href='abc' title=abc style=''>"
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(3)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(14)
expect(messages[2].rule.id).to.be(ruldId)
expect(messages[2].rule.id).to.be(ruleId)
expect(messages[2].line).to.be(1)
expect(messages[2].col).to.be(24)
})
8 changes: 4 additions & 4 deletions test/rules/attr-value-not-empty.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-value-not-empty'
const ruleId = 'attr-value-not-empty'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute value have no value should result in an error', () => {
const code = '<input disabled>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
12 changes: 6 additions & 6 deletions test/rules/attr-value-single-quotes.spec.js
Original file line number Diff line number Diff line change
@@ -2,23 +2,23 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-value-single-quotes'
const ruleId = 'attr-value-single-quotes'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Attribute value closed by double quotes should result in an error', () => {
const code = '<a href="abc" title=abc style="">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(3)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(14)
expect(messages[2].rule.id).to.be(ruldId)
expect(messages[2].rule.id).to.be(ruleId)
expect(messages[2].line).to.be(1)
expect(messages[2].col).to.be(24)
})
12 changes: 6 additions & 6 deletions test/rules/attr-whitespace.spec.js
Original file line number Diff line number Diff line change
@@ -2,33 +2,33 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'attr-whitespace'
const ruleId = 'attr-whitespace'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Double spaces in attributes should result in an error', () => {
const code = '<p test="test test1">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
})

it('Leading/trailing white space should result in an error', () => {
const code = '<p test=" testtest1 ">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
})

it('Double spaces and leading/trailing white space should result in an error', () => {
const code = '<p test=" test test1 ">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
})
})
8 changes: 4 additions & 4 deletions test/rules/doctype-first.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'doctype-first'
const ruleId = 'doctype-first'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Doctype not be first should result in an error', () => {
const code = '<html></html>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
})
8 changes: 4 additions & 4 deletions test/rules/doctype-html5.spec.js
Original file line number Diff line number Diff line change
@@ -2,18 +2,18 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'doctype-html5'
const ruleId = 'doctype-html5'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Doctype not html5 should result in an error', () => {
const code =
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "https://www.w3.org/TR/html4/strict.dtd"><html></html>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
expect(messages[0].type).to.be('warning')
10 changes: 5 additions & 5 deletions test/rules/empty-tag-not-self-closed.spec.js
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'empty-tag-not-self-closed'
const ruleId = 'empty-tag-not-self-closed'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('The empty tag no closed should not result in an error', () => {
const code = '<br><img src="test.jpg">'
const messages = HTMLHint.verify(code, ruleOptions)
@@ -18,11 +18,11 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<br /><img src="a.jpg"/>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
expect(messages[0].type).to.be('error')
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(7)
expect(messages[1].type).to.be('error')
10 changes: 5 additions & 5 deletions test/rules/head-require.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'head-script-disabled'
const ruleId = 'head-script-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('External script in head should result in an error', () => {
const code = '<head><script src="test.js"></script></head>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
@@ -22,7 +22,7 @@ describe(`Rules: ${ruldId}`, () => {
let code = '<head><script>alert(1);</script></head>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
code = '<head><script type="text/javascript">console.log(1)</script></head>'
10 changes: 5 additions & 5 deletions test/rules/head-script-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'head-script-disabled'
const ruleId = 'head-script-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('External script in head should result in an error', () => {
const code = '<head><script src="test.js"></script></head>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
@@ -22,7 +22,7 @@ describe(`Rules: ${ruldId}`, () => {
let code = '<head><script>alert(1);</script></head>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
code = '<head><script type="text/javascript">console.log(1)</script></head>'
20 changes: 10 additions & 10 deletions test/rules/href-abs-or-rel.spec.js
Original file line number Diff line number Diff line change
@@ -2,50 +2,50 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'href-abs-or-rel'
const ruleId = 'href-abs-or-rel'
const ruleOptions = {}

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Href value is not absolute with abs mode should result in an error', () => {
const code =
'<a href="a.html">aaa</a><a href="../b.html">bbb</a><a href="tel:12345678">ccc</a><a href="javascript:void()">ddd</a>'
ruleOptions[ruldId] = 'abs'
ruleOptions[ruleId] = 'abs'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(27)
})

it('Href value is absolute with abs mode should not result in an error', () => {
const code =
'<a href="http://www.alibaba.com/">aaa</a><a href="https://www.alibaba.com/">bbb</a><a href="tel:12345678">ccc</a><a href="javascript:void()">ddd</a>'
ruleOptions[ruldId] = 'abs'
ruleOptions[ruleId] = 'abs'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})

it('Href value is not relative with rel mode should result in an error', () => {
const code =
'<a href="http://www.alibaba.com/">aaa</a><a href="https://www.alibaba.com/">bbb</a><a href="tel:12345678">ccc</a><a href="javascript:void()">ddd</a>'
ruleOptions[ruldId] = 'rel'
ruleOptions[ruleId] = 'rel'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(3)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(44)
})

it('Href value is relative with rel mode should not result in an error', () => {
const code =
'<a href="a.html">aaa</a><a href="../b.html">bbb</a><a href="tel:12345678">ccc</a><a href="javascript:void()">ddd</a>'
ruleOptions[ruldId] = 'rel'
ruleOptions[ruleId] = 'rel'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})
10 changes: 5 additions & 5 deletions test/rules/html-lang-require.spec.js
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'html-lang-require'
const ruleId = 'html-lang-require'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('All the rest(non HTML) tags should not result in an error', () => {
const code = '<html lang="en-EN"><body><p></p></body></html>'
const messages = HTMLHint.verify(code, ruleOptions)
@@ -28,12 +28,12 @@ describe(`Rules: ${ruldId}`, () => {
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
})
it('HTML tag have an non emtpy and valid(en-EN) lang attribute should not result in an error', () => {
it('HTML tag have an non empty and valid(en-EN) lang attribute should not result in an error', () => {
const code = '<html lang="en-EN"></html>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
})
it('HTML tag have an non emtpy and valid(en) lang attribute should not result in an error', () => {
it('HTML tag have an non empty and valid(en) lang attribute should not result in an error', () => {
const code = '<html lang="en"></html>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
34 changes: 17 additions & 17 deletions test/rules/id-class-ad-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,60 +2,60 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'id-class-ad-disabled'
const ruleId = 'id-class-ad-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Id use ad keyword should result in an error', () => {
let code = '<div id="ad">test</div>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].type).to.be('warning')
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="ad-222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="ad_222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="111-ad">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="111_ad">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="111-ad-222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div id="111_ad_222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)
})
@@ -64,49 +64,49 @@ describe(`Rules: ${ruldId}`, () => {
let code = '<div class="ad">test</div>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="ad-222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="ad_222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="111-ad">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="111_ad">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="111-ad-222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)

code = '<div class="111_ad_222">test</div>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(5)
})
12 changes: 6 additions & 6 deletions test/rules/id-class-value.spec.js
Original file line number Diff line number Diff line change
@@ -2,21 +2,21 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'id-class-value'
const ruleId = 'id-class-value'
const ruleOptionsUnderline = {}
const ruleOptionsDash = {}
const ruleOptionsHump = {}
const ruleOptionsReg = {}

ruleOptionsUnderline[ruldId] = 'underline'
ruleOptionsDash[ruldId] = 'dash'
ruleOptionsHump[ruldId] = 'hump'
ruleOptionsReg[ruldId] = {
ruleOptionsUnderline[ruleId] = 'underline'
ruleOptionsDash[ruleId] = 'dash'
ruleOptionsHump[ruleId] = 'hump'
ruleOptionsReg[ruleId] = {
regId: /^_[a-z\d]+(-[a-z\d]+)*$/,
message: 'Id and class value must meet regexp',
}

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Id and class value be not lower case and split by underline should result in an error', () => {
const code = '<div id="aaaBBB" class="ccc-ddd">'
const messages = HTMLHint.verify(code, ruleOptionsUnderline)
8 changes: 4 additions & 4 deletions test/rules/id-unique.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'id-unique'
const ruleId = 'id-unique'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Id redefine should result in an error', () => {
const code = '<div id="test"></div><div id="test"></div>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(26)
expect(messages[0].type).to.be('error')
12 changes: 6 additions & 6 deletions test/rules/inline-script-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,18 +2,18 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'inline-script-disabled'
const ruleId = 'inline-script-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Inline on event should result in an error', () => {
const code =
'<body><img src="test.gif" onclick="alert(1);"><img src="test.gif" onMouseDown="alert(1);"></body>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(26)
expect(messages[0].type).to.be('warning')
@@ -31,7 +31,7 @@ describe(`Rules: ${ruldId}`, () => {
'<body><img src="javascript:alert(1)"><img src=" JAVASCRIPT:alert(1)"></body>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(11)
expect(messages[0].type).to.be('warning')
@@ -41,7 +41,7 @@ describe(`Rules: ${ruldId}`, () => {
'<body><a href="javascript:alert(1)">test1</a><a href=" JAVASCRIPT:alert(2)">test2</a></body>'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(9)
expect(messages[0].type).to.be('warning')
8 changes: 4 additions & 4 deletions test/rules/inline-style-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'inline-style-disabled'
const ruleId = 'inline-style-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Inline style should result in an error', () => {
let code = '<body><div style="color:red;"></div></body>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(11)
expect(messages[0].type).to.be('warning')
10 changes: 5 additions & 5 deletions test/rules/script-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'script-disabled'
const ruleId = 'script-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Add external script file should result in an error', () => {
const code = '<body><script src="test.js"></script></body>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('error')
@@ -21,7 +21,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<body><script>var test = "test";</script></body>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('error')
20 changes: 10 additions & 10 deletions test/rules/space-tab-mixed-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,40 +2,40 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'space-tab-mixed-disabled'
const ruleId = 'space-tab-mixed-disabled'
const ruleMixOptions = {}
const ruleSpaceOptions = {}
const ruleSpace4Options = {}
const ruleSpace5Options = {}
const ruleTabOptions = {}

ruleMixOptions[ruldId] = true
ruleSpaceOptions[ruldId] = 'space'
ruleSpace4Options[ruldId] = 'space4'
ruleSpace5Options[ruldId] = 'space5'
ruleTabOptions[ruldId] = 'tab'
ruleMixOptions[ruleId] = true
ruleSpaceOptions[ruleId] = 'space'
ruleSpace4Options[ruleId] = 'space4'
ruleSpace5Options[ruleId] = 'space5'
ruleTabOptions[ruleId] = 'tab'

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Spaces and tabs mixed in front of line should result in an error', () => {
// space before tab
let code = ' <a href="a"> bbb</a>'
let messages = HTMLHint.verify(code, ruleMixOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
// tab before space
code = ' <a href="a"> bbb</a>'
messages = HTMLHint.verify(code, ruleMixOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
// multi line
code = '<div>\r\n <a href="a"> bbb</a>'
messages = HTMLHint.verify(code, ruleMixOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(2)
expect(messages[0].col).to.be(1)
})
14 changes: 7 additions & 7 deletions test/rules/spec-char-escape.spec.js
Original file line number Diff line number Diff line change
@@ -2,23 +2,23 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'spec-char-escape'
const ruleId = 'spec-char-escape'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Special characters: <> should result in an error', () => {
const code = '<p>aaa>bbb< ccc</p>ddd\r\neee<'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(3)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(11)
expect(messages[2].rule.id).to.be(ruldId)
expect(messages[2].rule.id).to.be(ruleId)
expect(messages[2].line).to.be(2)
expect(messages[2].col).to.be(4)
})
@@ -27,7 +27,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '<p>Steinway & Sons</p>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(12)
})
8 changes: 4 additions & 4 deletions test/rules/src-not-empty.spec.js
Original file line number Diff line number Diff line change
@@ -2,13 +2,13 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'src-not-empty'
const ruleId = 'src-not-empty'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
it('Src be emtpy should result in an error', () => {
describe(`Rules: ${ruleId}`, () => {
it('Src be empty should result in an error', () => {
const code =
'<img src="" /><img src /><script src=""></script><script src></script><link href="" type="text/css" /><link href type="text/css" /><embed src=""><embed src><bgsound src="" /><bgsound src /><iframe src=""><iframe src><object data=""><object data>'
const messages = HTMLHint.verify(code, ruleOptions)
8 changes: 4 additions & 4 deletions test/rules/style-disabled.spec.js
Original file line number Diff line number Diff line change
@@ -2,17 +2,17 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'style-disabled'
const ruleId = 'style-disabled'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Style tag should result in an error', () => {
const code = '<body><style>body{}</style></body>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(7)
expect(messages[0].type).to.be('warning')
14 changes: 7 additions & 7 deletions test/rules/tag-pair.spec.js
Original file line number Diff line number Diff line change
@@ -2,26 +2,26 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'tag-pair'
const ruleId = 'tag-pair'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('No end tag should result in an error', () => {
let code = '<ul><li></ul><span>'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(9)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(20)

code = '<div></div>\r\n<div>aaa'
messages = HTMLHint.verify(code, ruleOptions)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(2)
expect(messages[0].col).to.be(9)
})
@@ -30,7 +30,7 @@ describe(`Rules: ${ruldId}`, () => {
const code = '</div>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
})
10 changes: 5 additions & 5 deletions test/rules/tag-self-close.spec.js
Original file line number Diff line number Diff line change
@@ -2,21 +2,21 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'tag-self-close'
const ruleId = 'tag-self-close'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('The empty tag no closed should result in an error', () => {
const code = '<br><img src="test.jpg">'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
expect(messages[0].type).to.be('warning')
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(5)
expect(messages[1].type).to.be('warning')
14 changes: 7 additions & 7 deletions test/rules/tagname-lowercase.spec.js
Original file line number Diff line number Diff line change
@@ -2,26 +2,26 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'tagname-lowercase'
const ruleId = 'tagname-lowercase'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('The tag name not all lower case should result in an error', () => {
const code = '<A href=""></A><SPAN>aab</spaN>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(4)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(1)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(12)
expect(messages[2].rule.id).to.be(ruldId)
expect(messages[2].rule.id).to.be(ruleId)
expect(messages[2].line).to.be(1)
expect(messages[2].col).to.be(16)
expect(messages[3].rule.id).to.be(ruldId)
expect(messages[3].rule.id).to.be(ruleId)
expect(messages[3].line).to.be(1)
expect(messages[3].col).to.be(25)
})
10 changes: 5 additions & 5 deletions test/rules/tagname-specialchars.spec.js
Original file line number Diff line number Diff line change
@@ -2,20 +2,20 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'tagname-specialchars'
const ruleId = 'tagname-specialchars'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('Special character in tag name should result in an error', () => {
const code = '<@ href="link"></@><$pan>aab</$pan>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[0].line).to.be(1)
expect(messages[0].col).to.be(16)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruleId)
expect(messages[1].line).to.be(1)
expect(messages[1].col).to.be(29)
})
30 changes: 15 additions & 15 deletions test/rules/tags-check.spec.js
Original file line number Diff line number Diff line change
@@ -2,56 +2,56 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'tags-check'
const ruleId = 'tags-check'
const ruleOptions = {}

ruleOptions[ruldId] = {
ruleOptions[ruleId] = {
sometag: {
selfclosing: true,
attrsRequired: [['attrname', 'attrvalue']],
},
}

describe(`Rules: ${ruldId}`, () => {
it('Tag <a> should have requered attrs [title, href]', () => {
describe(`Rules: ${ruleId}`, () => {
it('Tag <a> should have required attrs [title, href]', () => {
const code = '<a>blabla</a>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[1].rule.id).to.be(ruleId)
})
it('Tag <a> should not be selfclosing', () => {
const code = '<a href="bbb" title="aaa"/>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
})
it('Tag <img> should be selfclosing', () => {
const code = '<img src="bbb" title="aaa" alt="asd"></img>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
})
it('Should check optional attributes', () => {
const code = '<script src="aaa" async="sad" />'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(1)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
})
it('Should check redunant attributes', () => {
it('Should check redundant attributes', () => {
const code = '<main role="main" />'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[1].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
expect(messages[1].rule.id).to.be(ruleId)
})
it('Should be extendable trought config', () => {
it('Should be extendable through config', () => {
const code = '<sometag></sometag>'
const messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(2)
expect(messages[0].rule.id).to.be(ruldId)
expect(messages[0].rule.id).to.be(ruleId)
})
it('Should check required attributes with specifyed values', () => {
it('Should check required attributes with specified values', () => {
let code = '<sometag attrname="attrvalue" />'
let messages = HTMLHint.verify(code, ruleOptions)
expect(messages.length).to.be(0)
6 changes: 3 additions & 3 deletions test/rules/title-require.spec.js
Original file line number Diff line number Diff line change
@@ -2,12 +2,12 @@ const expect = require('expect.js')

const HTMLHint = require('../../dist/htmlhint.js').HTMLHint

const ruldId = 'title-require'
const ruleId = 'title-require'
const ruleOptions = {}

ruleOptions[ruldId] = true
ruleOptions[ruleId] = true

describe(`Rules: ${ruldId}`, () => {
describe(`Rules: ${ruleId}`, () => {
it('<title> be present in <head> tag should not result in an error', () => {
const code = '<html><head><title>test</title></head><body></body></html>'
const messages = HTMLHint.verify(code, ruleOptions)