我们正试图在流浪汉机器内运行Behat测试,但我们总是遇到问题。
这是我们使用https://github.com/vranac/vagrant-sylius-setup
的流浪汉机器所以第一个问题是使用cookies,我们解决了这个问题,但现在每个@javascript的场景都失败了
在错误后我们得到的屏幕截图显示缺少路线?
任何想法如何解决这个问题?
答案 0 :(得分:0)
我已经面对并设法解决了这个问题。
关键问题是ChromeWebdriver版本(2.29)与Google Chrome版本(59.0)不兼容,或者在设置Cookie方面存在错误(Changelog确实提到了一些关于Cookie的工作)。
目前我的工作组合是ChromeDriver 2.30 + Google Chrome 59.0 - 请查看这些版本。
我必须改变的另一件事是会话处理程序使用正确的会话而不是mocksess(离子)。在app/config/config_test.yml
我已更改framework
> session
这样的部分:
framework:
test: ~
session:
handler_id: session.handler.native_file
save_path: '/tmp/php-sessions'
另一件需要检查的事情是,会话是在没有任何权限问题的情况下创建/读取/写入的。我确实在某个时刻遇到了问题,我在vagrant
用户运行behat,因此它以此用户为所有者创建了会话文件,但当它通过Selenium / Chrome返回到网络服务器时,它尝试访问它使用www-data
用户,由于权限限制而失败。作为一种解决方法,我现在正在www-data
用户下运行:sudo -E -u www-data bin/behat ...
。缓存也可能出现类似的问题。
对于Vagrant来说,Sylius似乎强制将缓存/日志目录放在/dev/shm/sylius
中,这在共享目录(主机和来宾之间)的情况下是性能提升,但也意味着严格的权限检查(参见https://github.com/Sylius/Sylius/blob/79a5285/src/Sylius/Bundle/CoreBundle/Application/Kernel.php#L162-L164)