mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-07 04:40:05 -06:00
80 lines
2.3 KiB
JavaScript
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'
|
|
}
|
|
}
|
|
}
|