Я считаю, что
'page_objects_path':
[
"./componentTests/page-objects",
"./endToEndTests/page-objects",
],
должно быть достаточно. Класс page
должен иметь подклассы, вызываемые подпапками вашей структуры. Например, метод getTheCoolElement()
из "./endToEndTests/page-objects/mainPage/SubPage.js" должен называться следующим образом: browser.page.mainPage.SubPage().getTheCoolElement()
См. Рабочий пример в проекте owncloud Phoenix, который имеет иерархию объектов страницы: https://github.com/owncloud/phoenix/tree/master/tests/acceptance/pageObjects
в качестве альтернативы вы можете просто создать этот массив программно, используя JS. например,
const fs = require('fs')
// const path = require('path')
const getAllFolders = function (dirPath, arrayOfFiles) {
const files = fs.readdirSync(dirPath)
arrayOfFiles = arrayOfFiles || []
files.forEach(function (file) {
if (fs.statSync(dirPath + '/' + file).isDirectory()) {
arrayOfFiles = getAllFolders(dirPath + '/' + file, arrayOfFiles)
arrayOfFiles.push(path.join(dirPath, '/', file))
}
})
return arrayOfFiles
}
let allPageObjectPath = getAllFolders(
path.join(__dirname, '/componentTests/page-objects')
)
allPageObjectPath = allPageObjectPath.concat(
getAllFolders(path.join(__dirname, '/endToEndTests/page-objects'))
)
module.exports = {
page_objects_path: allPageObjectPath,
....
}