Files
opencloud/settings/ui/tests/acceptance/pageobjects/settingsPage.js
A.Unger f725ddaa65 Add 'settings/' from commit '230545a4a75b0611988fbcea51336a6c316d6a3d'
git-subtree-dir: settings
git-subtree-mainline: c26f7b390a
git-subtree-split: 230545a4a7
2020-09-18 12:43:43 +02:00

80 lines
2.3 KiB
JavaScript

const { client } = require('nightwatch-api')
const util = require('util')
module.exports = {
url: function () {
return this.api.launchUrl + '/#/settings'
},
commands: {
navigateAndWaitTillLoaded: async function () {
const url = this.url()
await await this.navigate(url)
while (true) {
let found = false
await this.waitForElementVisible('@pageHeader', 2000, 500, false)
await this.api
.elements('@pageHeader', result => {
if (result.value.length) {
found = true
}
})
if (found) {
break
}
await client.refresh()
}
return this.waitForElementVisible('@pageHeader')
},
getSettingsValue: async function (key) {
let output
switch (key) {
case 'Language':
await this.waitForElementVisible('@languageValue')
.getText('@languageValue', (result) => {
output = result.value
})
break
default:
throw new Error('failed to find the setting')
}
return output
},
changeSettings: async function (key, value) {
const selectXpath = util.format(this.elements.languageSelect.selector, value)
switch (key) {
case 'Language':
await this.waitForElementVisible('@languageValue')
.click('@languageValue')
.useXpath()
.waitForElementVisible(this.elements.languageDropdown.selector)
.click(selectXpath)
.waitForElementNotVisible(this.elements.languageDropdown.selector)
.useCss()
break
default:
throw new Error('failed to find the setting')
}
}
},
elements: {
pageHeader: {
selector: '.oc-page-title'
},
languageValue: {
selector: "//label[.='Language']/..//button[starts-with(@id, 'single-choice-toggle')]",
locateStrategy: 'xpath'
},
languageDropdown: {
selector: "//label[.='Language']/..//div[starts-with(@id, 'single-choice-drop')]",
locateStrategy: 'xpath'
},
languageSelect: {
selector: "//label[.='Language']/..//div[starts-with(@id, 'single-choice-drop')]//label[normalize-space()='%s']",
locateStrategy: 'xpath'
}
}
}