宣布Symfony Pob娱乐下载anther 1.0

两年后这个库的第一个版本我很高兴地宣布黑豹1.0版本立即可用

Symfony Pantob娱乐下载her项目的标志

Panther是一个浏览器测试和网络抓取库WebDriver W3C规范操作真正的网络浏览器。Chrome和Firefox是原生支持的,而Safari、Edge和Opera可以通过一些额外的配置来使用。ob直播app还支持诸如Sauce Labs和Browserstack等云测试提供商。

如你所知,Symfony团队ob娱乐下载努力工作提供了一个现代和直接集成JavaScript的框架通过用户体验计划

在这种情况下,拥有一个支持JavaScript的优秀浏览器测试库是必须的。因为黑豹实施了BrowserKit API在Symfony生态系统的其他部分中使用它是很简单的。ob娱乐下载例如,现有的功能测试可以通过Panther使用真正的浏览器执行,(几乎)不需要更改代码:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
名称空间应用\ \测试控制器;用Symfob娱乐下载ony \包\ FrameworkBundle \ \ WebTestCase测试;+使用Syob娱乐下载mfony \ \豹\ PantherTestCase组件;-class PostControllerTest扩展WebTestCase+类PostControllerTest扩展PantherTestCase{公共函数testShowPost() {- $client = static::createClient();+ $client = static::createPantherClient();客户端- >请求(“得到”,“/ post / hello world”);$ this - > assertSelectorTextContains (' html h1。title', 'Hello World');}}

这也意味着您可以测试您的javascript增强的Twig模板直接使用PHPUnit(和其他测试工具)!

在引子下,Panther自动启动一个web服务器,公开您的应用程序和浏览器驱动程序(不需要Selenium server),然后使用PHP WebDriver库我一直致力于维护和改进执行该场景。

在过去的两年里,我们有69个人们致力于稳定库,改善开发体验,使其更快!

在过去的几天里,我们还显著地增强了测试API,集成了框架的其他组件,包括Flex和MakerBundle,以及调试体验!让我们来发现这些变化。

更好的新员工培训

为了改善黑豹的初始体验,我们增加了一个Flex食谱生成所需的配置。

运行以下命令在任何Symfony项目中安装Panther及其PHPUnit集成:ob娱乐下载

1
作曲家req—dev panther phpunit

正如安装后消息所示,您还需要ChromeDriver或GeckoDriver,这取决于您是想使用谷歌Chrome(默认)还是Mozilla Firefox运行测试。您还可以使用这两种浏览器来执行整个测试套件,以确保您的项目可以在两种最流行的浏览器上正常运行。

要安装这些驱动程序,请使用操作系统的包管理器或执行丹尼尔Brekelmans浏览器驱动安装程序,现在由黑豹来支持:

1 2
编译器需要——dev dbrekelmans/bdiVendor /bin/bdi检测驱动

更好的是:如果你使用兼容的Docker定义,你什么都不用做,Flex会自动更新Dockerfile在镜像中安装Chromedriver。但是我们将在接下来的博客文章中回到这个新的Docker集成!

最后,开放phpunit.xml.dist并取消注释Flex为注册PHPUnit扩展而添加的代码片段:

1 2 3
<扩展><扩展“ob娱乐下载Symfony \ \豹\ ServerExtension组件”/>扩展>

使用MakerBundle生成测试类

我们还改进了Panther与MakerBundle的集成!它现在包含了一个生成黑豹测试骨架的专用命令。用它来创建你的第一个黑豹测试:

1
bin /控制台:测验

当问到要生成的测试类型时,请选择PantherTestCase

将生成一个类似于此的测试文件:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<?php/ /测试/ MyPantherTest.php名称空间应用程序测试使用ob娱乐下载组件PantherTestCaseMyPantherTest扩展PantherTestCase公共函数testSomething()无效客户端静态::createPantherClient ();履带客户端->请求(“得到”' / ');->assertSelectorTextContains (“标题”“Hello World”);}}

运行它:

1
php bin / phpunit)

改进调试体验

当然,这个测试没有通过:我们还没有在应用程序中创建任何页面。但是看一下内容var / error-screenshots /目录!为了帮助你调试你的测试,Panther现在会在测试失败时自动截取浏览器窗口的截图:

错误截图

还有更多!有时,检查控制台日志、使用JavaScript调试器或摆弄应用程序以了解问题所在是很方便的。执行如下命令:

1
PANTHER_NO_HEADLESS=1 bin/phpunit——debug
ob娱乐下载Symfony Panther调试Chrome

多亏了PANTHER_NO_HEADLESS环境变量,Panther打开一个真正的浏览器窗口,所以你可以看到发生了什么。因为——调试选项已启用(由丹妮拉德),如果测试失败,黑豹将保持窗口打开,直到你在终端按下“enter”。这使您有机会看到错误发生时应用程序的确切状态,并使用浏览器的开发工具来查找问题。

改进的异步测试

除了提供的断言之外由PHPUnit)而且在Syob娱乐下载mfony, Panther包含了许多致力于测试JavaScript和CSS支持的网站的断言。使用这些断言,可以很容易地执行诸如“单击此按钮后必须出现此元素”、“此文本必须在此用户操作发生之前隐藏”、“在表单无效时必须禁用此按钮”等场景。

