如何在多个文件中运行Jest-Puppeteer测试

时间:2018-07-20 11:19:22

标签: jestjs puppeteer e2e-testing web-testing webtest

我正在使用jest-puppeteer来运行我的Web测试。如果我正在运行所有定义在一个文件中的测试,则一切运行正常。

    import React, {Component} from 'react';
import EditorComponent from './Editor';
import { Modal } from 'react-bootstrap';
import { Button } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';

 class Modals extends Component {


    render() {

        return (
            <div className="static-modal">
              <Modal.Dialog>
                <Modal.Header>
                  <Modal.Title>Journey onward...</Modal.Title>
                </Modal.Header>

                <Modal.Body>{this.props.children}</Modal.Body>

                <Modal.Footer>
                  <Button>Close</Button>
                  <Button bsStyle="primary">Save changes</Button>
                </Modal.Footer>
              </Modal.Dialog>
            </div>
        );
    }
}

export default Modals;

但是,如果我在自己的文件中运行每个测试,则会收到错误消息。

ReactDOM.render(<Modals childComponent={<EditorComponent />} />, document.getElementById('root'));

文件1

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 1', async () => {
        //my test steps
    });

    it('test 2', async () => {
        //my test steps
    });

});

文件2

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined

有趣的是,如果我在test2的第一步中添加console.log('some statement'),那么一切都会再次起作用。这就是为什么我认为这可能是时间问题。我按顺序运行测试,即describe('user', () => { jest.setTimeout(12000); beforeEach(async () => { await page.setViewport({width: 1200, height: 2000}); await page.goTo('http://localhost:3000'); }); it('test 1', async () => { //my test steps }); });

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

正如您所说,我同意问题是依次发生的,正如Patrick Hulce回答that github bugreport中所述:

  

FWIW我也遇到了这个问题,并导致了这个问题。只发生在   当异步测试超时但基本操作继续时的CI   直到测试套件完成之后(我猜是回调   尝试添加期望的结果)。我永远都做不到   虽然发生在本地。

所以您的错误可能在“ //我的测试步骤”中,您可以在运行异步过程之前在测试中对某些您可以/需要进行的操作进行操作。