mattsmithdev/codeception-markup-validator

Codeception的标记验证模块。

5.0.3 2023-01-22 14:19 UTC

This package is auto-updated.

Last update: 2024-09-22 18:07:16 UTC


README

注意 - 已过时的现有项目的分叉

这是基于以下包的一些小更新(似乎不再受支持)。我创建了此分叉,以便我的学生可以使用此库与现代PHP 8.0/8.1。

问题

在自动验收测试期间,以编程方式验证Web应用页面标记。

解决方案

Codeception的标记验证模块。[Codeception](http://codeception.com)。使用标记验证器(例如,[W3C Markup Validator Service](https://validator.w3.org/docs/api.html))验证网页标记(HTML、XHTML等)。不要让无效的页面进入生产。向您的验收测试套件添加一些零努力测试,以便在标记损坏时立即通知您。

$I->amOnPage('/');
$I->validateMarkup();

非常简单易用。实际上不需要任何配置。直接使用即可。如果您想进行修改,则可完全配置和扩展。模块的每个组件都可以用您自己的类替换。只需实现一个简单的接口并将自定义组件注入到模块中。

安装

模块安装的推荐方式是通过composer

composer require mattsmithdev/codeception-markup-validator

用法

将模块添加到您的验收测试套件配置中

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https:///'
        - Kolyunya\Codeception\Module\MarkupValidator

构建测试套件

codecept build

验证标记

$I->amOnPage('/');
$I->validateMarkup();

如果需要,您可以像这样为每个页面单独覆盖模块级别的消息过滤器配置

// Perform very strict checks for this particular page.
$I->amOnPage('/foo/');
$I->validateMarkup(array(
    'ignoreWarnings' => false,
));

// Ignore those two errors just on this page.
$I->amOnPage('/bar/');
$I->validateMarkup(array(
    'ignoredErrors' => array(
        '/some error/',
        '/another error/',
    ),
));

// Set error count threshold, do not ignore warnings
// but ignore some errors on this page.
$I->amOnPage('/quux/');
$I->validateMarkup(array(
    'errorCountThreshold' => 10,
    'ignoreWarnings' => false,
    'ignoredErros' => array(
        '/this error/',
        '/that error/',
    ),
));

配置

模块不需要任何配置。如果您已启用PhpBrowserWebDriver模块,则默认设置将正常工作。

尽管如此,该模块完全可配置且可修改。它由四个主要组件组成:提供要验证的标记的provider,执行实际标记验证的validator,过滤从验证器接收到的消息的filter,以及确定如何打印从验证器接收到的消息的printer。您可以使用自定义实现配置每个组件。

Provider

模块可以配置为使用自定义的provider,该provider将为validator提供标记。默认提供者尝试从PhpBrowserWebDriver模块中获取标记。

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https:///'
        - Kolyunya\Codeception\Module\MarkupValidator:
            provider:
                class: Acme\Tests\Path\To\CustomMarkupProvider

Validator

模块可以配置为使用自定义的validator,该validator将验证从provider接收到的标记。默认验证器使用[W3C Markup Validation Service API](https://validator.w3.org/docs/api.html)。

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https:///'
        - Kolyunya\Codeception\Module\MarkupValidator:
            validator:
                class: Acme\Tests\Path\To\CustomMarkupValidator

Filter

模块可以配置一个自定义的过滤器,该过滤器将过滤从验证器接收到的消息。您可以实现自己的过滤器或调整默认过滤器

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https:///'
        - Kolyunya\Codeception\Module\MarkupValidator:
            filter:
                class: Kolyunya\Codeception\Lib\MarkupValidator\DefaultMessageFilter
                config:
                    errorCountThreshold: 10
                    ignoreWarnings: true
                    ignoredErrors:
                        - '/some error/'
                        - '/another error/'

打印机

模块可以配置一个自定义的打印机,该打印机定义了从验证器接收到的消息的打印方式。默认打印机打印消息类型、摘要、详细信息、第一行编号、最后一行编号和相关标记。默认打印机

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https:///'
        - Kolyunya\Codeception\Module\MarkupValidator:
            printer:
                class: Acme\Tests\Path\To\CustomMessagePrinter

贡献

如果您发现了一个错误或有功能请求,请随意提交问题。如果您想发送拉取请求,向后兼容的更改应针对master分支,而破坏性更改则应针对下一个主要版本分支。