general.mjs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { describe, it, before, after } from 'mocha'
  2. import { expect } from 'chai'
  3. import { By } from 'selenium-webdriver'
  4. //import * as waitOn from 'wait-on'
  5. import {
  6. getRootAndWait,
  7. getActionButtons,
  8. takeScreenshotOnFailure,
  9. openSidebar,
  10. findSidebarNavHref,
  11. waitForCurrentUrl,
  12. waitForSelectorCount,
  13. } from '../../lib/elements.js'
  14. describe('config: general', function () {
  15. before(async function () {
  16. await runner.start('general')
  17. })
  18. after(async () => {
  19. await runner.stop()
  20. })
  21. afterEach(function () {
  22. takeScreenshotOnFailure(this.currentTest, webdriver);
  23. });
  24. it('Page title', async function () {
  25. await getRootAndWait()
  26. const title = await webdriver.getTitle()
  27. expect(title).to.be.equal("Actions - OliveTin")
  28. })
  29. it('navbar contains default policy links', async function () {
  30. await getRootAndWait()
  31. await openSidebar()
  32. const logsLink = await findSidebarNavHref('/logs')
  33. const diagnosticsLink = await findSidebarNavHref('/diagnostics')
  34. expect(logsLink).to.not.be.empty
  35. expect(diagnosticsLink).to.not.be.empty
  36. })
  37. it('Footer contains promo', async function () {
  38. const ftr = await webdriver.findElement(By.tagName('footer')).getText()
  39. expect(ftr).to.contain('Documentation')
  40. })
  41. it('Default buttons are rendered', async function() {
  42. await getRootAndWait()
  43. await waitForSelectorCount('[title="dir-popup"], [title="cd-passive"], .action-button button', 1, 10000)
  44. const buttons = await getActionButtons()
  45. expect(buttons.length).to.be.greaterThanOrEqual(4)
  46. })
  47. it('Start dir action (popup)', async function () {
  48. await getRootAndWait()
  49. await waitForSelectorCount('[title="dir-popup"]', 1, 10000)
  50. const buttons = await webdriver.findElements(By.css('[title="dir-popup"]'))
  51. expect(buttons).to.have.length(1)
  52. const buttonCMD = buttons[0]
  53. expect(buttonCMD).to.not.be.null
  54. buttonCMD.click()
  55. // New UI navigates to /logs/<id> instead of showing old dialog
  56. await waitForCurrentUrl((url) => url.includes('/logs/'), 8000)
  57. })
  58. it('Start cd action (passive)', async function () {
  59. await getRootAndWait()
  60. await waitForSelectorCount('[title="cd-passive"]', 1, 10000)
  61. const buttons = await webdriver.findElements(By.css('[title="cd-passive"]'))
  62. expect(buttons).to.have.length(1)
  63. const buttonCMD = buttons[0]
  64. expect(buttonCMD).to.not.be.null
  65. buttonCMD.click()
  66. // Should not navigate to logs for passive action; brief pause allows spurious navigation to show up
  67. await webdriver.sleep(500)
  68. const url = await webdriver.getCurrentUrl()
  69. expect(url.includes('/logs/')).to.be.false
  70. })
  71. })