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