Using require with relative paths

前端 未结 4 986
灰色年华
灰色年华 2020-11-27 16:41

We have a rather big set of end-to-end tests on Protractor. We are following the Page Object pattern which helps us to keep our tests clean and modular. We also have a set o

4条回答
  •  一整个雨季
    2020-11-27 17:31

    We've been facing the same issue and decided to turn all page object and helper files into node packages. Requiring them in tests is now as easy as var Header = require('header-po'). Another benefit of converting to packages is that you can use proper versioning.

    Here is a simple example:

    ./page-objects/header-po/index.js

    //page-objects/header-po/index.js
    
    'use strict';
    
    var Header = function () {
        this.goHome = function () {
            $('#logo a').click();
        };
      };
    
    module.exports = Header;
    

    ./page-objects/header-po/package.json

    {
        "name": "header-po",
        "version": "0.1.1",
        "description": "Header page object",
        "main": "index.js",
        "dependencies": {}
    }
    

    ./package.json

    {
        "name": "e2e-test-framework",
        "version": "0.1.0",
        "description": "Test framework",
        "dependencies": {
            "jasmine": "^2.1.1",
            "header-po": "./page-objects/header-po/",
        }
    }
    

    ./tests/header-test.js

    'use strict';
    
    var Header = require('header-po');
    
    var header = new Header();
    
    describe('Header Test', function () {
        it('clicking logo in header bar should open homepage', function () {
            browser.get(browser.baseUrl + '/testpage');
            header.goHome();
            expect(browser.getCurrentUrl()).toBe(browser.baseUrl);
        });
    });
    

提交回复
热议问题