elements.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { By } from 'selenium-webdriver'
  2. import fs from 'fs'
  3. import { expect } from 'chai'
  4. import { Condition } from 'selenium-webdriver'
  5. export async function getActionButtons (webdriver) {
  6. return await webdriver.findElement(By.id('contentActions')).findElements(By.tagName('button'))
  7. }
  8. export function takeScreenshot (webdriver) {
  9. return webdriver.takeScreenshot().then((img) => {
  10. fs.writeFileSync('out.png', img, 'base64')
  11. })
  12. }
  13. export async function getRootAndWait() {
  14. await webdriver.get(runner.baseUrl())
  15. await webdriver.wait(new Condition('wait for initial-marshal-complete', async function() {
  16. const body = await webdriver.findElement(By.tagName('body'))
  17. const attr = await body.getAttribute('initial-marshal-complete')
  18. if (attr == 'true') {
  19. return true
  20. } else {
  21. return false
  22. }
  23. }))
  24. }
  25. export async function requireExecutionDialogStatus (webdriver, expected) {
  26. // It seems that webdriver will not give us text if domStatus is hidden (which it will be until complete)
  27. await webdriver.executeScript('window.executionDialog.domExecutionDetails.hidden = false')
  28. await webdriver.wait(new Condition('wait for action to be running', async function () {
  29. const actual = await webdriver.executeScript('return window.executionDialog.domStatus.getText()')
  30. if (actual === expected) {
  31. return true
  32. } else {
  33. console.log('Waiting for domStatus text to be: ', expected, ', it is currently: ', actual)
  34. console.log(await webdriver.executeScript('return window.executionDialog.res'))
  35. return false
  36. }
  37. }))
  38. }
  39. export async function findExecutionDialog (webdriver) {
  40. return webdriver.findElement(By.id('execution-results-popup'))
  41. }
  42. export async function getActionButton (webdriver, title) {
  43. const buttons = await webdriver.findElements(By.css('[title="' + title + '"]'))
  44. expect(buttons).to.have.length(1)
  45. return buttons[0]
  46. }