it('should allow editing courses', () => { // Check browser url (dashboard) expect(browser.driver.getCurrentUrl()).toMatch('/courses'); // Get and click the button to edit the last one of the courses var lastEditCoursesIcon = element.all(by.className('course-put-icon')).last(); page.waitUntilElementNotVisible('#course-modal'); lastEditCoursesIcon.click(); page.waitUntilElementPresent('#put-delete-course-modal'); // Get field inputs var courseNameField = browser.driver.findElement(by.id('inputPutCourseName')); // Fill input field courseNameField.clear(); courseNameField.sendKeys('[EDITED]'); // Ensure field contains what has been entered expect(courseNameField.getAttribute('value')).toEqual('[EDITED]'); browser.driver.findElement(by.id('submit-put-course-btn')).then(function(submitEditCourseBtn) { // Click submit form submitEditCourseBtn.click().then(function() { browser.waitForAngular(); //The last course should have changed its name var editedCourse = element.all(by.className('course-title')).last(); expect(editedCourse.getText()).toEqual('[EDITED]'); }); }); });
it('should log in', () => { // Check browser url (root) expect(browser.driver.getCurrentUrl()).toMatch('/'); // Find form elements (login modal is already opened) var userNameField = browser.driver.findElement(by.id('email')); var userPassField = browser.driver.findElement(by.id('password')); // Fill input fields userNameField.sendKeys(userEmail); userPassField.sendKeys(userPass); // Ensure fields contain what has been entered expect(userNameField.getAttribute('value')).toEqual(userEmail); expect(userPassField.getAttribute('value')).toEqual(userPass); browser.driver.findElement(by.id('log-in-btn')).then(function(loginBtn) { // Click to log in - waiting for Angular as it is manually bootstrapped. loginBtn.click().then(function() { browser.waitForAngular(); // Browser url must have changed to the dashboard route expect(browser.driver.getCurrentUrl()).toMatch('/courses'); }); }); });
welcomeBtn.click().then(function() { // Find form elements var userNameField = browser.driver.findElement(by.id('email')); var userPassField = browser.driver.findElement(by.id('password')); // Fill input fields userNameField.sendKeys('*****@*****.**'); userPassField.sendKeys('pass'); // Ensure fields contain what has been entered expect(userNameField.getAttribute('value')).toEqual('*****@*****.**'); expect(userPassField.getAttribute('value')).toEqual('pass'); browser.driver.findElement(by.id('log-in-btn')).then(function(loginBtn) { // Click to log in - waiting for Angular as it is manually bootstrapped. loginBtn.click().then(function() { browser.waitForAngular(); // Error message appears warning about an invalid field expect(browser.driver.findElement(by.tagName('app-error-message')).getText()).toContain('Invalid field'); //Route mustn't change expect(browser.driver.getCurrentUrl()).toMatch('/'); // Clear field inputs userNameField.clear(); userPassField.clear(); }); }); });
btn.click().then(function() { page.waitUntilElementPresent('#course-details-modal'); // Find form elements var entryTitleField = browser.driver.findElement(by.css('input#inputTitle')); var entryCommentField = browser.driver.findElement(by.css('textarea#inputComment')); // Fill input fields entryTitleField.sendKeys('New testing entry title'); entryCommentField.sendKeys('New testing entry comment'); // Ensure fields contain what has been entered expect(entryTitleField.getAttribute('value')).toEqual('New testing entry title'); expect(entryCommentField.getAttribute('value')).toEqual('New testing entry comment'); // Send new entry browser.driver.findElement(by.css('#post-modal-btn')).then(function(sendButton) { sendButton.click().then(function() { browser.waitForAngular(); page.waitUntilElementNotVisible('#course-details-modal'); // Get and check the title of last entry var entries = element.all(by.css('li.entry-title div div a')); expect(entries.last().getText()).toContain('New testing entry title'); }); }); });
getIconButton(name: string, className: string) { return element.all(by.css('table>tbody>tr')).filter(row => { return row.all(by.tagName('td')).get(0).getText().then(pName => { return pName === name; }) }).get(0).element(by.css(className)); }
it('should allow removing courses', () => { // Check browser url (dashboard) expect(browser.driver.getCurrentUrl()).toMatch('/courses'); // Get the number of courses present in the dashboard var courses1 = element.all(by.className('course-title')); var i = courses1.count; // Get and click the button to edit the last one of the courses var lastEditCoursesIcon = element.all(by.className('course-put-icon')).last(); page.waitUntilElementNotVisible('#put-delete-course-modal'); lastEditCoursesIcon.click(); page.waitForAnimation(); // Get and click the checkbox to allow the course's deletion browser.driver.findElement(by.css('label[for=delete-checkbox]')).then(function(deletionAllow) { deletionAllow.click(); // Get and click the button to delete the course browser.driver.findElement(by.css('div.delete-div a.btn-flat')).then(function(deleteButton) { deleteButton.click().then(function() { browser.waitForAngular(); // Get the number of courses present in the dashboard var courses2 = element.all(by.className('course-title')); var j = courses2.count; // Should be exactly one course less than before the deletion expect(Number(j.toString()) === (Number(i.toString()) - 1)); }); }); }); });
getFormData() { let mainPanel = element.all(by.css('.metron-slider-pane-edit')).last(); return protractor.promise.all([ mainPanel.element(by.css('.form-title')).getText(), mainPanel.element(by.css('input[name="sensorTopic"]')).getAttribute('value'), mainPanel.element(by.css('select[formcontrolname="parserClassName"]')).getAttribute('value'), mainPanel.element(by.css('input[formcontrolname="grokStatement"]')).getAttribute('value'), mainPanel.all(by.css('div[name="fieldSchema"] table tr')).getText(), mainPanel.all(by.css('div[name="threatTriage"] table tr')).getText(), mainPanel.element(by.css('input[formcontrolname="index"]')).getAttribute('value'), mainPanel.element(by.css('metron-config-number-spinner[name="batchSize"] input')).getAttribute('value'), mainPanel.all(by.css('metron-config-advanced-form input')).getAttribute('value') ]).then(args => { return { title: args[0], parserName: args[1], parserType: args[2], grokStatement: args[3], fieldSchemaSummary: args[4], threatTriageSummary: args[5], indexName: args[6], batchSize: args[7], advancedConfig: args[8] } }); }
getActions(name: string) { return element.all(by.css('table>tbody>tr')).filter(row => { return row.all(by.tagName('td')).get(0).getText().then(pName => { return pName === name; }) }).get(0).all(by.tagName('i')).map(icon => { return icon.getAttribute('class').then(classNames => { let className = classNames.replace('fa ', '').replace('fa-lg', '').replace('fa-spin fa-fw', '').trim(); return {classNames: className, displayed: icon.isDisplayed()}; }); }); }
getDropdownActionState() { return protractor.promise.all([ element.all(by.css('.dropdown.open .dropdown-menu span:not(.disabled)')).count(), element.all(by.css('.dropdown.open .dropdown-menu span.disabled')).count(), element.all(by.css('.dropdown-menu')).isDisplayed() ]).then(args => { return { enabled: args[0], disabled: args[1], displayed: args[2][0], } }); }
element(by.css('.card-panel.warning')).isPresent().then(function(pres) { if (pres) { element(by.css('#edit-forum-icon')).click().then(function() { page.waitForAnimation(); // Get and click the checkbox to allow the forum's activation browser.driver.findElement(by.css('label[for=delete-checkbox]')).then(function(activationAllowed) { activationAllowed.click(); // Get and click the button to activate the forum browser.driver.findElement(by.css('#put-modal-btn')).then(function(activateButton) { activateButton.click().then(function() { browser.waitForAngular(); page.waitForAnimation(); page.waitUntilElementPresent('#add-entry-icon'); }); }); }); }); } browser.driver.findElement(by.css('#add-entry-icon')).then(function(btn) { btn.click().then(function() { page.waitUntilElementPresent('#course-details-modal'); // Find form elements var entryTitleField = browser.driver.findElement(by.css('input#inputTitle')); var entryCommentField = browser.driver.findElement(by.css('textarea#inputComment')); // Fill input fields entryTitleField.sendKeys('New testing entry title'); entryCommentField.sendKeys('New testing entry comment'); // Ensure fields contain what has been entered expect(entryTitleField.getAttribute('value')).toEqual('New testing entry title'); expect(entryCommentField.getAttribute('value')).toEqual('New testing entry comment'); // Send new entry browser.driver.findElement(by.css('#post-modal-btn')).then(function(sendButton) { sendButton.click().then(function() { browser.waitForAngular(); page.waitUntilElementNotVisible('#course-details-modal'); // Get and check the title of last entry var entries = element.all(by.css('li.entry-title div div a')); expect(entries.last().getText()).toContain('New testing entry title'); }); }); }); }); });