alex-moreno / glitcherbot
轻松实现视觉回归测试
Requires
- php: >=7.0
- ext-simplexml: *
- amphp/parallel: ^1.4
- guzzlehttp/guzzle: ^7.2
- symfony/console: ^5.2
- symfony/http-kernel: ^5.2
- symfony/routing: ^5.2
- twig/twig: ^3.1
Suggests
- php: >=7.4
- ext-sqlite3: *
README
自动化无聊的事情。
管理一个网站可能会很困难。你可能会拥有数百个页面,并且在事件(如部署、流量高峰、编辑变更、广告或行为不良的javascripts)之后确保所有页面都功能正常是一项挑战...创建软件和维护网站和应用程序是困难的...回归测试不应该。
在开始之前,克隆/分叉此存储库并进入文件夹。使用此工具有两种方式:使用 Vagrant 或 Docker。
Vagrant
下载并安装 Vagrant。
要求
- PHP 7.0
- Sqlite
- 一个(可能很大的)待爬取URL列表。自动检测Robots.txt和Sitemaps
安装
- 下载并解压包
curl -L -# -C - -O "https://github.com/alex-moreno/glitcherbot/archive/main.zip"
unzip main.zip
cd glitcherbot-main
-
运行:
composer install
-
复制你的config.php
cp config.sample.php config.php
使用
创建一个包含要迭代的URL列表的.csv文件(见example.csv)。
如果你使用Acquia Site Factory,提供了一条命令来从sites.json文件生成站点列表。你需要
- 下载Acquia Cloud订阅中的sites.json
scp [subscription][ENV].[ENV]@[subscription][ENV].ssh.enterprise-g1.acquia-sites.com:/mnt/files/[subscription][ENV]/files-private/sites.json ./sites-dev.json
-
如果你想在使用虚拟机内的爬虫(推荐)。
-
对那个json运行爬取
php bin/visual_regression_bot.php acquia:acsf-crawl-sites sites.json
通过运行
php bin/visual_regression_bot.php
使用
php bin/visual_regression_bot.php help <command>
在调试时,通过添加多个 -v
标志来增加详细程度。
-v
: 详细 -vv
: 非常详细 -vvv
: 调试
配置
您可以配置一些设置,例如您将发送到站点的标头或您想要使用的并发性。
将config.sample.php移动到config.php并适应您的需求。例如
<?php
return [
'headers' => [
'User-Agent' => 'GlitcherBotScrapper/0.1',
'Accept' => 'application/json',
],
'http_errors' => false,
'connect_timeout' => 0, // wait forever
'read_timeout' => 0,
'timeout' => 0, // wait forever
'concurrency' => 60,
];
注意:配置的并发性越高,每个步骤上运行的站点就越多,但请注意,php运行速度快(与普遍看法相反),它可能会向站点发送高负载并将其置于困境。大功率意味着更大的责任。
独立工具
要作为独立界面运行回归工具,您需要将您的web服务器指向存储库中的html/目录。
PHP Web服务器
已包含一个composer脚本来帮助测试此工具。要运行此命令,请使用以下命令。
composer start
然后在浏览器中导航到以下地址。
http://0.0.0.0:8000/
Docker
已包含一个Docker设置来帮助运行工具。
下载并安装 Docker
启动Docker容器
此命令将启动容器
make up
构建工具(只需运行一次)
此命令将检查是否存在配置文件,如果需要则创建一个。然后它将安装所有Composer依赖项。
make build
爬取
默认情况下,此命令将使用sample-sites.csv作为爬取URL的来源。
make crawl
要使用不同文件运行命令,请使用以下语法
make crawl SITES_CSV=路径_to_sites_csv
或对于Acquia json文件
使用 crawl-acquia,设置 SITES_JSON=sitesd8-prod.json
请注意,爬取操作在容器内运行,因此 path_to_sites_csv
需要是相对于容器的路径。
Web 界面
在浏览器中打开工具。
make open
停止容器
make stop
链式命令。
您可以一次性运行所有命令,例如以下命令将启动容器、构建、爬取并打开浏览器。
make up build crawl open
参数
--include_sitemaps=yes
这将包括网站中所有从 robots.txt 引用的 sitemap。
--force_sitemaps=yes
使用 makefile 和 Docker
make crawl SITES_CSV=sample-sites.csv INCLUDE_SITEMAPS=yes
make crawl SITES_CSV=sample-sites.csv FORCE_SITEMAPS=yes