mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-04 01:39:16 -05:00
Fix settings ui tests
This commit is contained in:
@@ -4,15 +4,16 @@ Feature: Set user specific settings
|
||||
So that I can customize my OCIS experience to my liking
|
||||
|
||||
Background:
|
||||
Given these users have been created with default attributes:
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| user1 |
|
||||
| user2 |
|
||||
And user "user1" has created folder "simple-folder"
|
||||
|
||||
Scenario: Check the default settings
|
||||
Given user "user1" has logged in using the webUI
|
||||
And the user browses to the settings page
|
||||
Then the setting "Language" should have value "Please select"
|
||||
Then the setting "Language" should not have any value
|
||||
When the user browses to the files page
|
||||
Then the files menu should be listed in language "English"
|
||||
|
||||
|
||||
@@ -3,24 +3,28 @@ const filesMenu = {
|
||||
'All files',
|
||||
'Shared with me',
|
||||
'Shared with others',
|
||||
'Shared via link',
|
||||
'Deleted files'
|
||||
],
|
||||
Deutsch: [
|
||||
'Alle Dateien',
|
||||
'Mit mir geteilt',
|
||||
'Mit anderen geteilt',
|
||||
'Per Link geteilt',
|
||||
'Gelöschte Dateien'
|
||||
],
|
||||
Español: [
|
||||
'Todos los archivos',
|
||||
'Compartido conmigo',
|
||||
'Compartido con otros',
|
||||
"Shared via link",
|
||||
'Archivos borrados'
|
||||
],
|
||||
Français: [
|
||||
'Tous les fichiers',
|
||||
'Partagé avec moi',
|
||||
'Partagé avec autres',
|
||||
"Shared via link",
|
||||
'Fichiers supprimés'
|
||||
]
|
||||
}
|
||||
@@ -58,7 +62,7 @@ const filesListHeaderMenu = {
|
||||
Deutsch: [
|
||||
'Name',
|
||||
'Größe',
|
||||
'Erneuert',
|
||||
'Geändert',
|
||||
'Aktionen'
|
||||
],
|
||||
Español: [
|
||||
|
||||
@@ -78,7 +78,7 @@ module.exports = {
|
||||
selector: '#account-info-container'
|
||||
},
|
||||
fileTableHeaderItems: {
|
||||
selector: '//*[@id="files-table-header"]//span[not(*) and not(ancestor::label)]',
|
||||
selector: '//*[@id="files-personal-table"]//th[not(.//div)]',
|
||||
locateStrategy: 'xpath'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,19 @@ module.exports = {
|
||||
let output
|
||||
switch (key) {
|
||||
case 'Language':
|
||||
let elemfound = true
|
||||
|
||||
// Language value is set to empty at beginning
|
||||
// In that case jsut return false
|
||||
await this.api.element('@languageValue', result => {
|
||||
if (result.status < 0) {
|
||||
elemfound = false
|
||||
}
|
||||
})
|
||||
if (!elemfound) {
|
||||
output = false
|
||||
break
|
||||
}
|
||||
await this.waitForElementVisible('@languageValue')
|
||||
.getText('@languageValue', (result) => {
|
||||
output = result.value
|
||||
@@ -42,16 +55,11 @@ module.exports = {
|
||||
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()
|
||||
await this
|
||||
.waitForElementVisible('@languageInput')
|
||||
.setValue('@languageInput', value + '\n')
|
||||
break
|
||||
default:
|
||||
throw new Error('failed to find the setting')
|
||||
@@ -64,16 +72,12 @@ module.exports = {
|
||||
selector: '.oc-page-title'
|
||||
},
|
||||
languageValue: {
|
||||
selector: "//label[.='Language']/..//button[starts-with(@id, 'single-choice-toggle')]",
|
||||
selector: "//label[.='Language']/..//span[@class='vs__selected']",
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
languageDropdown: {
|
||||
selector: "//label[.='Language']/..//div[starts-with(@id, 'single-choice-drop')]",
|
||||
languageInput: {
|
||||
selector: "//label[.='Language']/..//input",
|
||||
locateStrategy: 'xpath'
|
||||
},
|
||||
languageSelect: {
|
||||
selector: "//label[.='Language']/..//div[starts-with(@id, 'single-choice-drop')]//label[normalize-space()='%s']",
|
||||
locateStrategy: 'xpath'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,11 @@ const assert = require('assert')
|
||||
const path = require('path')
|
||||
const fs = require('fs-extra')
|
||||
const { client } = require('nightwatch-api')
|
||||
const { Given, When, Then, After } = require('cucumber')
|
||||
const { Given, When, Then, After, Before } = require('cucumber')
|
||||
const languageHelper = require('../helpers/language')
|
||||
|
||||
const initialLanguageAssignments = []
|
||||
|
||||
Given('the user browses to the settings page', function () {
|
||||
return client.page.settingsPage().navigateAndWaitTillLoaded()
|
||||
})
|
||||
@@ -14,6 +16,11 @@ Then('the setting {string} should have value {string}', async function (setting,
|
||||
assert.strictEqual(actual, result, 'The setting value doesnt matches to ' + result)
|
||||
})
|
||||
|
||||
Then('the setting {string} should not have any value', async function (setting) {
|
||||
const actual = await client.page.settingsPage().getSettingsValue(setting)
|
||||
assert.strictEqual(actual, false, 'The setting value was expected not to be present but was')
|
||||
})
|
||||
|
||||
When('the user changes the language to {string}', async function (value) {
|
||||
await client.page.settingsPage().changeSettings('Language', value)
|
||||
})
|
||||
@@ -21,35 +28,48 @@ When('the user changes the language to {string}', async function (value) {
|
||||
Then('the files menu should be listed in language {string}', async function (language) {
|
||||
const menu = await client.page.filesPageSettingsContext().getMenuList()
|
||||
const expected = languageHelper.getFilesMenuForLanguage(language)
|
||||
assert.deepEqual(menu, expected, 'the menu list were not same')
|
||||
assert.deepStrictEqual(menu, expected, 'the menu list were not same')
|
||||
})
|
||||
|
||||
Then('the account menu should be listed in language {string}', async function (language) {
|
||||
const menu = await client.page.filesPageSettingsContext().getUserMenu()
|
||||
const expected = languageHelper.getUserMenuForLanguage(language)
|
||||
assert.deepEqual(menu, expected, 'the menu list were not same')
|
||||
assert.deepStrictEqual(menu, expected, 'the menu list were not same')
|
||||
})
|
||||
|
||||
Then('the files header should be displayed in language {string}', async function (language) {
|
||||
const items = await client.page.filesPageSettingsContext().getFileHeaderItems()
|
||||
const expected = languageHelper.getFilesHeaderMenuForLanguage(language)
|
||||
assert.deepEqual(items, expected, 'the menu list were not same')
|
||||
assert.deepStrictEqual(items, expected, 'the menu list were not same')
|
||||
})
|
||||
|
||||
After(async function () {
|
||||
const directory = path.join(client.globals.settings_store, 'values')
|
||||
let directory = path.join(client.globals.settings_store, 'assignments')
|
||||
try {
|
||||
console.log('Elements')
|
||||
fs.readdirSync(directory).map(element => {
|
||||
console.log(element)
|
||||
if (!initialLanguageAssignments.includes(element)) {
|
||||
fs.unlinkSync(path.join(client.globals.settings_store, 'assignments', element))
|
||||
}
|
||||
})
|
||||
} catch (err) {
|
||||
console.log('Error while reading the settings values from file system... ')
|
||||
}
|
||||
|
||||
directory = path.join(client.globals.settings_store, 'values')
|
||||
try {
|
||||
fs.emptyDirSync(directory)
|
||||
} catch (err) {
|
||||
console.log('Error while clearing settings values from file system')
|
||||
console.log('No settings may have been changed by the tests')
|
||||
console.log('Error while cleaning the settings values from file system... ')
|
||||
}
|
||||
})
|
||||
|
||||
Before(async function() {
|
||||
const directory = path.join(client.globals.settings_store, 'assignments')
|
||||
try {
|
||||
fs.readdirSync(directory).map(element => {
|
||||
initialLanguageAssignments.push(element)
|
||||
})
|
||||
} catch (err) {
|
||||
console.log('Error while reading the settings values from file system... ')
|
||||
}
|
||||
})
|
||||
@@ -6,12 +6,6 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$OCIS_SKELETON_DIR" ]
|
||||
then
|
||||
echo "OCIS_SKELETON_DIR env variable is not set, cannot find skeleton directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$WEB_UI_CONFIG" ]
|
||||
then
|
||||
echo "WEB_UI_CONFIG env variable is not set, cannot find web config file"
|
||||
|
||||
Reference in New Issue
Block a user