我需要为我的
JavaScript单页面应用程序组织单元测试和端到端测试.我正在使用AngularJS Protractor / Cucumber进行e2e测试,使用Chai进行单元测试.
我在两个不同的文件夹(单元和e2e文件夹)中进行了e2e和单元测试,我目前没有利用page object设计模式.这些文件是非结构化的,不共享很多代码,所以我多次重复自己.
我认识到这种方法不会扩大规模
解决方法
首先,你绝对应该切换到使用Page Object模式并将页面对象保存在一个单独的目录中 – 我认为建议调用目录po.
以下是您的示例,我们目前拥有的项目结构:
$cd e2e $tree -L 1 . ├── config ├── db ├── helpers ├── mocks ├── po └── specs
config是我们保留量角器配置的特殊目录 – 可能有多个配置 – 例如,用于本地测试和测试,例如BrowserStack.
帮助程序基本上是我们的“libs”/“utils”目录.我们保留定制的茉莉花匹配器,带辅助功能的附加“辅助”模块.此外,我们有localStorage和sessionStorage模块,它们是window.localStorage和window.sessionStorage对象的方便包装器.
mocks是我们保留protractor-http-mock
mocks的目录.
specs是我们所有规范都存在的地方 – 它们在逻辑上被组织成子目录.
一些助手库是made globally available via global
,例如:
onPrepare: function () { global.helpers = require("../helpers/helpers.js"); // ... },
另外,为了使助手和po导入更方便并避免遍历树中的目录并更好地处理嵌套,我们已经切换到使用@Michael Radionov建议的requirePO和requireHelper辅助函数,请参阅:
> Using require with relative paths
我也非常喜欢@finspin提出的想法,即从每个Page Object中创建一个节点包.