25th / behat-js-errorlog
此软件包最新版本(dev-master)没有提供许可证信息。
dev-master
2015-04-10 10:01 UTC
Requires
- php: >=5.4
- behat/behat: 3.*
- behat/mink-extension: *@dev
This package is not auto-updated.
Last update: 2024-09-14 17:21:26 UTC
README
Behat 3 的 JS 错误记录器上下文。
该上下文从 Mink 继承而来,并与 selenium2 驱动器进行了测试。基本功能是检查每个步骤是否出现错误。
要使此功能生效,您需要将一个 JS 片段添加到项目的 HTML 代码中。
Selenium
该上下文仅与 selenium2 驱动器进行了测试。在执行步骤后检查 JS 错误可能会导致测试用例中断。没有理由说明设置为何会那样行为。
唯一的解决方案是引入一个名为 ignore-js-error
的忽略标签。带有该标签的情景将不会被任何方式检查。
安装
只需通过 composer 进行安装
配置
behat
将上下文添加到您的 behat 配置文件中。没有构造函数参数
您的应用程序
您需要调整应用程序以与上下文一起工作。
<!-- Catch JS Errors for Selenium--> <script type="text/javascript"> window.jsErrors = []; window.onerror = function (errorMessage) { window.jsErrors[window.jsErrors.length] = errorMessage; }; </script>
根据您是否使用 JavaScript 框架,您可能还需要进行调整
Angular
如果您使用 angular,您可能想要添加自己的异常处理程序来捕获 JS 错误。
"use strict"; !function (angular) { var Module = angular.module('myModule'); Module.provider("$exceptionHandler", { $get: ['errorLogService', function (errorLogService) { return (errorLogService); }] } ); // // Factory to provider error log service // - simple console logger // Module.factory( "errorLogService", ['$log', function ($log) { function log(exception, cause) { // Default behavior, log to browser console $log.error.apply($log, arguments); // for selenium exception.message += ' (caused by "' + cause + '")'; if ($window.jsErrors !== undefined) { $window.jsErrors[$window.jsErrors.length] = exception.message; } } // Return the logging function. return (log); }] ); }(angular);
场景
为了使此功能生效,您不需要在场景中进行任何调整。但如果您不想在特定场景或整个功能文件中运行上下文,您可以使用标签 @ignore-js-logging
来阻止任何步骤检查 JS 错误。