jestjs - 将 Jest 步骤定义提取到单独的文件中
问题描述
我正在使用 Jest 和 Puppeteer 进行一些 e2e 测试,但遇到了瓶颈。我想将步骤定义移动到单独的文件中,以便我可以在不同的测试中重用它们。
我遇到以下问题:
这是我的设置:
文件dummyTest.test.js:
import {loginUser} from '../steps/test';
describe(
'dummy test',
() => {
let page;
beforeAll( async () => {
const context = await browser.createIncognitoBrowserContext();
page = await context.newPage();
await page.setViewport( { width: 1200, height: 960 } );
await page.goto( 'http://localhost:8080' );
}, timeout );
afterAll( async () => {
await page.close();
delay( 1000 );
console.log( 'killing all chromium zombies' );
exec( 'kill -9 $(ps aux | grep \'chromium\' | awk \'{print $2})\'' );
exec( 'kill -9 $(ps aux | grep \'http-server\' | awk \'{print $2})\'' );
}, 10000 );
it( 'should see login page', loginUser, 10000 );
},
10000 );
文件test.js:
export const loginUser = async () => {
await page.waitForSelector( 'form' );
await page.click( 'input[name=email]' );
await page.type( 'input[name=email]', 'me@me.com' );
await page.click( 'input[name=password]' );
await page.type( 'input[name=password]', 'test123' );
await page.screenshot( { path: './test-results/PrefilledLogin.png' } );
await page.keyboard.down( 'Enter' );
await page.screenshot( { path: './test-results/LoginSubmit.png' } );
};
我究竟做错了什么?
解决方案
我解决了。
为了使它工作,我必须将页面对象和完成的回调传递给函数:
it( 'should see login page', ( done ) => loginUser( done, page ), 10000 );
推荐阅读
- mysql - Phpmyadmin - 过程:命令不同步
- node.js - 如何从节点 10.4.1 中的 RxJS 6.2.1 导入 fromPromise
- react-native - 反应原生 ios 深度链接 URL 方案域
- html - 如何使用 CSS 创建一个 div “失真”
- android - 无法为 com.android.build.gradle.internal.dsl.NdkOptions 类型的对象获取未知属性“armeabi”
- python-2.7 - if 语句中的搜索字符串仅匹配部分项目
- c# - 如何使用 ASP.NET Core 从 DbContext 中的 JWT 获取用户名?
- typescript - 从另一个类型中删除一个类型的属性
- actions-on-google - Dialogflow JSON V2 的丰富消息
- python - Pandas Dataframe 到特定格式的字典列表