标签: intern

无法让Intern运行Node.js模块

我正在尝试测试实习生,看看它是否适合测试框架.我试图在实习生中测试以下代码.

var HelloWorld;

HelloWorld = (function () {

  function HelloWorld (name) {
    this.name = name || "N/A";
  }

  HelloWorld.prototype.printHello = function() {
    console.log('Hello, ' + this.name);
  };

  HelloWorld.prototype.changeName = function(name) {
    if (name === null || name === undefined) {
      throw new Error('Name is required');
    }
    this.name = name;
  };

  return HelloWorld;

})();

exports = module.exports = HelloWorld;
Run Code Online (Sandbox Code Playgroud)

该文件位于'js-test-projects/node/lib/HelloWorld.js'中,Intern位于'js-test-projects/intern'.我正在使用实习生的1.0.0分支.每当我尝试包含文件并运行测试时,在"默认为控制台记者"之后我都没有得到任何输出.这是测试文件.

define([
  'intern!tdd',
  'intern/chai!assert',
  'dojo/node!../lib/HelloWorld'
], function (tdd, assert, HelloWorld) {
  console.log(HelloWorld);
});
Run Code Online (Sandbox Code Playgroud)

intern

6
推荐指数
1
解决办法
2460
查看次数

实习生测试框架是否有任何gulp插件或docs与gulp集成?

实习生测试框架是否有任何gulp插件或docs与gulp集成?

intern gulp

6
推荐指数
1
解决办法
630
查看次数

setFindTimeout和pollUntil with Intern表示在初始页面加载时不可见的元素

我在让Intern 2等待元素出现时遇到问题.在Intern 1中,我 wait()用来设置页面的快速时间段,以便在某些用户操作之后等待元素出现.对于Intern 2,似乎setFindTimeout()应该总是告诉一个find()方法等待元素存在.我已经设置setFindTimeout()并尝试使用pollUntil来处理这些等待,但测试仍然失败,错误"元素不可见".

这是一个示例测试,它使用与我的实际测试相同的要求,并且正在寻找在此页面加载后5秒出现的元素Id .

define([
'intern!object',
'intern/chai!assert',
'require',
'tests/util',
'intern/dojo/node!leadfoot/Command',
'intern/dojo/node!leadfoot/Session',
'intern/dojo/node!leadfoot/helpers/pollUntil'
], function (registerSuite, assert, require, util, Command, Session, pollUntil) {

registerSuite([   
    {
        name: 'testing_find_by_wait',

        test_create_form_on_web: function() {
            console.log('Create a form with account, number, number and formula fields')

            return this.remote
                .setFindTimeout(10000)
                .setWindowSize(1280, 960)
                .get("http://www.kgstew.com/waittest.html")
                .then(pollUntil('return document.getElementById("demo")', 10000))
                .findById('demo')
                    .click()
                    .end()

        }
    }
]);
});
Run Code Online (Sandbox Code Playgroud)

javascript intern

6
推荐指数
1
解决办法
1490
查看次数

如何从实习功能测试中输出调试信息?

当我使用实习生运行单元测试时,它会将console.log写入标准输出,这在开发测试时很有用.

但是,功能测试显然会抑制输出 - 写入console.log没有做任何事情,我找不到任何方法将文本输出到控制台.这意味着当出现问题时,很难找出原因.

intern

6
推荐指数
1
解决办法
257
查看次数

如何测试和/ ES6/ECMAScript 6 JavaScript?

根据标题,我正在尝试测试一些用nodejs运行的ES6 JS编写的AMD模块.

我首先尝试使用Intern:即使--harmony在nodejs中启用后,我最终还是面对了Intern的依赖链,我无法在例如伊斯坦布尔,esprima和其他人中启用Harmony (我为此开了一个问题).

然后我转移到摩卡上,在这里我被卡住...... 奇怪的是.我为nodejs和mocha本身启用了Harmony,这是package.json测试脚本:

"test": "node --harmony node_modules\\mocha\\bin\\mocha tests --harmony --recursive"
Run Code Online (Sandbox Code Playgroud)

