TestCafe:测试不会在无头模式下通过

时间:2019-08-08 21:14:46

标签: continuous-integration yaml continuous-deployment functional-testing testcafe

我正在构建一个React应用,并使用TestCafe编写功能测试。这是我的测试脚本:

"functional-tests": "testcafe chrome src/functional-tests/ --app 'yarn start'",

这些测试通过。但是,如果我尝试以无头模式运行它们:

"functional-tests": "testcafe 'chrome:headless' src/functional-tests/ --app 'yarn start'",

它们失败,并出现以下错误。

1) Cannot obtain information about the node because the specified
      selector does not match any node in the DOM tree.

如果我在单独的终端中手动运行yarn start(不使用--app标志),则无头测试通过。

如何使用--app标志使无头测试通过?我需要在CI / CD脚本中运行功能测试,这就是为什么我需要一个命令来启动服务器并运行测试的原因。

1 个答案:

答案 0 :(得分:3)

我通过添加a delay to launch the app使它正常工作。

document.getElementById("move").addEventListener("click", function() {
  onLoad(+document.getElementById("get-index").value);
});

function onLoad(index) {
  // remove old bookmark
  var bookmark = document.getElementById("bookmark-pointer");
  if (bookmark) bookmark.remove();

  var textNode;

  // Loop through all the text nodes and sum up their lengths, once the sum is bigger than the index, get that node
  Array.prototype.some.call(document.querySelectorAll("#article *"), function(dom) {
    return textNode = Array.prototype.find.call(dom.childNodes, function(node) {
      if (node.nodeType !== 3) return false;
      if (index >= node.textContent.length) return index -= node.textContent.length, false;
      return true;
    });
  });

  if (!textNode) throw Error("Index out of bounds");
  scrollTo(0, textNode.parentElement.offsetTop);
}