在Panther 1.0中,我们添加了新的断言,允许您轻松断言将来会发生什么事情。

让我们假设已经安装了Symfony ob娱乐下载UX。如果不是这样,那就输入作曲家需要ux.不要忘记按照Flex配方显示的说明完成安装并启动Webpack Encore开发服务器。有关的详细信息stimulus-bridge欧宝官网下载app文档。

然后创建一个刺激控制器:

1 2 3 4 5 6 7 8 9
/ /资产/控制器/ hello_controller.js出口默认的扩展控制器{connect() {setTimeout(()= >.element。textContent =“这将在1秒后替换div的内容!”1000);}}

这里是对应的枝条模板的一些页面访问通过/你好

1 2
{/ hello / hello.html #模板。树枝#}<div数据控制器“你好”>最初的内容div>

文本“初始内容”将显示1秒,然后由刺激控制器替换。我们使用setTimeout ()为了简单起见,但在实际应用中,你的控制器可能会fetch ()数据来自API的平台端点或等待来自Mercure集线器的数据

我们如何测试文本是否真的被替换了?当然是使用黑豹!

在Panther 1.0之前,你可以这样写测试:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
<?php名称空间应用程序测试使用ob娱乐下载组件PantherTestCaseHelloControllerTest扩展PantherTestCase公共函数testSomething()无效客户端静态::createPantherClient ();客户端->请求(“得到”' /你好');->assertSelectorTextContains (“div[数据控制器=“你好”)”“初始内容”);//等待文本改变客户端->waitForElementToContain (“div[数据控制器=“你好”)”“这将在1秒后替换div的内容!”);//然后断言->assertSelectorTextContains (“div[数据控制器=“你好”)”“这将在1秒后替换div的内容!”);}}

如您所见,在断言之前必须使用客户端等待异步操作的结果是重复和麻烦的。

在黑豹1.0中,格里高利Copin添加一堆新的断言这极大地改善了开发人员的体验。这是它的样子:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?php名称空间应用程序测试使用ob娱乐下载组件PantherTestCaseHelloControllerTest扩展PantherTestCase公共函数testSomething()无效静态::createPantherClient ()->请求(“得到”' /你好');->assertSelectorTextContains (“div[数据控制器=“你好”)”“初始内容”);->assertSelectorWillContain (“div[数据控制器=“你好”)”“这将在1秒后替换div的内容!”);}}

好多了,不是吗?

不断发展的社区欧宝体育平台怎么样

社区也开欧宝体育平台怎么样始使用Panther作为其他很棒的库的基础。我想提一些我觉得特别有趣的:

  • 蜘蛛网爬虫是一个库,爬你的网站使用Panther提取seo相关信息;
  • zenstruck /浏览器是一个建立在BrowserKit和Panther之上的很好的库,提供了一个富有表现力和流畅的界面来编写集成和端到端测试;
  • Blackfire PHP SDK允许使用著名的Blackfire分析器将性能断言添加到您的测试中,现在对Panther有本地支持;
  • BehatPantherExtension是一个扩展,增加了对黑豹的支持到Behat测试框架。

向这些库的作者致敬!

拯救真正的黑豹,帮助项目

当我们享受使用为了测试我们的网络应用,野外的大型猫科动物濒临灭绝。如果您或您的公司使用Panther(完全免费的图书馆)并从中赚钱,请捐赠给豹属这是一个试图拯救真正野生猫科动物的非政府组织。

为了保持良好的工作,也要考虑赞助我而且Symfob娱乐下载ony项目

对了,你知道为什么黑豹标志里的猫不是黑色的吗?不,就像f在Syob娱乐下载mfony中,这不是错误黑豹最初的名字是Panthère(法语单词)。在法语中,panthere意思是(或多或少)豹子!在将项目转移到Symfony组织之前,我们决定删除重音和finalob娱乐下载e为了方便(这是一场激烈的辩论!),但这个标志留下来了。

事实上,这并不是故事的全部!豹子有几种颜色。那为什么是暗黄色,还有黑点呢?这是因为里尔地区的地方特色(一个法国城市,有几个Symfony开发者居住,包括Fabien)。ob娱乐下载要了解整个故事,你必须参加会议然后问!

帮助Symfonyob娱乐下载项目!

与任何开源项目一样,贡献代码或文档是最常欧宝官网下载app见的帮助方式,但我们也有广泛的赞助机会

评论

Daniël Brekelmans的头像
我很高兴看到我的包有助于安装过程!Panther是我每天使用的一个很棒的工具。感谢Kévin和其他贡献者为Panther所做的工作!
François Steinel的头像
祝贺发布,并感谢您对PHP社区的贡献!欧宝体育平台怎么样很棒的工具+推广一个非政府组织,这真的很酷!
ob娱乐下载Symfony贡献者是PHP的福音
叶夫根尼的化身
听起来太棒了!
Tac Tacelosky的化身
这太棒了!但是现在我真的没有借口来解释为什么我不写更多的测试了……

评论截止。

为了确保评论保持相关性,旧帖子将被关闭。