@telusdigital/nightwatch-seodeprecated

Nightwatch.js utility assertion for SEO testing in accordance to TELUS digital SEO rules

Usage no npm install needed!

<script type="module">
  import telusdigitalNightwatchSeo from 'https://cdn.skypack.dev/@telusdigital/nightwatch-seo';
</script>

README

Nightwatch SEO version License

DEPRECATED in favor of Lighthouse

Nightwatch.js utility assertion for SEO testing in accordance to TELUS digital SEO rules

Build Status Downloads Code Climate Dependency Status Dependencies

Install

# using npm
npm install --only=production --save @telusdigital/nightwatch-seo

# using yarn
yarn add @telusdigital/nightwatch-seo --dev

Usage

Update your nightwatch config:

{
  custom_assertions_path: ["./node_modules/@telusdigital/nightwatch-seo/assertions"]
}

Use in your tests:

module.exports = {
  'Test': function (browser) {
    browser.assert.seo('#app', {
      scoped: true
    })
  }
}

API

browser.assert.seo(context, options)

Analyzes the defined context against SEO rules

Name Type Default Required Description
context String 'html' ✖️ A CSS selector that selects the portion(s) of the document that must be analyzed
options Object null ✖️ configure how SEO assertion operates

options

Name Type Default Required Description
meta Boolean false ✖️ check page meta
titleRegExp RegExp /.* - TELUS.com/ ✖️ configurable regex for assertions</td> </tr> </tbody> </table> <h2><a id="seo-rules" class="anchor" aria-hidden="true" href="#seo-rules"></a>SEO Rules</h2> <p>This is a work in progress, checklist below indicates what has been implemented to date:</p> <h6><a id="layout" class="anchor" aria-hidden="true" href="#layout"></a>Layout</h6> <ul> <li><p><code><h1/></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled checked>element should be unique and found only once per page</li> </ul> </li> <li><p><code><img></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled checked>element should have <code>alt</code> attributes</li> <li class="task-list-item"><input type="checkbox" disabled>element <code>src</code> attribute should be separated by underscores</li> </ul> </li> </ul> <h6><a id="meta" class="anchor" aria-hidden="true" href="#meta"></a>Meta</h6> <ul> <li><p>Page URL</p> <ul> <li class="task-list-item"><input type="checkbox" disabled>URL phrase should be separated with dashes (<code>-</code>) between each word</li> </ul> </li> <li><p><code><link rel="canonical"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist and be unique</li> <li class="task-list-item"><input type="checkbox" disabled>element <code>href</code> attribute should not be empty</li> <li class="task-list-item"><input type="checkbox" disabled>element <code>href</code> attribute should exclude provincial parameters, tracking codes and any other extra parameters & query strings</li> </ul> </li> <li><p><code><title></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled checked>element should exists and be unique</li> <li class="task-list-item"><input type="checkbox" disabled checked>element should conform to pattern (<code> - TELUS.com</code>)</li> <li class="task-list-item"><input type="checkbox" disabled checked>element content length should be not exceed <code>65</code> characters</li> </ul> </li> <li><p><code><meta name="description"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled checked>element should exists and be unique</li> <li class="task-list-item"><input type="checkbox" disabled checked>element content length should not exceed <code>155</code> characters</li> </ul> </li> </ul> <h6><a id="social-meta" class="anchor" aria-hidden="true" href="#social-meta"></a>Social Meta</h6> <ul> <li><p><code><meta property="og:title"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exists and be unique</li> <li class="task-list-item"><input type="checkbox" disabled>element should contain company domain name (<code>TELUS.com</code>)</li> <li class="task-list-item"><input type="checkbox" disabled>element should use a spaced dash (<code>-</code>) to separate sections</li> <li class="task-list-item"><input type="checkbox" disabled>element content length should be not exceed <code>65</code> characters</li> </ul> </li> <li><p><code><meta property="og:description"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exists and be unique</li> <li class="task-list-item"><input type="checkbox" disabled>element content length should not exceed <code>155</code> characters</li> </ul> </li> <li><p><code><meta property="og:url"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exists and be unique</li> <li class="task-list-item"><input type="checkbox" disabled>element <code>content</code> attribute should not be empty</li> <li class="task-list-item"><input type="checkbox" disabled>element <code>content</code> attribute should exclude provincial parameters, tracking codes and any other extra parameters & query strings</li> </ul> </li> <li><p><code><meta property="og:image"></code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist and be unique</li> <li class="task-list-item"><input type="checkbox" disabled>element should contain an image URL that best represents the page</li> </ul> </li> </ul> <h6><a id="structured-data" class="anchor" aria-hidden="true" href="#structured-data"></a>Structured Data</h6> <h5><a id="for-product-detail-pages-ie-phones-and-accessories" class="anchor" aria-hidden="true" href="#for-product-detail-pages-ie-phones-and-accessories"></a>For product detail pages ie phones and accessories</h5> <ul> <li><p><code>"@type": "Product"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"name"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"description"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"image"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"brand"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"@type": "Offer"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"price"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"priceCurrency"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"availability"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"url"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> </ul> <h5><a id="for-video-content-types" class="anchor" aria-hidden="true" href="#for-video-content-types"></a>For video content types</h5> <ul> <li><p><code>"@type": "VideoObject"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"name"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"description"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"thumbnailUrl"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist</li> </ul> </li> <li><p><code>"uploadDate"</code></p> <ul> <li class="task-list-item"><input type="checkbox" disabled>element should exist and in ISO 8601 format</li> </ul> </li> </ul> <hr> <blockquote> <p>:copyright: <a href="https://labs.telus.com/">TELUS digital</a> ·  License: <a href="http://choosealicense.com/licenses/isc/">ISC</a> ·  Github: <a href="https://github.com/telusdigital">@telusdigital</a> ·  Twitter: <a href="https://twitter.com/telusdigital">@telusdigital</a></p> </blockquote> </div></article> <aside><h2 class="svelte-1u3txz5">Details</h2> <dl class="details f-d1 svelte-1u3txz5"><div class="svelte-1u3txz5"><dt class="svelte-1u3txz5">Downloads (weekly)</dt> <dd class="f-mono f-h1"><div class="container svelte-a3j687"><div class="dot svelte-a3j687"></div> <div class="dot svelte-a3j687"></div> <div class="dot svelte-a3j687"></div> </div></dd> </div><div class="svelte-1u3txz5"><dt class="svelte-1u3txz5">Updated</dt> <dd><time class="" datetime="2020-12-15T21:38:57.828Z">December 15, 2020</time></dd> </div><div class="svelte-1u3txz5"><dt class="svelte-1u3txz5">Created</dt> <dd><time class="" datetime="2017-08-23T03:59:22.183Z">August 23, 2017</time></dd> </div><div class="svelte-1u3txz5"><div class="wrapper svelte-qjxoui"><dt class="header svelte-qjxoui"><span class="title svelte-qjxoui">Package score <a class="ml1 f-w400" href="https://docs.skypack.dev/package-authors/package-checks" target="_blank">learn more</a></span> <span class="f-u1"> <div class="container svelte-a3j687"><div class="dot svelte-a3j687"></div> <div class="dot svelte-a3j687"></div> <div class="dot svelte-a3j687"></div> </div></span></dt> <dd class="pt1"><ul class="checks"><li class="checks-check svelte-qjxoui"><span class="status__loading svelte-qjxoui" aria-label="loading"></span>Package Security </li><li class="checks-check svelte-qjxoui"><span class="status__warn svelte-qjxoui" aria-label="not added yet"></span> ES Module Entrypoint <a class="action svelte-qjxoui" href="https://docs.skypack.dev/package-authors/package-checks#esm" target="_blank" rel="noopener noreferrer">Info</a> </li><li class="checks-check svelte-qjxoui"><span class="status__warn svelte-qjxoui" aria-label="not added yet"></span> Export Map <a class="action svelte-qjxoui" href="https://docs.skypack.dev/package-authors/package-checks#export-map" target="_blank" rel="noopener noreferrer">Info</a> </li><li class="checks-check svelte-qjxoui"><svg class="status__check svelte-qjxoui" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13 9"><title>added Keywords
  • added License
  • added README
  • added Repository URL
  • TypeScript Types Info
  • License
    ISC
    Dependencies
    0
    Links