| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { describe, it, before, after } from 'mocha'
- import { expect } from 'chai'
- import { By, Condition } from 'selenium-webdriver'
- import {
- DEFAULT_UI_WAIT_MS,
- getRootAndWait,
- getActionButton,
- takeScreenshotOnFailure,
- waitForArgumentFormPage,
- waitForArgumentFormReady,
- waitForDashboardLoaded,
- } from '../../lib/elements.js'
- async function waitForStartButtonEnabled () {
- await webdriver.wait(
- new Condition('wait for Start button to be enabled', async () => {
- const submitButton = await webdriver.findElement(By.css('button[name="start"]'))
- return await submitButton.isEnabled()
- }),
- DEFAULT_UI_WAIT_MS
- )
- }
- async function waitForActionSuccessFlash (actionTitle) {
- await webdriver.wait(
- new Condition(`wait for ${actionTitle} success flash`, async () => {
- try {
- const button = await getActionButton(webdriver, actionTitle)
- const classAttr = await button.getAttribute('class')
- return classAttr && classAttr.includes('action-success')
- } catch (e) {
- return false
- }
- }),
- DEFAULT_UI_WAIT_MS
- )
- }
- describe('config: argumentActionFlash', function () {
- this.timeout(15000)
- before(async function () {
- await runner.start('argumentActionFlash')
- })
- after(async () => {
- await runner.stop()
- })
- afterEach(function () {
- takeScreenshotOnFailure(this.currentTest, webdriver)
- })
- it('Action with arguments flashes success after returning to dashboard (#920)', async function () {
- await getRootAndWait()
- const argButton = await getActionButton(webdriver, 'Hello world')
- await argButton.click()
- await waitForArgumentFormPage()
- await waitForArgumentFormReady()
- await waitForStartButtonEnabled()
- const submitButton = await webdriver.findElement(By.css('button[name="start"]'))
- await submitButton.click()
- await webdriver.wait(
- new Condition('wait to leave argument form', async () => {
- const url = await webdriver.getCurrentUrl()
- return !url.includes('/argumentForm')
- }),
- DEFAULT_UI_WAIT_MS
- )
- await waitForDashboardLoaded()
- await waitForActionSuccessFlash('Hello world')
- const flashedButton = await getActionButton(webdriver, 'Hello world')
- const classAttr = await flashedButton.getAttribute('class')
- expect(classAttr).to.include('action-success')
- })
- it('Action without arguments still flashes success on the dashboard', async function () {
- await getRootAndWait()
- const simpleButton = await getActionButton(webdriver, 'Simple action')
- await simpleButton.click()
- await waitForActionSuccessFlash('Simple action')
- const flashedButton = await getActionButton(webdriver, 'Simple action')
- const classAttr = await flashedButton.getAttribute('class')
- expect(classAttr).to.include('action-success')
- })
- })
|