我从命令提示符运行为npm test my_test_folder.仍然,一些ES6构造(如const)传递确定,但随后它在解构赋值时窒息.这是第一个输出行:

const { log, dir } = require('../consoleLogger.js');
      ^
SyntaxError: Unexpected token {
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    [...continues...]
Run Code Online (Sandbox Code Playgroud)

我也检查了这个SO线程并听说过转发器,但我真的不知道它们是否可以工作,我现在正试图让转换器在这种情况下工作.

关于如何解决这个问题的任何想法,而无需改变代码中传播的所有ES6位?TA.

javascript mocha.js ecmascript-harmony ecmascript-6 intern

5
推荐指数
1
解决办法
2583
查看次数

远程调试在selenium chromedriver上运行的Internjs

我尝试远程调试Internjs运行的测试.基本上它是由Selenium和Chromedriver运行的Chrome.

我将Chromedriver debuggerAddress选项设置为

debuggerAddress: '127.0.0.1:8765'
Run Code Online (Sandbox Code Playgroud)

现在,当我运行测试时,Selenium会等待一段时间而不是失败并显示消息:

FATAL ERROR
UnknownError: [POST http://localhost:4444/wd/hub/session / {"desiredCapabilities":{"browserName":"chrome","name":"tests/intern_local","idle-timeout":60,"selenium-version":"2.44.0","chromeOptions":{"debuggerAddress":"127.0.0.1:8765"}}}] unknown error: cannot connect to chrome at 127.0.0.1:8765
from chrome not reachable
  (Driver info: chromedriver=2.12.301326 (093c7e07b4a916b690e784b0374c7f618f1ea4be),platform=Mac OS X 10.10.1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.64 seconds
Run Code Online (Sandbox Code Playgroud)

我不知道我必须做什么才能将chrome连接到服务器.

我试过了:

  • 在该端口上运行chromedriver ./chromedriver_2.11 --port=8765
  • 运行铬与 --remote-debugging-port=8765

但我没有其他想法如何启动chrome调试服务器.

我尝试过的有用链接对我不起作用:

更新1强制Chromedriver使用带有远程调试的Chrome实例

像在Mozilla文章中一样运行新的Chrome实例

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --no-first-run --no-default-browser-check --user-data-dir=$(mktemp -d -t 'chrome-remote_data_dir')
Run Code Online (Sandbox Code Playgroud)

在实习生集

intern.capabilities = {
  'selenium-version': …
Run Code Online (Sandbox Code Playgroud)

selenium google-chrome remote-debugging selenium-chromedriver intern

5
推荐指数
1
解决办法
1903
查看次数

如何在管道 node.js 进程中获取终端大小?

我正在使用 Grunt 来启动一个单元测试框架 (Intern),它最终会通过管道传输另一个 node.js 进程,然后我使用 Charm 将结果输出到屏幕。我必须从 Grunt 配置选项传递终端大小信息​​,但这有点混乱,我想尝试从管道进程中获取终端大小,但标准 process.stdout.cols/getWindowSize根本不可用,因为管道进程没有注册为 TTY(尽管 Charm 可以正常工作)。

有什么建议?

编辑只是在这里要清楚...... Grunt JavaScript 文件正在主 node.js 进程中运行,但我试图从中检索此信息的文件(以及我因此运行人们建议的命令的位置)位于产生的子进程。

javascript node.js intern

5
推荐指数
1
解决办法
713
查看次数

由于找不到Junit测试报告,Jenkins构建失败:Intern Framework

我的jenkins版本是1.608,JUnit插件是1.2beta4。在本地运行测试时,我可以看到报告生成正确,但是在运行构建时,它失败了[也没有在文件夹中看到报告]。文件夹结构如下所示workspace/java/src/proj/test/test1/*.xml. :不确定是什么问题。直到上周为止还不错。jenkins配置还在“发布Junit测试报告”部分中给出了显示错误。‘src\proj\test\test1\report.xml’ doesn’t match anything: ‘src’ exists but not ‘src\proj\test\test1\report.xml’

错误-

Build step 'Execute Windows batch command' marked build as failure
Recording test results
    ERROR: Publisher hudson.tasks.junit.JUnitResultArchiver aborted due to exception
    hudson.AbortException: No test report files were found. Configuration error?
        at hudson.tasks.junit.JUnitParser$ParseResultCallable.invoke(JUnitParser.java:116)
        at hudson.tasks.junit.JUnitParser$ParseResultCallable.invoke(JUnitParser.java:92)
        at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2688)
        at hudson.remoting.UserRequest.perform(UserRequest.java:121)
        at hudson.remoting.UserRequest.perform(UserRequest.java:49)
        at hudson.remoting.Request$2.run(Request.java:325)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
        at java.util.concurrent.FutureTask.run(FutureTask.java:274)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
        at hudson.remoting.Engine$1$1.run(Engine.java:69)
        at java.lang.Thread.run(Thread.java:798)
        at ......remote call to tm1w08perf11-5000(Native Method)
        at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1360)
        at hudson.remoting.UserResponse.retrieve(UserRequest.java:221)
        at hudson.remoting.Channel.call(Channel.java:753)
        at hudson.FilePath.act(FilePath.java:978) …
Run Code Online (Sandbox Code Playgroud)

java junit jenkins intern

5
推荐指数
1
解决办法
2万
查看次数

实习生:在 Promise 上循环。<Array.<leadfoot/Element>>

为简单起见,假设我有以下 DOM 结构:

<div class='myparent'>
    <div class='child'>
        <div class="label">A</div>
        <div class="ico"/>
    </div>
    <div class='child'>
        <div class="label">B</div>
        <div class="ico"/>
    </div>
    <div class='child'>
        <div class="label">C</div>
        <div class="ico"/>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想在child函数 findAllByCssSelector('.child') 返回的所有元素中循环。ico特别是,只有当labeldiv 的 是 B时,我才会单击div 子元素。

我会记得,那findAllByCssSelector()回来了Promise.<Array.<leadfoot/Element>>

通常我应该做类似的事情:

var my_label = null;
this.remote
  .findAllByCssSelector('.my-selector').then(function (elementArray) {
      for(.....) {
        elementArray[i]
            .getVisibileText()
              .then(function (text) {
                  if(text == my_label)
                    elementArray[i].findByCssSelector('.ico').click().end()
              }
      }
})
Run Code Online (Sandbox Code Playgroud)

我尝试了这段代码,但没有用,因为函数elementArray[i]getVisibleText().then()不存在 - 就像我失去了它的引用一样。此外,我还需要,如果在循环末尾找不到标签,则应抛出异常。

我怎样才能做到这一点?有人可以帮忙吗?

javascript this promise intern leadfoot

4
推荐指数
1
解决办法
1194
查看次数

实习生功能测试:跳过套件/测试

我正在使用 Intern/Leadfoot 编写一些功能测试。这些测试是端到端测试(也称为故事),它们之间存在某种数据依赖性。我的意思是,如果之前的测试 (test1) 没有成功完成,则测试 (即 test2) 将失败。因此,为了避免运行肯定失败的测试,我想跳过它们(或其中的一部分)。因此,我想知道是否有办法实现这一目标。

考虑到所有 test.js 文件都类似于以下文件:

define([
    "require",
    "intern", 
    "intern!object",
    "../../support/executor/executor"],
    function(require, intern, registerSuite, Executor) {

    var executor;
    var steps = [

        // set of actions, 
        // like login, click this button,
        // then assert that ....
    ];

    registerSuite(function() {
        return {
            setup: function() {
                executor = new Executor(this.remote, steps.slice(0));
            },

            "Test 1": function() {
                return executor.run();
            },
        };
    });
});
Run Code Online (Sandbox Code Playgroud)

这意味着每个 js 文件都是一个仅包含一个测试的套件。换句话说,如果前一个失败,我想跳过所有剩余的套件。

javascript intern

3
推荐指数
1
解决办法
1006
查看次数