kolyunya/codeception-markup-validator

Codeception 的标记验证模块。

5.0.0 2023-02-12 00:49 UTC

This package is auto-updated.

Last update: 2024-09-12 18:12:34 UTC


README

Latest Stable Version Build Status PHPStan Scrutinizer Code Quality Code Climate

问题

在自动化验收测试期间对 web 应用页面进行标记验证。

解决方案

Codeception 的标记验证模块。[Codeception](http://codeception.com) 验证网页标记(HTML、XHTML 等),使用标记验证器,例如 [W3C 标记验证服务](https://validator.w3.org/docs/api.html)。不要让无效页面进入生产环境。添加一些零成本测试到您的验收测试套件中,当您的标记损坏时,它会立即通知您。

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

使用简单。实际上不需要配置。按预期工作。如果需要,您可以完全自定义和扩展。模块的每个组件都可以用您自定义的类替换。只需实现一个简单的接口,并将自定义组件注入到模块中。

安装

推荐通过 composer 安装模块

composer require --dev kolyunya/codeception-markup-validator

用法

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

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: 'https://127.0.0.1/'
        - 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,该提供者将为 validator 提供标记。默认提供者尝试从 PhpBrowserWebDriver 模块中获取标记。

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

验证器

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

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

过滤器

模块可以配置为使用自定义的 filter,该过滤器将过滤从 validator 收到的消息。您可以实现自己的 filter 或修改一个 默认过滤器

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

打印机

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

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

贡献

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