- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Nightwatch.js 设置了一个简单的 smoketest。他们在本地通过,但在 CircleCI 上失败。
源代码:
const WAIT = 1000;
const NODE_PORT = process.env.NODE_PORT || 3000;
module.exports = {
'Smoketest' (browser) {
browser
.url(`http://localhost:${NODE_PORT}/`)
.waitForElementVisible('body', WAIT)
.pause(300)
.assert.containsText('body', 'Client render')
.end();
}
};
本地输出:
> cross-env NODE_PORT=3000 NODE_PATH=source babel-node source/test/e2e.js
Running with config:
{ logDir: '/Users/eric/Dropbox/dev/react-easy-universal/reports',
reportDir: '/Users/eric/Dropbox/dev/react-easy-universal/reports/test-e2e',
nightwatchConfig: '/Users/eric/Dropbox/dev/react-easy-universal/nightwatch.json',
webpackConfig: '/Users/eric/Dropbox/dev/react-easy-universal/webpack.config.js',
port: '3000',
server: [Object] }
[Smoketest] Test Suite
======================
Running: Smoketest
✔ Element <body> was visible after 58 milliseconds.
✔ Testing if element <body> contains text: "Client render".
OK. 2 assertions passed. (2.831s)
失败的 CircleCI 输出:
REPORT_DIR=${CIRCLE_TEST_REPORTS} LOG_DIR=${CIRCLE_ARTIFACTS} npm run test:e2e -s
Running with config:
{ logDir: '/tmp/circle-artifacts.ddv7oJ3',
reportDir: '/tmp/circle-junit.hhJgS6N',
nightwatchConfig: '/home/ubuntu/react-easy-universal/nightwatch.json',
webpackConfig: '/home/ubuntu/react-easy-universal/webpack.config.js',
port: '3000',
server: [Object] }
[Smoketest] Test Suite
======================
Running: Smoketest
✔ Element <body> was visible after 85 milliseconds.
✖ Testing if element <body> contains text: "Client render". - expected "Client render" but got: Untitled
at Object.Smoketest (smoketest.js:10:15)
at Module.call (/home/ubuntu/react-easy-universal/node_modules/nightwatch/lib/runner/module.js:63:34)
at /home/ubuntu/react-easy-universal/node_modules/nightwatch/lib/runner/testcase.js:97:29
at _fulfilled (/home/ubuntu/react-easy-universal/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/home/ubuntu/react-easy-universal/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/home/ubuntu/react-easy-universal/node_modules/q/q.js:796:13)
at /home/ubuntu/react-easy-universal/node_modules/q/q.js:556:49
at runSingle (/home/ubuntu/react-easy-universal/node_modules/q/q.js:137:13)
at flush (/home/ubuntu/react-easy-universal/node_modules/q/q.js:125:13)
at nextTickCallbackWith0Args (node.js:452:9)
FAILED: 1 assertions failed and 1 passed (3.242s)
----------------------------------------------------
TEST FAILURE: 1 assertions failed, 1 passed (3.543s)
✖ smoketest
- Smoketest
Testing if element <body> contains text: "Client render". - Expected "Client render" but got: "Untitled" REPORT_DIR=${CIRCLE_TEST_REPORTS} LOG_DIR=${CIRCLE_ARTIFACTS} npm run test:e2e -s returned exit code 1
最初,浏览器从服务器的一些渲染输出开始。服务器渲染的标题设置为“无标题”。然后一些 JavaScript 在客户端加载并运行,客户端渲染发生,将文本更改为“客户端渲染”。此测试旨在确保客户端渲染按预期工作。
这是 nightwatch.json
:
{
"src_folders" : ["source/test/functional/browser"],
"output_folder" : "./reports/test-e2e",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"server_path" : "",
"log_path" : "",
"host" : "127.0.0.1",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "",
"webdriver.ie.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"selenium_port" : 4444,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
我怀疑这可能是一个竞争条件,认为断言在 CircleCI 有机会加载和处理 JavaScript 之前运行,所以我尝试在断言之前插入一个暂停。
如有任何想法,我们将不胜感激。
最佳答案
我也有这个问题,看起来(仍然需要重新检查)我找到了解决方案。
确保你在每个测试中都有最后的代码。
浏览器结束();
关于nightwatch.js - 为什么 Nightwatch.js 测试在 CircleCI 上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305651/
nightwatch.conf.BASIC.js 和nightwatch 框架中的 nightwatch.conf.js。 设置守夜人框架的基本要求是什么 Node js 和 Selenium 最佳答
你如何在 nightwatch 中检查背景图像?如何确保正确加载背景图像?背景图像是使用 css 加载的。 最佳答案 希望这可以帮助: browser.waitForElementVisible('.
我使用 Nightwatch 编写了浏览器自动化测试用例。我还为 headless 测试用例实现了“phantomjs-prebuilt”。当我设置时,我能够为我的所有测试用例创建一个报告'test_
我正在尝试测试待办事项应用程序是否具有正确数量的元素。 文档似乎几乎只处理单个元素,所以我不得不使用 Selenium 协议(protocol)函数。这是否是测试匹配选择器计数的正确方法(在这种情况下
目前在我的 nightwatch.json 中,我已设置好在我的 mac 上运行: { "src_folders" : ["specs"], "output_folder" : "tests/
我正在使用 Nightwatch 并希望监控我的 nightwatch 步骤生成的 http 请求。有没有办法监听发送的请求和收到的响应。我不需要修改它们。 谢谢 马特 最佳答案 是的,有办法。 为了
我想暂停每个测试。 我创建了这个函数: afterEach:function(browser){ browser.pause(2000); }, 但是当我运行测试时,我会得到错误: TypeEr
从这个answer FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference("browse
我使用 Nightwatch for e2e,我发现这两个命令有点困惑 给出它们附带的名称和解释。 .waitForElementVisible: 在执行任何其他命令或断言之前,等待给定时间(以毫秒为
我使用 Nightwatch.js 设置了一个简单的 smoketest。他们在本地通过,但在 CircleCI 上失败。 源代码: const WAIT = 1000; const NODE_POR
我有六个测试用例需要运行,但任何时候只有三个测试用例可以在测试目标环境中处于事件状态。当我运行测试时,我想检查是否针对特定情况正确设置了环境。如果没有,我想将测试标记为已跳过。如何在 nightwat
如何贴在床头柜上?我尝试了以下命令: browser.keys([browser.Keys.COMMAND, browser.Keys.v]) 但是该命令不起作用。 理想情况下,我希望可以将复制的文本
我正在尝试在测试中使用launch_url属性,并在将浏览器发送到该URL之前为其添加相对路径。 我知道browser.init();将浏览器发送到launch_url中的地址,但是我想知道是否可以在
我想在(非全屏)模式对话框下方的全屏 div 上执行单击。但是,单击事件似乎自动定位到我的背景 div 的中心,从而触摸了该 div 顶部的内容(模态对话框本身)。 如何指定点击应该发生的位置? 这是
如何在 NightwatchJS 中编写简单的 if/else?如果元素存在,请单击此元素,否则 - 单击另一个元素。 'Test2: click login button': function(cl
我的每个 Nightwatch.js 测试都需要身份验证才能运行,目前我无法通过 cookie 进行身份验证(当然,如果测试填写用户名和密码,它就会登录,但需要时间是这样的) 我有一个工作 PHPSE
我在自动测试和设置 Nightwatch 方面相当陌生,但我已经知道我的自定义命令文件夹迟早会变得笨拙。我看过一些示例 nightwatch.json 文件,这些文件使用数组作为自定义命令路径,但我似
我尝试向 Nightwatch 提供测试数据,但我不知道如何提供。如何为 Nightwatch 测试提供动态测试数据? 我不想将值硬编码到代码中。我想从文件中提供它。 编辑: .setValue('s
在浏览器实际启动之前,我有很多脚本首先运行的测试,这有时会导致测试运行不正确。实际上导致我出现问题的最新情况是 try/catch 表达式,它并没有真正捕捉到某些元素不存在的事实(尽管预计不会存在)。
我正在尝试在 nightwatch 中创建一个自定义命令,该命令在 Postgres 数据库上运行查询并返回结果。查询运行得很好并将结果输出到控制台,但测试的执行随后停止。我不明白回调是如何工作的。如
我是一名优秀的程序员,十分优秀!