宣布Symfony Pob娱乐下载anther 1.0
两年后这个库的第一个版本我很高兴地宣布黑豹1.0版本立即可用!
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/bdi$Vendor /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娱乐下载\组件\豹\PantherTestCase;类MyPantherTest扩展PantherTestCase{公共函数testSomething():无效{$客户端=静态::createPantherClient ();$履带=$客户端->请求(“得到”,' / ');$这->assertSelectorTextContains (“标题”,“Hello World”);}}
运行它:
1
$php bin / phpunit)
改进调试体验
当然,这个测试没有通过:我们还没有在应用程序中创建任何页面。但是看一下内容var / error-screenshots /
目录!为了帮助你调试你的测试,Panther现在会在测试失败时自动截取浏览器窗口的截图:
还有更多!有时,检查控制台日志、使用JavaScript调试器或摆弄应用程序以了解问题所在是很方便的。执行如下命令:
1
$PANTHER_NO_HEADLESS=1 bin/phpunit——debug
多亏了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娱乐下载\组件\豹\PantherTestCase;类HelloControllerTest扩展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娱乐下载\组件\豹\PantherTestCase;类HelloControllerTest扩展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娱乐下载要了解整个故事,你必须参加会议然后问!
ob娱乐下载Symfony贡献者是PHP的福音