aklump / check-pages
非常简单的网站质量保证。
Requires
- php: ^7.4
- ext-curl: *
- ext-dom: *
- ext-json: *
- aklump/local-timezone: ^0.0.1
- aklump/loft-lib: ^2
- behat/mink: ^1.8
- chrome-php/chrome: ^1.8
- dmore/chrome-mink-driver: ^2.7
- guzzlehttp/guzzle: ^6.3|^7.0
- justinrainbow/json-schema: ^5.2
- laminas/laminas-xml2json: ^3.2
- ralouphie/mimey: ^2.1
- ramsey/collection: ^1.3
- shanethehat/pretty-xml: ^1.0
- spatie/browsershot: ^3.57
- symfony/config: ^4.4|^5.4
- symfony/console: ^4.4|^5.4
- symfony/css-selector: ^3.4|^4.0|^5.0
- symfony/dependency-injection: ^4.4|^5.4
- symfony/dom-crawler: ^5.0
- symfony/event-dispatcher: ^4.4|^5.4
- symfony/expression-language: ^4.4|^5.4
- symfony/yaml: ^3.4|^4.0|^5.0
- wikimedia/composer-merge-plugin: ^2.1
Requires (Dev)
- drupal/coder: ^8.3
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
- dev-master
- 0.23.0
- 0.22.0
- 0.21.0
- 0.20.1
- 0.20.0
- 0.19.1
- 0.19.0
- 0.18.0
- 0.17.0
- 0.16.8
- 0.16.7
- 0.16.6
- 0.16.5
- 0.16.4
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.2
- 0.15.1
- 0.15.0
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.1
- 0.11.0
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.0
- 0.7.2
- 0.7.1
- 0.7.0
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.0
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.3
- 0.1.2
This package is auto-updated.
Last update: 2024-09-19 00:07:03 UTC
README
检查页面
非常简单的HTTP质量保证
重开发
自行承担风险。此项目正在重开发中,并且经常发生变化。
摘要
该项目旨在提供一个网站质量保证测试过程,该过程实施非常快速,维护简单。您可以使用YAML编写测试,它们可以简单到仅检查主页上的200 HTTP响应。
- visit: /
或确保管理部分受保护。
-
visit: /admin
why: Make sure the `/admin` path returns 403 forbidden when not logged in.
status: 403
在第三个测试中,我们可以断言主页上有一个标志图像,如下所示
- visit: /
find:
- dom: '#logo img'
count: 1
最后,确保页面上没有未处理的令牌(即子字符串未出现)
- visit: /
find:
- not contains: '[site:name]'
有关更多代码示例,请探索 /examples 目录。
请访问 https://aklump.github.io/check_pages 以获取完整文档。
目的和限制的清晰度
该工具的使命是以最简单、最简洁的语法提供对URL和网页的测试。对于需要元素交互的测试场景,例如点击、悬停、滚动等,有如 Cypress 这样的出色项目。该项目永远不会尝试与这些项目竞争,并且始终将其DOM测试限制在对加载的URL的单个快照的断言。
使用的术语
- 测试运行器 - 一个非常简单的PHP文件,用于定义配置和要运行的测试套件以及顺序。@see includes/runner.php。
- 测试套件 - 一个包含一个或多个对URL进行检查的YAML文件。@see includes/suite.yml。
- 测试 - 套件中的单个URL检查。
- 断言 - 对测试的HTTP响应的单个检查操作,即标题、正文、状态码、javascript等。
要求
- 您必须使用Composer安装。
- 测试套件是用YAML编写的。
- 不需要有PHP经验。复制粘贴就足够了。
安装
$ composer require aklump/check-pages --dev
- 在大多数情况下,使用
--dev
是合适的,但请自行决定。 - 在安装过程中,您将被告知是否要为您创建一个测试目录。这将复制基本脚手架以从中构建。1
- 更详细的示例位于 example 目录中。
示例测试演示
如果您是此项目的初学者并想进行演示,从示例开始是一个好主意。使用以下命令运行示例测试。然后打开 example/tests 目录中的文件,研究它们以了解它们是如何工作的。1
-
打开一个新shell窗口,该窗口将运行用于示例测试页面的PHP服务器。
$ ./bin/start_test_server.sh
-
打开第二个shell窗口以执行测试。
$ ./bin/run_tests.sh
1 如果您看不到 tests 目录,则创建一个,并将 examples 中的内容复制到 tests 中。示例 tests 目录仅在您使用 create-project
作为安装方法时创建。
编写您的第一个测试套件
- 使用
checkpages init
在当前目录中创建测试目录和运行器。
多个配置文件
本项目的目标是能够在不同的配置下运行相同的测试。您可以创建多个配置文件,以便能够在不同的基础URL上运行相同的测试,例如在开发和生产环境中。
.
└── tests
├── config/dev.yml
├── config/live.yml
├── suite.yml
└── runner.php
在 runner.php 文件中,使用以下行来指定默认的配置文件:
load_config('config/dev');
当您准备使用生产环境配置运行测试时,将配置文件名添加到CLI命令中,例如:
$ ./check_pages runner.php --config=config/live
测试函数
您PHP测试文件的测试函数位于 includes/runner_functions.inc。
JavaScript 是否受支持?
是的,默认情况下不支持,但您可以通过指定测试需要运行JavaScript来启用。请继续阅读...
JavaScript 测试要求
- 您的测试机器必须已安装Chrome。
按测试启用JavaScript
除非您启用它,或者选择器类型(即 style
或 javascript
)需要它,否则在测试期间不会运行JavaScript。如果您需要断言某个元素存在(该元素由JavaScript创建或需要在页面上运行JavaScript),您需要在测试中指定以下内容,即 js: true
。
- visit: /foo js: true find: - dom: .js-created-page-title text: Javascript added me to the DOM!
断言JavaScript评估
假设您想断言URL片段的值。您可以使用 javascript
选择器来实现。当页面加载完成后,javascript
的值应该是要评估的表达式。请注意,您可以省略 js: true
,因为它将自动设置。
- visit: /foo find: - javascript: location.hash is: "#top"
JavaScript 测试相关链接
- Chrome DevTools Protocol 1.3
- 了解更多
- CLI参数
- 关于参数的更多信息
- https://github.com/GoogleChrome/chrome-launcher
- https://peter.sh/experiments/chromium-command-line-switches/
- https://raw.githubusercontent.com/GoogleChrome/chrome-launcher/v0.8.0/scripts/download-chrome.sh
过滤器
使用 --filter
来限制要运行的测试套件。
传递给过滤器的值将与套件的 $group/$id
进行匹配。在幕后,它被当作正则表达式模式处理,如果您不包括分隔符,将自动添加,并且大小写不考虑。
给定以下测试套件...
.
├── api
│ ├── menus.yml
│ ├── reports.yml
│ └── users.yml
└── ui
├── footer.yml
├── login.yml
└── menus.yml
请注意使用 /
分隔符来控制组如何影响结果。
复杂过滤器
您可以提供复杂的过滤器,使用类似这样的 or
逻辑
./check_pages runner.php -f reports -f menus
故障排除
尝试使用 --response
来查看响应源代码。
./check_pages runner.php --response
用法
在这种情况下,由于项目将位于您的供应商目录中,因此当您运行测试脚本时,您需要提供测试文件的目录路径,如下所示:
./vendor/bin/check_pages runner.php --dir=./tests_check_pages
此示例假设文件结构如下:
.
├── tests_check_pages
│ └── runner.php
└── vendor
└── bin
└── check_pages
贡献
如果您觉得这个项目很有用...请考虑捐赠。