25th/behat-js-errorlog

此软件包最新版本(dev-master)没有提供许可证信息。

dev-master 2015-04-10 10:01 UTC

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 错误。