651 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			651 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { cloneDeep } from 'lodash-es'
 | 
						|
 | 
						|
const username = Cypress.env('username')
 | 
						|
const password = Cypress.env('password')
 | 
						|
const hostUrl = Cypress.env('hosturl')
 | 
						|
const appLocation = Cypress.env('appLocation')
 | 
						|
const longerCommandTimeout = Cypress.env('longerCommandTimeout')
 | 
						|
const serverType = Cypress.env('serverType')
 | 
						|
const libraryToOpenIncludes = Cypress.env(`libraryToOpenIncludes_${serverType}`)
 | 
						|
 | 
						|
context('editor tests: ', function () {
 | 
						|
  this.beforeAll(() => {
 | 
						|
    cy.visit(`${hostUrl}/SASLogon/logout`)
 | 
						|
    cy.loginAndUpdateValidKey(true)
 | 
						|
  })
 | 
						|
 | 
						|
  this.beforeEach(() => {
 | 
						|
    cy.visit(hostUrl + appLocation)
 | 
						|
    cy.wait(2000)
 | 
						|
 | 
						|
    cy.get('body').then(($body) => {
 | 
						|
      const usernameInput = $body.find('input.username')[0]
 | 
						|
 | 
						|
      if (usernameInput && !Cypress.dom.isHidden(usernameInput)) {
 | 
						|
        cy.get('input.username').type(username)
 | 
						|
        cy.get('input.password').type(password)
 | 
						|
 | 
						|
        cy.get('.login-group button').click()
 | 
						|
      }
 | 
						|
    })
 | 
						|
 | 
						|
    visitPage('home')
 | 
						|
  })
 | 
						|
 | 
						|
  it('1 | Add one viewbox', (done) => {
 | 
						|
    const viewbox_table = 'mpe_audit'
 | 
						|
    const columns = ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM']
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(libraryToOpenIncludes, [viewbox_table])
 | 
						|
 | 
						|
    cy.get('.open-viewbox').then((viewboxNodes: any) => {
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        if (!viewboxNode.innerText.toLowerCase().includes(viewbox_table)) {
 | 
						|
          return
 | 
						|
        }
 | 
						|
 | 
						|
        checkColumns(columns, () => {
 | 
						|
          done()
 | 
						|
        })
 | 
						|
      }
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('2 | Add two viewboxes', (done) => {
 | 
						|
    const viewboxes = [
 | 
						|
      {
 | 
						|
        viewbox_table: 'mpe_audit',
 | 
						|
        columns: ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM']
 | 
						|
      },
 | 
						|
      {
 | 
						|
        viewbox_table: 'mpe_alerts',
 | 
						|
        columns: [
 | 
						|
          'TX_FROM',
 | 
						|
          'ALERT_EVENT',
 | 
						|
          'ALERT_LIB',
 | 
						|
          'ALERT_DS',
 | 
						|
          'ALERT_USER'
 | 
						|
        ]
 | 
						|
      }
 | 
						|
    ]
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(
 | 
						|
      libraryToOpenIncludes,
 | 
						|
      viewboxes.map((viewbox) => viewbox.viewbox_table))
 | 
						|
    cy.get('.open-viewbox').then((viewboxNodes: any) => {
 | 
						|
      let found = 0
 | 
						|
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        for (let viewbox of viewboxes) {
 | 
						|
          if (
 | 
						|
            viewboxNode.innerText.toLowerCase().includes(viewbox.viewbox_table)
 | 
						|
          )
 | 
						|
            found++
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      if (found < viewboxes.length) return
 | 
						|
 | 
						|
      cy.get('.viewboxes-container .viewbox', { withinSubject: null }).then((viewboxNodes: any) => {
 | 
						|
        for (let viewboxNode of viewboxNodes) {
 | 
						|
          cy.get(viewboxNode).within(() => {
 | 
						|
            cy.get('.table-title').then((tableTitle) => {
 | 
						|
              const title = tableTitle[0].innerText
 | 
						|
              const viewbox = viewboxes.find((vb) =>
 | 
						|
                title.toLowerCase().includes(vb.viewbox_table)
 | 
						|
              )
 | 
						|
 | 
						|
              if (viewbox) {
 | 
						|
                cy.get('.ht_master.handsontable .htCore thead tr').then(
 | 
						|
                  (viewboxColNodes: any) => {
 | 
						|
                    let allColsHtml = viewboxColNodes[0].innerHTML
 | 
						|
 | 
						|
                    for (let col of viewbox?.columns) {
 | 
						|
                      if (!allColsHtml.includes(col)) return
 | 
						|
                    }
 | 
						|
 | 
						|
                    done()
 | 
						|
                  }
 | 
						|
                )
 | 
						|
              }
 | 
						|
            })
 | 
						|
          })
 | 
						|
        }
 | 
						|
      })
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('3 | Add viewbox, add columns', (done) => {
 | 
						|
    const viewbox_table = 'mpe_audit'
 | 
						|
    const columns = ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM']
 | 
						|
    const additionalColumns = ['IS_PK']
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(libraryToOpenIncludes, [viewbox_table])
 | 
						|
 | 
						|
    cy.get('.open-viewbox').then((viewboxNodes: any) => {
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        if (!viewboxNode.innerText.toLowerCase().includes(viewbox_table)) {
 | 
						|
          return
 | 
						|
        }
 | 
						|
 | 
						|
        openViewboxConfig(viewbox_table)
 | 
						|
 | 
						|
        removeAllColumns()
 | 
						|
 | 
						|
        addColumns(additionalColumns)
 | 
						|
 | 
						|
        checkColumns([...columns, ...additionalColumns], () => {
 | 
						|
          done()
 | 
						|
        })
 | 
						|
      }
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('4 | Add viewbox, add columns and reorder', (done) => {
 | 
						|
    const viewbox_table = 'mpe_audit'
 | 
						|
    const columns = ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM']
 | 
						|
    const additionalColumns = ['IS_PK', 'MOVE_TYPE']
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(libraryToOpenIncludes, [viewbox_table])
 | 
						|
 | 
						|
    cy.get('.open-viewbox').then((viewboxNodes: any) => {
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        if (!viewboxNode.innerText.toLowerCase().includes(viewbox_table)) {
 | 
						|
          return
 | 
						|
        }
 | 
						|
 | 
						|
        openViewboxConfig(viewbox_table)
 | 
						|
 | 
						|
        removeAllColumns()
 | 
						|
 | 
						|
        addColumns(additionalColumns, () => {
 | 
						|
          cy.wait(1000)
 | 
						|
          //reorder
 | 
						|
          cy.get('.col-box.column-MOVE_TYPE')
 | 
						|
            .realMouseDown({ button: 'left', position: 'center' })
 | 
						|
            .realMouseMove(0, 10, { position: 'center' })
 | 
						|
          cy.wait(200) // In our case, we wait 200ms cause we have animations which we are sure that take this amount of time
 | 
						|
          cy.get('.col-box.column-IS_PK')
 | 
						|
            .realMouseMove(0, 0, { position: 'center' })
 | 
						|
            .realMouseUp()
 | 
						|
          //reorder end
 | 
						|
 | 
						|
          cy.wait(500)
 | 
						|
 | 
						|
          checkColumns([...columns, ...additionalColumns.reverse()], () => {
 | 
						|
            done()
 | 
						|
          })
 | 
						|
        })
 | 
						|
      }
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('5 | Add viewbox, add columns, reorder, remove column, add again', (done) => {
 | 
						|
    const viewbox_table = 'mpe_audit'
 | 
						|
    const columns = ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM']
 | 
						|
    const additionalColumns = ['IS_PK', 'MOVE_TYPE']
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(libraryToOpenIncludes, [viewbox_table])
 | 
						|
 | 
						|
    cy.get('.open-viewbox').then((viewboxNodes: any) => {
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        if (!viewboxNode.innerText.toLowerCase().includes(viewbox_table)) {
 | 
						|
          return
 | 
						|
        }
 | 
						|
 | 
						|
        viewboxNode.click()
 | 
						|
 | 
						|
        removeAllColumns()
 | 
						|
 | 
						|
        addColumns(additionalColumns, () => {
 | 
						|
          cy.wait(1000)
 | 
						|
          //reorder
 | 
						|
          cy.get('.col-box.column-MOVE_TYPE')
 | 
						|
            .realMouseDown({ button: 'left', position: 'center' })
 | 
						|
            .realMouseMove(0, 10, { position: 'center' })
 | 
						|
          cy.wait(200) // In our case, we wait 200ms cause we have animations which we are sure that take this amount of time
 | 
						|
          cy.get('.col-box.column-IS_PK')
 | 
						|
            .realMouseMove(0, 0, { position: 'center' })
 | 
						|
            .realMouseUp()
 | 
						|
          //reorder end
 | 
						|
 | 
						|
          cy.wait(500)
 | 
						|
 | 
						|
          checkColumns([...columns, ...additionalColumns.reverse()], () => {
 | 
						|
            const colToRemove = 'MOVE_TYPE'
 | 
						|
 | 
						|
            removeColumn(colToRemove)
 | 
						|
            checkColumns(
 | 
						|
              [
 | 
						|
                ...columns,
 | 
						|
                ...additionalColumns.filter((col) => col !== colToRemove)
 | 
						|
              ],
 | 
						|
              () => {
 | 
						|
                addColumns([colToRemove], () => {
 | 
						|
                  checkColumns(
 | 
						|
                    [...columns, ...additionalColumns.reverse()],
 | 
						|
                    () => {
 | 
						|
                      done()
 | 
						|
                    }
 | 
						|
                  )
 | 
						|
                })
 | 
						|
              }
 | 
						|
            )
 | 
						|
          })
 | 
						|
        })
 | 
						|
      }
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  it('6 | Add viewboxes, reload and check url restored configuration', (done) => {
 | 
						|
    const viewboxes = [
 | 
						|
      {
 | 
						|
        viewbox_table: 'mpe_audit',
 | 
						|
        columns: ['LOAD_REF', 'LIBREF', 'DSN', 'KEY_HASH', 'TGTVAR_NM'],
 | 
						|
        additionalColumns: ['IS_PK', 'MOVE_TYPE']
 | 
						|
      },
 | 
						|
      {
 | 
						|
        viewbox_table: 'mpe_alerts',
 | 
						|
        columns: [
 | 
						|
          'TX_FROM',
 | 
						|
          'ALERT_EVENT',
 | 
						|
          'ALERT_LIB',
 | 
						|
          'ALERT_DS',
 | 
						|
          'ALERT_USER'
 | 
						|
        ],
 | 
						|
        additionalColumns: ['TX_TO']
 | 
						|
      }
 | 
						|
    ]
 | 
						|
 | 
						|
    openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
    cy.get('.viewbox-open').click()
 | 
						|
    openTableFromViewboxTree(libraryToOpenIncludes, [
 | 
						|
      viewboxes[0].viewbox_table,
 | 
						|
      viewboxes[1].viewbox_table
 | 
						|
    ])
 | 
						|
 | 
						|
    openViewboxConfig(viewboxes[0].viewbox_table)
 | 
						|
 | 
						|
    cy.wait(500)
 | 
						|
 | 
						|
    removeAllColumns()
 | 
						|
 | 
						|
    addColumns(viewboxes[0].additionalColumns, () => {
 | 
						|
      cy.wait(1000)
 | 
						|
 | 
						|
      if (viewboxes[0].viewbox_table === 'mpe_audit') {
 | 
						|
        cy.get('.col-box.column-MOVE_TYPE')
 | 
						|
          .realMouseDown({ button: 'left', position: 'center' })
 | 
						|
          .realMouseMove(0, 10, { position: 'center' })
 | 
						|
        cy.wait(200) // In our case, we wait 200ms cause we have animations which we are sure that take this amount of time
 | 
						|
        cy.get('.col-box.column-IS_PK')
 | 
						|
          .realMouseMove(0, 0, { position: 'center' })
 | 
						|
          .realMouseUp()
 | 
						|
      }
 | 
						|
 | 
						|
      cy.wait(1000)
 | 
						|
 | 
						|
      openViewboxConfig(viewboxes[1].viewbox_table)
 | 
						|
 | 
						|
      addColumns(viewboxes[1].additionalColumns, () => {
 | 
						|
        cy.wait(1000).reload()
 | 
						|
 | 
						|
        let result = 0
 | 
						|
 | 
						|
        checkColumns(
 | 
						|
          [
 | 
						|
            ...viewboxes[0].columns,
 | 
						|
            ...cloneDeep(viewboxes[0].additionalColumns.reverse())
 | 
						|
          ],
 | 
						|
          () => {
 | 
						|
            result++
 | 
						|
 | 
						|
            if (result === 2) done()
 | 
						|
          }
 | 
						|
        )
 | 
						|
        checkColumns(
 | 
						|
          [...viewboxes[1].columns, ...viewboxes[1].additionalColumns],
 | 
						|
          () => {
 | 
						|
            result++
 | 
						|
 | 
						|
            if (result === 2) done()
 | 
						|
          }
 | 
						|
        )
 | 
						|
      })
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  // We will enable this test when we figure out how to mock filtering
 | 
						|
  // it('7 | Add viewboxes and filter', () => {
 | 
						|
  //   const viewboxes = ['mpe_x_test', 'mpe_validations']
 | 
						|
 | 
						|
  //   openTableFromTree(libraryToOpenIncludes, 'mpe_x_test')
 | 
						|
 | 
						|
  //   cy.get('.viewbox-open').click()
 | 
						|
  //   openTableFromViewboxTree(libraryToOpenIncludes, viewboxes)
 | 
						|
 | 
						|
  //   cy.wait(1000)
 | 
						|
 | 
						|
  //     closeViewboxModal()
 | 
						|
 | 
						|
  //     cy.get('.viewboxes-container .viewbox', { withinSubject: null }).then(
 | 
						|
  //       (viewboxNodes: any) => {
 | 
						|
  //         for (let viewboxNode of viewboxNodes) {
 | 
						|
  //           cy.get(viewboxNode).within(() => {
 | 
						|
  //             cy.get('.table-title').then((title: any) => {
 | 
						|
  //               cy.get('.hot-spinner')
 | 
						|
  //                 .should('not.exist')
 | 
						|
  //                 .then(() => {
 | 
						|
  //                   cy.get('clr-icon[shape="filter"]').then((filterButton) => {
 | 
						|
  //                     filterButton[0].click()
 | 
						|
  //                   })
 | 
						|
 | 
						|
  //                   if (title[0].innerText.includes('MPE_X_TEST')) {
 | 
						|
  //                     setFilterWithValue(
 | 
						|
  //                       'SOME_CHAR',
 | 
						|
  //                       'this is dummy data',
 | 
						|
  //                       'value',
 | 
						|
  //                       () => {
 | 
						|
  //                         cy.get('app-query', { withinSubject: null })
 | 
						|
  //                           .should('not.exist')
 | 
						|
  //                           .get('.ht_master.handsontable tbody tr')
 | 
						|
  //                           .then((rowNodes) => {
 | 
						|
  //                             const tr = rowNodes[0]
 | 
						|
 | 
						|
  //                             expect(rowNodes).to.have.length(1)
 | 
						|
  //                             expect(tr.innerText).to.equal('0')
 | 
						|
  //                           })
 | 
						|
  //                       }
 | 
						|
  //                     )
 | 
						|
  //                   } else if (title[0].innerText.includes('MPE_VALIDATIONS')) {
 | 
						|
  //                     setFilterWithValue('BASE_COL', 'ALERT_LIB', 'value', () => {
 | 
						|
  //                       cy.get('app-query', { withinSubject: null })
 | 
						|
  //                         .should('not.exist')
 | 
						|
  //                         .get('.ht_master.handsontable tbody tr')
 | 
						|
  //                         .then((rowNodes) => {
 | 
						|
  //                           const tr = rowNodes[0]
 | 
						|
 | 
						|
  //                           expect(rowNodes).to.have.length(1)
 | 
						|
  //                           expect(tr.innerText).to.contain('ALERT_LIB')
 | 
						|
  //                         })
 | 
						|
  //                     })
 | 
						|
  //                   }
 | 
						|
  //                 })
 | 
						|
  //             })
 | 
						|
  //           })
 | 
						|
  //         }
 | 
						|
  //       }
 | 
						|
  //     )
 | 
						|
  // })
 | 
						|
})
 | 
						|
 | 
						|
const removeAllColumns = () => {
 | 
						|
  cy.get('.configuration-wrapper clr-icon[shape="trash"]').then(removeNodes => {
 | 
						|
    for (let removeNode of removeNodes) {
 | 
						|
      removeNode.click()
 | 
						|
    }
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
const checkColumns = (columns: string[], callback: () => void) => {
 | 
						|
  cy.get('.viewboxes-container .viewbox', { withinSubject: null }).then(
 | 
						|
    (viewboxNodes: any) => {
 | 
						|
      for (let viewboxNode of viewboxNodes) {
 | 
						|
        cy.get(viewboxNode).within(() => {
 | 
						|
          cy.get('.ht_master.handsontable thead tr th').then(
 | 
						|
            (viewboxColNodes: any) => {
 | 
						|
              console.log('viewboxColNode', viewboxColNodes)
 | 
						|
              console.log('columns', columns)
 | 
						|
              for (let i = 0; i < viewboxColNodes.length; i++) {
 | 
						|
                const col = columns[i]|| ''
 | 
						|
                const colNode = viewboxColNodes[i]
 | 
						|
 | 
						|
                if (
 | 
						|
                  !colNode.innerHTML.toLowerCase().includes(col.toLowerCase())
 | 
						|
                )
 | 
						|
                  return
 | 
						|
              }
 | 
						|
 | 
						|
              callback()
 | 
						|
            }
 | 
						|
          )
 | 
						|
        })
 | 
						|
      }
 | 
						|
    }
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
const closeViewboxModal = () => {
 | 
						|
  cy.get('app-viewboxes .close', { withinSubject: null }).click()
 | 
						|
}
 | 
						|
 | 
						|
const removeColumn = (column: string) => {
 | 
						|
  cy.get(`.col-box.column-${column} clr-icon`, { withinSubject: null }).click()
 | 
						|
}
 | 
						|
 | 
						|
const addColumns = (columns: string[], callback?: () => void) => {
 | 
						|
  for (let i = 0; i < columns.length; i++) {
 | 
						|
    const column = columns[i]
 | 
						|
 | 
						|
    cy.get('.cols-search input', { withinSubject: null }).type(column)
 | 
						|
    cy.get('.cols-search .autocomplete-wrapper', { withinSubject: null })
 | 
						|
      .first()
 | 
						|
      .trigger('keydown', { key: 'ArrowDown' })
 | 
						|
    cy.get('.cols-search .autocomplete-wrapper', { withinSubject: null })
 | 
						|
      .first()
 | 
						|
      .trigger('keydown', { key: 'Enter' })
 | 
						|
      .then(() => {
 | 
						|
        if (i === columns.length - 1 && callback) callback()
 | 
						|
      })
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
const openViewboxConfig = (viewbox_tablename: string) => {
 | 
						|
  cy.get('.open-viewbox').then((viewboxes: any) => {
 | 
						|
    for (let openViewbox of viewboxes) {
 | 
						|
      if (openViewbox.innerText.toLowerCase().includes(viewbox_tablename))
 | 
						|
        openViewbox.click()
 | 
						|
    }
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
const openTableFromTree = (libNameIncludes: string, tablename: string) => {
 | 
						|
  cy.get('.app-loading', { timeout: longerCommandTimeout })
 | 
						|
    .should('not.exist')
 | 
						|
    .then(() => {
 | 
						|
      cy.get('.nav-tree clr-tree > clr-tree-node', {
 | 
						|
        timeout: longerCommandTimeout
 | 
						|
      }).then((treeNodes: any) => {
 | 
						|
        let viyaLib
 | 
						|
 | 
						|
        for (let node of treeNodes) {
 | 
						|
          if (new RegExp(libNameIncludes).test(node.innerText.toLowerCase())) {
 | 
						|
            viyaLib = node
 | 
						|
            break
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        cy.get(viyaLib).within(() => {
 | 
						|
          cy.get('.clr-tree-node-content-container p').click()
 | 
						|
 | 
						|
          cy.get('.clr-treenode-link').then((innerNodes: any) => {
 | 
						|
            for (let innerNode of innerNodes) {
 | 
						|
              if (innerNode.innerText.toLowerCase().includes(tablename)) {
 | 
						|
                innerNode.click()
 | 
						|
                break
 | 
						|
              }
 | 
						|
            }
 | 
						|
          })
 | 
						|
        })
 | 
						|
      })
 | 
						|
    })
 | 
						|
}
 | 
						|
 | 
						|
const setFilterWithValue = (
 | 
						|
  variableValue: string,
 | 
						|
  valueString: string,
 | 
						|
  valueField: 'value' | 'time' | 'date' | 'datetime' | 'in' | 'between',
 | 
						|
  callback?: any
 | 
						|
) => {
 | 
						|
  cy.wait(600)
 | 
						|
 | 
						|
  cy.focused().type(variableValue)
 | 
						|
  cy.wait(100)
 | 
						|
  // cy.focused().trigger('input')
 | 
						|
  cy.get('.variable-col .autocomplete-wrapper', { withinSubject: null })
 | 
						|
    .first()
 | 
						|
    .trigger('keydown', { key: 'ArrowDown' })
 | 
						|
  cy.get('.variable-col .autocomplete-wrapper', {
 | 
						|
    withinSubject: null
 | 
						|
  }).trigger('keydown', { key: 'Enter' })
 | 
						|
  cy.focused().tab()
 | 
						|
  cy.wait(100)
 | 
						|
 | 
						|
  if (valueField === 'in') {
 | 
						|
    cy.focused().select(valueField.toUpperCase()).trigger('change')
 | 
						|
  } else if (valueField === 'between') {
 | 
						|
    cy.focused().select(valueField.toUpperCase()).trigger('change')
 | 
						|
  } else {
 | 
						|
    cy.focused().tab()
 | 
						|
    cy.wait(100)
 | 
						|
  }
 | 
						|
 | 
						|
  switch (valueField) {
 | 
						|
    case 'value': {
 | 
						|
      cy.focused().type(valueString)
 | 
						|
 | 
						|
      break
 | 
						|
    }
 | 
						|
    case 'time': {
 | 
						|
      cy.focused().type(valueString)
 | 
						|
 | 
						|
      break
 | 
						|
    }
 | 
						|
    case 'date': {
 | 
						|
      cy.focused().type(valueString)
 | 
						|
      cy.focused().tab()
 | 
						|
 | 
						|
      break
 | 
						|
    }
 | 
						|
    case 'datetime': {
 | 
						|
      const date = valueString.split(' ')[0]
 | 
						|
      const time = valueString.split(' ')[1]
 | 
						|
 | 
						|
      cy.focused().type(date)
 | 
						|
      cy.focused().tab()
 | 
						|
      cy.focused().tab()
 | 
						|
      cy.focused().type(time)
 | 
						|
 | 
						|
      break
 | 
						|
    }
 | 
						|
    case 'in': {
 | 
						|
      cy.get('.checkbox-vals').then(() => {
 | 
						|
        cy.focused().tab()
 | 
						|
        cy.focused().click()
 | 
						|
        cy.get('.no-values')
 | 
						|
          .should('not.exist')
 | 
						|
          .then(() => {
 | 
						|
            cy.get('clr-checkbox-wrapper input').then((inputs: any) => {
 | 
						|
              inputs[0].click()
 | 
						|
              cy.get('.in-values-modal .modal-footer button').click()
 | 
						|
 | 
						|
              cy.get('.modal-footer .btn-success-outline').click()
 | 
						|
 | 
						|
              if (callback) callback()
 | 
						|
            })
 | 
						|
          })
 | 
						|
      })
 | 
						|
 | 
						|
      break
 | 
						|
    }
 | 
						|
    case 'between': {
 | 
						|
      cy.focused().tab()
 | 
						|
 | 
						|
      const start = valueString.split('-')[0]
 | 
						|
      const end = valueString.split('-')[1]
 | 
						|
 | 
						|
      cy.focused().type(start)
 | 
						|
      cy.focused().tab()
 | 
						|
      cy.focused().type(end)
 | 
						|
    }
 | 
						|
    default: {
 | 
						|
      break
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  cy.wait(100)
 | 
						|
  cy.focused().tab()
 | 
						|
  cy.wait(100)
 | 
						|
  cy.focused().tab()
 | 
						|
  cy.wait(100)
 | 
						|
  cy.focused().tab()
 | 
						|
  cy.wait(100)
 | 
						|
  cy.focused().tab()
 | 
						|
  cy.wait(100)
 | 
						|
  cy.focused().click()
 | 
						|
 | 
						|
  if (callback) callback()
 | 
						|
}
 | 
						|
 | 
						|
const openTableFromViewboxTree = (
 | 
						|
  libNameIncludes: string,
 | 
						|
  tablenames: string[]
 | 
						|
) => {
 | 
						|
  cy.get('.add-new clr-tree > clr-tree-node', {
 | 
						|
    timeout: longerCommandTimeout
 | 
						|
  }).then((treeNodes: any) => {
 | 
						|
    let viyaLib
 | 
						|
 | 
						|
    for (let node of treeNodes) {
 | 
						|
      if (node.innerText.toLowerCase().includes(libNameIncludes)) {
 | 
						|
        viyaLib = node
 | 
						|
        break
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    cy.get(viyaLib).within(() => {
 | 
						|
      cy.get('p')
 | 
						|
        .click()
 | 
						|
        .then(() => {
 | 
						|
          cy.get('.clr-treenode-link').then(async (innerNodes: any) => {
 | 
						|
            for (let innerNode of innerNodes) {
 | 
						|
              for (let tablename of tablenames) {
 | 
						|
                await pause(300)
 | 
						|
                if (innerNode.innerText.toLowerCase().includes(tablename)) {
 | 
						|
                  innerNode.click()
 | 
						|
                }
 | 
						|
              }
 | 
						|
            }
 | 
						|
          })
 | 
						|
        })
 | 
						|
    })
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
const pause = (ms: number) => {
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    setTimeout(() => {
 | 
						|
      resolve(null)
 | 
						|
    }, ms)
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
const visitPage = (url: string) => {
 | 
						|
  cy.visit(`${hostUrl}${appLocation}/#/${url}`)
 | 
						|
}
 |