mirror of
https://github.com/OliveTin/OliveTin
synced 2026-07-14 07:37:07 +00:00
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
import { describe, it, before, after } from 'mocha'
|
|
import { expect } from 'chai'
|
|
import { By, until, Condition, Key } from 'selenium-webdriver'
|
|
import {
|
|
getRootAndWait,
|
|
getActionButtons,
|
|
takeScreenshotOnFailure,
|
|
waitForArgumentFormPage,
|
|
waitForArgumentFormReady,
|
|
} from '../../lib/elements.js'
|
|
|
|
|
|
describe('config: multipleDropdowns', function () {
|
|
before(async function () {
|
|
await runner.start('multipleDropdowns')
|
|
})
|
|
|
|
after(async () => {
|
|
await runner.stop()
|
|
})
|
|
|
|
afterEach(function () {
|
|
takeScreenshotOnFailure(this.currentTest, webdriver);
|
|
});
|
|
|
|
it('Multiple dropdowns are possible', async function() {
|
|
await getRootAndWait()
|
|
|
|
// Wait for action buttons to be rendered
|
|
await webdriver.wait(new Condition('wait for action buttons', async () => {
|
|
const btns = await webdriver.findElements(By.css('.action-button button'))
|
|
return btns.length >= 2
|
|
}), 10000)
|
|
|
|
const buttons = await getActionButtons()
|
|
|
|
let button = null
|
|
for (const b of buttons) {
|
|
const title = await b.getAttribute('title')
|
|
|
|
if (title === 'Test multiple dropdowns') {
|
|
button = b
|
|
}
|
|
}
|
|
|
|
expect(buttons).to.have.length(2)
|
|
expect(button).to.not.be.null
|
|
|
|
await button.click()
|
|
|
|
await waitForArgumentFormPage(8000)
|
|
await waitForArgumentFormReady(10000)
|
|
|
|
await webdriver.wait(new Condition('wait for choice comboboxes', async () => {
|
|
const boxes = await webdriver.findElements(By.css('main .choice-combobox'))
|
|
return boxes.length >= 2
|
|
}), 10000)
|
|
|
|
const comboboxes = await webdriver.findElements(By.css('main .choice-combobox'))
|
|
|
|
expect(comboboxes).to.have.length(2)
|
|
|
|
const firstInput = await comboboxes[0].findElement(By.css('.choice-combobox-input'))
|
|
await firstInput.click()
|
|
await webdriver.wait(new Condition('wait for first combobox list', async () => {
|
|
const lists = await comboboxes[0].findElements(By.css('.choice-combobox-list li'))
|
|
return lists.length === 2
|
|
}), 2000)
|
|
|
|
await firstInput.sendKeys(Key.TAB)
|
|
|
|
await webdriver.wait(new Condition('wait for second combobox list', async () => {
|
|
const lists = await comboboxes[1].findElements(By.css('.choice-combobox-list li'))
|
|
return lists.length === 3
|
|
}), 2000)
|
|
})
|
|
})
|