我正在与Mink / Sahi合作为我的网站编写功能测试套件。
我使用 Firefox 和 Chrome 进行了一组测试,对此我很满意。他们每晚都在我们的 Jenkins 盒子上运行,并且运行良好。
然而,因为我们的 Jenkins 盒子是一个服务器,而 Chrome/Firefox 是 GUI 应用程序,所以我不得不让测试在我的台式机上运行。这很痛苦,因为这意味着我必须每晚都打开它,这不利于环境和成本。另外,如果它在电源、网络或软件方面有任何问题,那么测试就会失败。
所以我想要一些关于切换测试以在 Jenkins 盒子本身上使用无头浏览器的建议。
看来我有三个选择:Goutte、Zombie 和 Phantom(当然,除非有人可以推荐另一个)。以下总结了我到目前为止的进展:
Goutte:这是 PHP 驱动的,因此可以在 Mink 内部运行,无需 Sahi。这听起来很棒,因为 Jenkins 盒子的资源有限,所以我需要安装和运行的越少越好。但是,我需要运行 JS 代码作为测试的一部分,我知道 Goutte 无法做到这一点。这能排除吗?
Zombie:在 Node.js 下运行。不幸的是,我根本无法完成这项工作。我已经安装了 Node、NPM 和 Zombie,但我无法让 Mink 识别它。谁能给我一些比 Mink 网站更清晰的说明,告诉我如何运行它?
Phantom:不幸的是,Mink 没有 Phantom 的驱动程序,所以我必须通过 Sahi 运行它。正如我所说,我宁愿不必在 Jenkins 服务器上安装 Sahi,尤其是因为它还需要作为服务器连续运行。但这是迄今为止我唯一成功的。在 Sahi 下运行它,我可以让我的测试成功运行(虽然不是一致的,这是一个令人担心的问题 - 它似乎随机超时,大约三分之一)。任何人都可以建议一种无需安装 Sahi(或任何其他中间层服务器)即可运行它的方法吗?或者如果我确实需要 Sahi,谁能告诉我如何配置 Jenkins 以在测试套件开始时启动 Sahi 并在结束时停止它?
我真的很感激任何关于如何进行的建议。出于某种原因,这些选择似乎都没有明显的胜利。但是功能测试很重要,所以这一定是一个已解决的问题。对我来说最好的解决方案是什么?
(我知道还有用 Javascript 重写我的脚本以直接与 Zombie 或 Phantom 对话的选项。我不想这样做,因为当它们失败时,我仍然需要看到它们在 Firefox 中运行以查看发生了什么错了,所以像 Mink 这样的跨浏览器界面是理想的——更不用说我已经用 PHP 编写了所有测试!)
感谢您的任何建议。:)