github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/selenium-tests/tests/alerts-test.js (about) 1 const { By, Key, Builder, WebElement } = require("selenium-webdriver"); 2 const assert = require("assert"); 3 const chrome = require('selenium-webdriver/chrome'); 4 let driver; 5 const chromeOptions = new chrome.Options() 6 chromeOptions.addArguments('--headless'); 7 8 async function checkIncrementor(Component){ 9 const initialValue = await Component.getAttribute('value'); 10 // Attempt to increment the value 11 await Component.sendKeys(Key.ARROW_UP); 12 // Get the value after incrementing 13 const incrementedValue = await Component.getAttribute('value'); 14 // Assert that the value has been incremented 15 assert.notStrictEqual(incrementedValue, initialValue, 'Failed to increment the number input.'); 16 // Attempt to decrement the value 17 await Component.sendKeys(Key.ARROW_DOWN); 18 // Get the value after decrementing 19 const decrementedValue = await Component.getAttribute('value'); 20 assert.notStrictEqual(decrementedValue, incrementedValue, 'Failed to decrement the number input.'); 21 22 } 23 async function testAlertPagesButtons() { 24 try{ 25 driver = await new Builder().forBrowser("chrome") 26 .setChromeOptions(chromeOptions) 27 .build(); 28 29 //To fetch http://localhost/alert.html from the browser with our code. 30 31 await driver.get("http://localhost:5122/alert.html"); 32 let cancelBtn = driver.findElement(By.id("cancel-alert-btn")); 33 let cancelTxt = await cancelBtn.getText(); 34 let saveBtn = driver.findElement(By.id("save-alert-btn")); 35 let saveTxt = await saveBtn.getText(); 36 37 // Checks for cancel and save button existance 38 assert.equal(cancelTxt, "Cancel", 'button text is not "Cancel"'); 39 assert.equal(saveTxt, "Save", 'button text is not "Save"'); 40 41 // checks if Alert Rule Text is editable 42 let alertRuleInputTextBox = await driver.findElement(By.id("alert-rule-name")); 43 const checkAlertRuleEditable = await alertRuleInputTextBox.isEnabled(); 44 assert.strictEqual(checkAlertRuleEditable, true, 'alert rule input text box is not editable'); 45 46 let logsBtn = await driver.findElement(By.id("alert-data-source")); 47 await logsBtn.click(); 48 let logsDrpDownPresent= await driver.findElement(By.id("data-source-options")).isDisplayed(); 49 assert.strictEqual(logsDrpDownPresent, true, 'logs dropdown is not displayed'); 50 await logsBtn.click(); 51 52 let logsLanguageBtn = await driver.findElement(By.id('logs-language-btn')); 53 await logsLanguageBtn.click(); 54 let logsLanguageDrpDownPresent= await driver.findElement(By.id("logs-language-options")).isDisplayed(); 55 assert.strictEqual(logsLanguageDrpDownPresent, true, 'logs language dropdown is not displayed'); 56 await logsLanguageBtn.click(); 57 58 let datePickerBtn = await driver.findElement(By.id('date-picker-btn')); 59 await datePickerBtn.click(); 60 let datePickerDrpDownPresent= await driver.findElement(By.id("daterangepicker ")).isDisplayed(); 61 assert.strictEqual(datePickerDrpDownPresent, true, 'date picker dropdown is not displayed'); 62 await datePickerBtn.click(); 63 64 let queryTextBox = await driver.findElement(By.id('query')); 65 const checkQueryEditable = await queryTextBox.isEnabled(); 66 assert.strictEqual(checkQueryEditable, true, 'query text box is not editable'); 67 68 let alertThresholdTextBox = await driver.findElement(By.id('alert-condition')); 69 await alertThresholdTextBox.click(); 70 let alertThresholdDrpDownPresent= await driver.findElement(By.className("dropdown-menu box-shadow alert-condition-options show")).isDisplayed(); 71 assert.strictEqual(alertThresholdDrpDownPresent, true, 'alert threshold dropdown is not displayed'); 72 await alertThresholdTextBox.click(); 73 74 let alertThresholdInputTextBox = await driver.findElement(By.id('threshold-value')); 75 const checkAlertThresholdEditable = await alertThresholdInputTextBox.isEnabled(); 76 assert.strictEqual(checkAlertThresholdEditable, true, 'alert threshold input text box is not editable'); 77 await checkIncrementor(alertThresholdInputTextBox); 78 79 let evaluateEveryTextBox = await driver.findElement(By.id('evaluate-every')); 80 const checkEvaluateEveryEditable = await evaluateEveryTextBox.isEnabled(); 81 assert.strictEqual(checkEvaluateEveryEditable, true, 'evaluate every input text box is not editable'); 82 await checkIncrementor(evaluateEveryTextBox); 83 84 let evaluteForTextBox = await driver.findElement(By.id('evaluate-for')); 85 86 const checkAlertForEditable = await evaluteForTextBox.isEnabled(); 87 assert.strictEqual(checkAlertForEditable, true, 'alert for input text box is not editable'); 88 await checkIncrementor(evaluteForTextBox); 89 90 91 let contactsPtsBtn = await driver.findElement(By.id('contact-points-dropdown')); 92 await contactsPtsBtn.click(); 93 let contactPtsDrpDownPresent= await driver.findElement(By.className("dropdown-menu box-shadow contact-points-options show")).isDisplayed(); 94 assert.strictEqual(contactPtsDrpDownPresent, true, 'contact points dropdown is not displayed'); 95 let contactPtsDrpDown=await driver.findElement(By.className("dropdown-menu box-shadow contact-points-options show")) 96 let addNewBtnForContact = await contactPtsDrpDown.findElement(By.id('option-0')); 97 assert.strictEqual(await addNewBtnForContact.getText(), 'Add New', 'Add new button is not present'); 98 await addNewBtnForContact.click(); 99 100 let cancelBtnForContact = await driver.findElement(By.id('cancel-contact-btn')); 101 let cancelBtnTxt = await cancelBtnForContact.getText(); 102 assert.strictEqual(cancelBtnTxt, 'Cancel', 'Cancel button is not present'); 103 104 let saveBtnForContact = await driver.findElement(By.id('save-contact-btn')); 105 let saveBtnTxt = await saveBtnForContact.getText(); 106 107 assert.strictEqual(saveBtnTxt, 'Save', 'Save button is not present'); 108 let contactNameInputTextBox = await driver.findElement(By.id('contact-name')); 109 110 const checkContactNameEditable = await contactNameInputTextBox.isEnabled(); 111 assert.strictEqual(checkContactNameEditable, true, 'contact name input text box is not editable'); 112 113 let contactTypeDrpDown = await driver.findElement(By.id('contact-types')); 114 await contactTypeDrpDown.click(); 115 let contactTypeDrpDownPresent= await driver.findElement(By.className("dropdown-menu box-shadow contact-options show")); 116 117 assert.strictEqual(await contactTypeDrpDownPresent.isDisplayed(), true, 'contact type dropdown is not displayed'); 118 119 let slackOptionElement = await contactTypeDrpDownPresent.findElement(By.id('option-0')); 120 await slackOptionElement.click(); 121 let slackChannelInputTextBox = await driver.findElement(By.id('slack-channel-id')); 122 const checkSlackChannelEditable = await slackChannelInputTextBox.isEnabled(); 123 assert.strictEqual(checkSlackChannelEditable, true, 'slack channel input text box is not editable'); 124 let slackTokenInputTextBox = await driver.findElement(By.id('slack-token')); 125 const checkSlackTokenEditable = await slackTokenInputTextBox.isEnabled(); 126 assert.strictEqual(checkSlackTokenEditable, true, 'slack token input text box is not editable'); 127 128 contactTypeDrpDown.click(); 129 130 let webHookOptionElement = await contactTypeDrpDownPresent.findElement(By.id('option-1')); 131 await webHookOptionElement.click(); 132 let webHookInputTextBox = await driver.findElement(By.id('webhook-id')); 133 const checkWebHookEditable = await webHookInputTextBox.isEnabled(); 134 assert.strictEqual(checkWebHookEditable, true, 'webhook input text box is not editable'); 135 136 let addNewButton = await driver.findElement(By.className('add-new-contact-type btn')); 137 assert.strictEqual(await addNewButton.getText(), 'Add new contact type', 'Add new button is not present'); 138 139 cancelBtnForContact.click(); 140 141 let notificationMessageInputTextBox = await driver.findElement(By.id('notification-msg')); 142 const checkMessageEditable = await notificationMessageInputTextBox.isEnabled(); 143 assert.strictEqual(checkMessageEditable, true, 'notification message input text box is not editable'); 144 145 let labelKeyInputTextBox = await driver.findElement(By.id('label-key')); 146 const checkLabelKeyEditable = await labelKeyInputTextBox.isEnabled(); 147 assert.strictEqual(checkLabelKeyEditable, true, 'label key input text box is not editable'); 148 labelKeyInputTextBox.getAttribute('value').then(function (value) { 149 assert.strictEqual(value, 'alerting', 'label key input text box is not editable'); 150 }); 151 152 let labelValueInputTextBox = await driver.findElement(By.id('label-value')); 153 const checkLabelValueEditable = await labelValueInputTextBox.isEnabled(); 154 assert.strictEqual(checkLabelValueEditable, true, 'label value input text box is not editable'); 155 labelValueInputTextBox.getAttribute('value').then(function (value) { 156 assert.strictEqual(value, 'true', 'label value input text box is not editable'); 157 }); 158 159 let addNewLabelButton = await driver.findElement(By.className('add-label-container btn')); 160 assert.strictEqual(await addNewLabelButton.getText(), 'Add Label', 'Add new label button is not present'); 161 162 } 163 catch (err) { 164 // Handle any errors that occur during test execution 165 console.error(err); 166 } 167 finally { 168 // Close the browser 169 await driver.quit(); 170 171 } 172 173 } 174 175 testAlertPagesButtons();