Jestjs Jest js Puppetter等待木偶师启动新页面返回未定义
我想使用puppetter运行一个测试,我先使用puppetterJestjs Jest js Puppetter等待木偶师启动新页面返回未定义,jestjs,puppeteer,Jestjs,Puppeteer,我想使用puppetter运行一个测试,我先使用puppetter设置测试,然后使用done参数完成设置 beforeAll(async (done) => { try{ browser = await puppeteer.launch({ headless: false, slowMo: 20, args: [`--window-size=${width},${height}`] }) page = await brow
设置测试,然后使用done
参数完成设置
beforeAll(async (done) => {
try{
browser = await puppeteer.launch({
headless: false,
slowMo: 20,
args: [`--window-size=${width},${height}`]
})
page = await browser.newPage()
await page.setViewport({ width, height })
done()
} catch (e){
fail("SETUP FAILED:\n"+e)
}
}
而测试
,测试将在之前
完成后运行,对吗
test('Test Invalid Username Password', async () => {
try {
await page.goto(APP_URL)
await page.click('[data-testid="form-username"]')
await page.keyboard.type(username)
//omitted
} catch (e) {
fail('AN EXCEPTION IS THROWED\n'+e)
}
}, 200000);
我遇到错误无法读取未定义“
为什么它有时返回未定义的而有时不返回?
我想这是因为铬还没有准备好?但我已经写了wait
,这还不够吗
铬准备好使用之前还需要检查什么?未定义
更新
未定义时的错误
Test Invalid Username Password
Failed: "AN EXCEPTION IS THROWED
TypeError: Cannot read property 'goto' of undefined"
51 | expect(errorMessage).toEqual(loginExpectedResult.TEST_INVALID_USERNAME_AND_PASSWORD)
52 | } catch (e) {
> 53 | fail('AN EXCEPTION IS THROWED\n'+e)
| ^
54 | }
55 | }, 200000);
56 |
at Env.fail (node_modules/jest-jasmine2/build/jasmine/Env.js:656:39)
at Object.fail (test/logintest/login.test.js:53:7)
at tryCatch (node_modules/regenerator-runtime/runtime.js:65:40)
at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:303:22)
at Generator.prototype.(anonymous function) [as next] (node_modules/regenerator-runtime/runtime.js:117:21)
at asyncGeneratorStep (test/logintest/login.test.js:17:103)
at _next (test/logintest/login.test.js:19:194)
at test/logintest/login.test.js:19:364
at Object.<anonymous> (test/logintest/login.test.js:19:97)
测试无效的用户名密码
失败:“抛出异常
TypeError:无法读取未定义“”的属性“goto”
51 | expect(errorMessage).toEqual(loginExpectedResult.TEST_无效_用户名和密码)
52 |捕捉(e){
>53 |失败('抛出异常\n'+e)
| ^
54 | }
55 | }, 200000);
56 |
在Env.fail(node_modules/jest-jasmine2/build/jasmine/Env.js:656:39)
at Object.fail(test/logintest/login.test.js:53:7)
在tryCatch(node_modules/registrator runtime/runtime.js:65:40)
在Generator.invoke[as _invoke](node_modules/registrator runtime/runtime.js:303:22)
在Generator.prototype.(匿名函数)[as next](node_modules/registrator runtime/runtime.js:117:21)
在asyncGeneratorStep(test/logintest/login.test.js:17:103)
下一步(test/logintest/login.test.js:19:194)
在test/logintest/login.test.js:19:364
at对象。(test/logintest/login.test.js:19:97)
fail()
可能来自jasmine?我使用VSCode autocomplete找到它。我认为它来自Jest。它不能被使用吗?尝试更改失败(“安装失败:\n”+e)
调用控制台.log(“安装失败:\n”+e)
,并让我们知道它记录了什么
我在开始复制您的问题时遇到了相同的问题,因为我忘记了一个require('puppeter')
命令,例如
还有一些考虑:
- 你不需要一个
done()
调用,beforeAll
函数是异步的,你需要等待每一个木偶师调用,因此…函数本身终止,而不需要done()
调用。甚至从传递的参数中删除它
- 您调用
fail
,但它是在哪里定义的
- 删除所有内容周围的大的
try/catch
,如果出现错误,测试会自动失败,并提供有用的见解,额外的try/catch
环境不会给您带来任何好处,也不会使您的测试更加冗长
请告诉我是否有用尝试更改失败(“安装失败:\n”+e)
调用控制台.log(“安装失败:\n”+e)
,并告诉我们它记录了什么
我在开始复制您的问题时遇到了相同的问题,因为我忘记了一个require('puppeter')
命令,例如
还有一些考虑:
- 你不需要一个
done()
调用,beforeAll
函数是异步的,你需要等待每一个木偶师调用,因此…函数本身终止,而不需要done()
调用。甚至从传递的参数中删除它
- 您调用
fail
,但它是在哪里定义的
- 删除所有内容周围的大的
try/catch
,如果出现错误,测试会自动失败,并提供有用的见解,额外的try/catch
环境不会给您带来任何好处,也不会使您的测试更加冗长
让我知道这是否有帮助我已经更新了问题,哦,我在哪里可以找到那些在之前等待异步函数完成的文档呢?我只能找到使用和使用。我刚开始使用jest,我使用了try catch,因为显然如果我没有,有时它会跳到毕竟返回错误。上一个例外没有打印出来。所以我不知道发生了什么,因为我的内存几乎满了?我很难打开chromium,因为我的内存使用率超过92%。我尝试停止占用我大部分内存的docker服务,它工作了。但我不知道我已经更新了答案,并详细解释了async/await。请注意,它与Jest本身无关,而是与async/await
API的工作方式有关。无论如何,我希望它能帮助您。让我知道它是否足够清晰,以防接受答案。感谢async/await
的解释!有时我仍然会遇到错误,可能是因为我的内存被占用了吗?有时甚至更高RoR,有时我得到错误<代码> JEST在测试运行完成后没有退出1秒。这通常意味着在测试中没有停止的异步操作。考虑运行JEST与DeTeCopeNoad来解决这个问题。< /代码>我已经更新了问题,哦,我在哪里可以找到“<代码>”的文档?首先
等待异步函数完成?我只能找到using和using。我刚开始使用jest,我使用try-catch,因为很明显,如果我有时不使用,它会跳到,毕竟
会返回错误。前面的异常没有打印出来。所以我不知道发生了什么,因为我的内存是almos未满?我很难打开chromium,因为我的内存使用率超过92%。我尝试停止占用我大部分内存的docker服务,但它起了作用。但我不知道我已经更新了答案,详细解释了async/await。请注意,它与Jest本身无关,而是与async/await
API的工作方式有关。总之,我希望它能帮助你。让我知道它是否足够清晰,以防接受答案,感谢async