我们对Protractor进行了一系列相当大的端到端测试.我们遵循Page Object模式,这有助于我们保持测试的清洁和模块化.我们还有一套辅助功能,可以帮助我们遵循DRY原则.
问题:
单个规范可能需要多个页面对象和辅助模块.例如:
"use strict";
var helpers = require("./../../helpers/helpers.js");
var localStoragePage = require("./../../helpers/localStorage.js");
var sessionStoragePage = require("./../../helpers/sessionStorage.js");
var loginPage = require("./../../po/login.po.js");
var headerPage = require("./../../po/header.po.js");
var queuePage = require("./../../po/queue.po.js");
describe("Login functionality", function () {
beforeEach(function () {
browser.get("/#login");
localStoragePage.clear();
});
// ...
});
Run Code Online (Sandbox Code Playgroud)
您可以看到我们在每个require语句中都有遍历目录:./../...这是因为我们有一个specs目录,我们将规范和多个目录保存在由测试中的应用程序功能分组.
问题:
在Protractor中处理相对路径问题的规范方法是什么?
换句话说,我们想避免遍历树,进入导入模块.从基础应用程序目录下来会更加清晰.
尝试和想法:
有一篇关于解决这个问题的好文章:Node.js的本地require()路径更好,但我不确定在使用Protractor开发测试时哪一个选项是推荐的.
我们也尝试使用require.main构造路径,但它指向node_modules/protractor目录而不是我们的应用程序目录.