mattsmithdev / codeception-markup-validator
Codeception的标记验证模块。
Requires
- php: >=5.6
- codeception/codeception: >=5.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^9.5
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/', ), ));
配置
模块不需要任何配置。如果您已启用PhpBrowser
或WebDriver
模块,则默认设置将正常工作。
尽管如此,该模块完全可配置且可修改。它由四个主要组件组成:提供要验证的标记的provider
,执行实际标记验证的validator
,过滤从验证器接收到的消息的filter
,以及确定如何打印从验证器接收到的消息的printer
。您可以使用自定义实现配置每个组件。
Provider
模块可以配置为使用自定义的provider
,该provider
将为validator
提供标记。默认提供者尝试从PhpBrowser
和WebDriver
模块中获取标记。
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
分支,而破坏性更改则应针对下一个主要版本分支。