aklump/check-pages

非常简单的网站质量保证。

0.23.0 2023-12-29 23:48 UTC

README

检查页面

非常简单的HTTP质量保证

Check Pages

重开发

自行承担风险。此项目正在重开发中,并且经常发生变化。

摘要

该项目旨在提供一个网站质量保证测试过程,该过程实施非常快速,维护简单。您可以使用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

  1. 打开一个新shell窗口,该窗口将运行用于示例测试页面的PHP服务器。

     $ ./bin/start_test_server.sh
    
  2. 打开第二个shell窗口以执行测试。

     $ ./bin/run_tests.sh
    

1 如果您看不到 tests 目录,则创建一个,并将 examples 中的内容复制到 tests 中。示例 tests 目录仅在您使用 create-project 作为安装方法时创建。

编写您的第一个测试套件

  1. 使用 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

除非您启用它,或者选择器类型(即 stylejavascript)需要它,否则在测试期间不会运行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 测试相关链接

过滤器

使用 --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  

贡献

如果您觉得这个项目很有用...请考虑捐赠