You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by oc...@apache.org on 2021/09/15 22:21:57 UTC

[trafficcontrol] branch master updated: Migrate Servers test from E2E to integrate test suite TP (#6137)

This is an automated email from the ASF dual-hosted git repository.

ocket8888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 99ed9ea  Migrate Servers test from E2E to integrate test suite TP (#6137)
99ed9ea is described below

commit 99ed9ea6a0e35b03394dd801239ea1c7b4de4595
Author: dpham <ph...@yahoo.com>
AuthorDate: Wed Sep 15 16:21:49 2021 -0600

    Migrate Servers test from E2E to integrate test suite TP (#6137)
    
    * Add test
    
    * Remove test
    
    * Clean up structure
    
    * Add access modifier
    
    * Change tests
    
    * Retest after roles fix
    
    * Fix test
    
    * Update structure
    
    * Fix clean up
    
    * Fix server capabilities spec because function change
    
    * Retest
    
    Co-authored-by: Pham, Dandy (Contractor) <Da...@comcast.com>
---
 traffic_portal/test/integration/Data/servers.ts    |  30 ++++
 .../test/integration/PageObjects/ServersPage.po.ts | 175 +++++++++++----------
 .../specs/ServerServerCapabilities.spec.ts         |  12 +-
 .../test/integration/specs/Servers.spec.ts         |  39 ++---
 4 files changed, 149 insertions(+), 107 deletions(-)

diff --git a/traffic_portal/test/integration/Data/servers.ts b/traffic_portal/test/integration/Data/servers.ts
index 026dcd3..6840bbf 100644
--- a/traffic_portal/test/integration/Data/servers.ts
+++ b/traffic_portal/test/integration/Data/servers.ts
@@ -778,6 +778,16 @@ export const servers = {
 					password: "pa$$word"
 				}
 			],
+			toggle:[
+				{
+					description: "hide first table column",
+					Name: "Cache Group"
+				},
+				{
+					description: "redisplay first table column",
+					Name: "Cache Group"
+				}
+			],
 			add: [
 				{
 					description: "create a Server",
@@ -843,6 +853,16 @@ export const servers = {
 					password: "pa$$word"
 				}
 			],
+			toggle:[
+				{
+					description: "hide first table column",
+					Name: "Cache Group"
+				},
+				{
+					description: "redisplay first table column",
+					Name: "Cache Group"
+				}
+			],
 			add: [
 				{
 					description: "create a Server",
@@ -883,6 +903,16 @@ export const servers = {
 					password: "pa$$word"
 				}
 			],
+			toggle:[
+				{
+					description: "hide first table column",
+					Name: "Cache Group"
+				},
+				{
+					description: "redisplay first table column",
+					Name: "Cache Group"
+				}
+			],
 			add: [
 				{
 					description: "create a Server",
diff --git a/traffic_portal/test/integration/PageObjects/ServersPage.po.ts b/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
index 4697086..eee9b44 100644
--- a/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
@@ -21,7 +21,7 @@ import { browser, by, element, ExpectedConditions } from 'protractor';
 import randomIpv6 from "random-ipv6";
 
 import { BasePage } from './BasePage.po';
-import {SideNavigationPage} from '../PageObjects/SideNavigationPage.po';
+import { SideNavigationPage } from '../PageObjects/SideNavigationPage.po';
 import { randomize } from '../config';
 
 interface CreateServer {
@@ -85,17 +85,18 @@ export class ServersPage extends BasePage {
   private btnMoreCreateServer = element(by.name("moreBtn"))
   private btnCreateServer = element(by.name("createServerMenuItem"))
   private txtQuickSearch = element(by.id("quickSearch"));
+  private btnTableColumn = element(by.className("caret"))
   private randomize = randomize;
 
-  async OpenServerPage(){
+  public async OpenServerPage() {
     let snp = new SideNavigationPage();
     await snp.NavigateToServersPage();
-   }
-   async OpenConfigureMenu(){
+  }
+  public async OpenConfigureMenu() {
     let snp = new SideNavigationPage();
     await snp.ClickConfigureMenu();
-   }
-  GetInputErrorDisplayed() {
+  }
+  public GetInputErrorDisplayed() {
     return this.lblInputError.getText()
   }
 
@@ -103,7 +104,7 @@ export class ServersPage extends BasePage {
     return element(by.xpath("//table[@id='serversTable']//tr/td[text()='" + "']")).isPresent()
   }
 
-  async ClickAddServer() {
+  public async ClickAddServer() {
     await this.btnCreateServer.click()
   }
 
@@ -114,7 +115,7 @@ export class ServersPage extends BasePage {
     await this.btnMoreCreateServer.click();
     await this.btnCreateServer.click();
     await this.txtStatus.sendKeys(server.Status);
-    await this.txtHostname.sendKeys(server.Hostname+this.randomize);
+    await this.txtHostname.sendKeys(server.Hostname + this.randomize);
     await this.txtDomainName.sendKeys(server.Domainname);
     await this.txtCDN.sendKeys("ALL");
     await this.txtCDN.sendKeys(server.CDN + this.randomize);
@@ -123,13 +124,13 @@ export class ServersPage extends BasePage {
     await this.txtProfile.sendKeys(server.Profile + this.randomize);
     await this.txtPhysLocation.sendKeys(server.PhysLocation);
     await this.txtInterfaceName.sendKeys(server.InterfaceName);
-    await element(by.id(""+server.InterfaceName+"-")).sendKeys(ipv6.toString());
+    await element(by.id("" + server.InterfaceName + "-")).sendKeys(ipv6.toString());
     if (!await basePage.ClickCreate())
-        result = false;
-    await basePage.GetOutputMessage().then(function(value){
-      if(server.validationMessage == value){
+      result = false;
+    await basePage.GetOutputMessage().then(function (value) {
+      if (server.validationMessage == value) {
         result = true;
-      }else{
+      } else {
         result = false;
       }
     })
@@ -137,172 +138,180 @@ export class ServersPage extends BasePage {
     return result;
   }
 
-  async SearchServer(nameServer:string){
-    let name = nameServer+this.randomize;
+  public async SearchServer(nameServer: string) {
+    let name = nameServer + this.randomize;
     await this.txtQuickSearch.clear();
     await this.txtQuickSearch.sendKeys(name);
     await browser.actions().click(element(by.cssContainingText("span", name))).perform();
   }
 
-  public async SearchDeliveryServiceFromServerPage(name:string): Promise<boolean> {
+  public async SearchDeliveryServiceFromServerPage(name: string): Promise<boolean> {
     await this.txtDSSearch.clear();
     await this.txtDSSearch.sendKeys(name);
-    if(await browser.isElementPresent(element(by.xpath("//td[@data-search='^"+name+"$']"))) == true){
-      await element(by.xpath("//td[@data-search='^"+name+"$']")).click();
+    if (await browser.isElementPresent(element(by.xpath("//td[@data-search='^" + name + "$']"))) == true) {
+      await element(by.xpath("//td[@data-search='^" + name + "$']")).click();
       return true;
     }
     return false;
   }
 
-  public async AddDeliveryServiceToServer(deliveryServiceName:string,outputMessage:string): Promise<boolean | undefined> {
-    let result: boolean | undefined = false;
+  public async AddDeliveryServiceToServer(deliveryServiceName: string, outputMessage: string): Promise<boolean> {
+    let result = false;
     let basePage = new BasePage();
-    let deliveryService = deliveryServiceName+this.randomize;
+    let deliveryService = deliveryServiceName + this.randomize;
     const serverNameRandomized = await this.txtHostName.getText();
-    let serverName = serverNameRandomized.replace(this.randomize,"")
-    if(outputMessage.includes("delivery services assigned")){
-      outputMessage = outputMessage.replace(serverName,serverNameRandomized)
+    let serverName = serverNameRandomized.replace(this.randomize, "")
+    if (outputMessage.includes("delivery services assigned")) {
+      outputMessage = outputMessage.replace(serverName, serverNameRandomized)
     }
-    if(outputMessage.includes("cannot assign")){
-      let dsCapRequired = outputMessage.slice(112,118);
-      outputMessage = outputMessage.replace(dsCapRequired,dsCapRequired+this.randomize)
-      outputMessage = outputMessage.replace(serverName,serverNameRandomized)
+    if (outputMessage.includes("cannot assign")) {
+      let dsCapRequired = outputMessage.slice(112, 118);
+      outputMessage = outputMessage.replace(dsCapRequired, dsCapRequired + this.randomize)
+      outputMessage = outputMessage.replace(serverName, serverNameRandomized)
     }
     await this.btnMore.click();
-    if(await this.btnManageDeliveryService.isPresent() == true){
+    if (await this.btnManageDeliveryService.isPresent() == true) {
       await this.btnManageDeliveryService.click();
       await this.btnLinkDStoServer.click();
-      if(await this.SearchDeliveryServiceFromServerPage(deliveryService) == true){
+      if (await this.SearchDeliveryServiceFromServerPage(deliveryService) == true) {
         await basePage.ClickSubmit();
-         result = await basePage.GetOutputMessage().then(function(value){
-          if(value == outputMessage){
+        result = await basePage.GetOutputMessage().then(function (value) {
+          if (value == outputMessage) {
             return true;
-          }else{
+          } else {
             return false;
           }
         })
       }
-    }else{
-      result = undefined;
+    } else {
+      result = false;
     }
     return result;
 
   }
 
-  public async AddServerCapabilitiesToServer(serverCapabilities: ServerCapability): Promise<boolean | undefined> {
-    let result: boolean | undefined = false;
+  public async AddServerCapabilitiesToServer(serverCapabilities: ServerCapability): Promise<boolean> {
+    let result = false;
     let basePage = new BasePage();
     let serverCapabilitiesName = serverCapabilities.ServerCapability + this.randomize;
     await this.btnMore.click();
-    if((await this.btnManageCapabilities.isPresent()) == true){
+    if ((await this.btnManageCapabilities.isPresent()) == true) {
       await this.btnManageCapabilities.click();
       await this.btnAddCapabilities.click();
       await this.selectCapabilities.sendKeys(serverCapabilitiesName);
       await basePage.ClickSubmit();
-      result = await basePage.GetOutputMessage().then(function(value){
-        if(serverCapabilities.validationMessage === value || serverCapabilities.validationMessage && value.includes(serverCapabilities.validationMessage)){
+      result = await basePage.GetOutputMessage().then(function (value) {
+        if (serverCapabilities.validationMessage === value || serverCapabilities.validationMessage && value.includes(serverCapabilities.validationMessage)) {
           result = true;
-        }else{
+        } else {
           result = false;
         }
         return result;
       })
-    }else{
-      result = undefined;
+    } else {
+      result = false;
     }
     await this.OpenServerPage();
     return result;
-   }
+  }
 
-   async SearchServerServerCapabilities(name:string){
+  public async SearchServerServerCapabilities(name: string) {
     let result = false;
     await this.searchFilter.clear();
     await this.searchFilter.sendKeys(name);
-    result = await element.all(by.repeater('sc in ::serverCapabilities')).filter(function(row){
-      return row.element(by.name('name')).getText().then(function(val){
+    result = await element.all(by.repeater('sc in ::serverCapabilities')).filter(function (row) {
+      return row.element(by.name('name')).getText().then(function (val) {
         return val === name;
       });
-    }).first().getText().then(function(value){
-      if(value == name){
+    }).first().getText().then(function (value) {
+      if (value == name) {
         return true;
-      }else{
+      } else {
         return false;
       }
     })
     return result;
-   }
+  }
 
 
-   public async RemoveServerCapabilitiesFromServer(serverCapabilities:string,outputMessage:string): Promise<boolean | undefined> {
-    let result: boolean | undefined = false;
+  public async RemoveServerCapabilitiesFromServer(serverCapabilities: string, outputMessage: string): Promise<boolean> {
+    let result = false;
     let basePage = new BasePage();
-    let serverCapabilitiesname = serverCapabilities+this.randomize;
+    let serverCapabilitiesname = serverCapabilities + this.randomize;
     const url = (await browser.getCurrentUrl()).toString();
     let serverNumber = url.substring(url.lastIndexOf('/') + 1);
-    if(outputMessage.includes("cannot remove")){
-      outputMessage = outputMessage.replace(serverCapabilities,serverCapabilitiesname)
-      outputMessage = outputMessage.slice(0,56) + serverNumber + " " + outputMessage.slice(56);
+    if (outputMessage.includes("cannot remove")) {
+      outputMessage = outputMessage.replace(serverCapabilities, serverCapabilitiesname)
+      outputMessage = outputMessage.slice(0, 56) + serverNumber + " " + outputMessage.slice(56);
     }
     await this.btnMore.click();
-    if((await this.btnManageCapabilities.isPresent()) == true){
+    if ((await this.btnManageCapabilities.isPresent()) == true) {
       await this.btnManageCapabilities.click();
-      if(await this.SearchServerServerCapabilities(serverCapabilitiesname) == true){
-        await element(by.xpath("//td[text()='"+ serverCapabilitiesname +"']/following-sibling::td/a[@title='Remove Server Capability']")).click();
+      if (await this.SearchServerServerCapabilities(serverCapabilitiesname) == true) {
+        await element(by.xpath("//td[text()='" + serverCapabilitiesname + "']/following-sibling::td/a[@title='Remove Server Capability']")).click();
       }
       await this.btnYesRemoveSC.click();
-      result = await basePage.GetOutputMessage().then(function(value){
-        if(outputMessage == value){
+      result = await basePage.GetOutputMessage().then(function (value) {
+        if (outputMessage == value) {
           return true;
-        }else if(value.includes(outputMessage)){
+        } else if (value.includes(outputMessage)) {
           return true;
-        }else{
+        } else {
           return false;
         }
       })
-    }else{
-      result = undefined;
+    } else {
+      result = false;
     }
     await this.OpenServerPage();
     return result;
-   }
+  }
 
-  public async UpdateServer(server: UpdateServer): Promise<boolean | undefined> {
+  public async UpdateServer(server: UpdateServer): Promise<boolean> {
     let result = false;
     let basePage = new BasePage();
-    if(server.description.includes('change the cdn of a Server')){
+    if (server.description.includes('change the cdn of a Server')) {
       await this.txtCDN.sendKeys(server.CDN + this.randomize);
       await this.txtProfile.sendKeys(server.Profile + this.randomize)
       await basePage.ClickUpdate();
       result = await basePage.GetOutputMessage().then(function (value) {
-          if (server.validationMessage == value) {
-            return true;
-          } else {
-            return false;
-          }
-        })
-        return result;
+        if (server.validationMessage == value) {
+          return true;
+        } else {
+          return false;
+        }
+      })
     }
+    return result;
   }
 
-  async DeleteServer(server: DeleteServer){
+  public async DeleteServer(server: DeleteServer) {
     let result = false;
     let basePage = new BasePage();
     let name = server.Name + this.randomize
     await this.btnDelete.click();
     await browser.wait(ExpectedConditions.visibilityOf(this.txtConfirmServerName), 1000);
     await this.txtConfirmServerName.sendKeys(name);
-    if(await basePage.ClickDeletePermanently() == true){
-      result = await basePage.GetOutputMessage().then(function(value){
-        if(server.validationMessage == value){
+    if (await basePage.ClickDeletePermanently() == true) {
+      result = await basePage.GetOutputMessage().then(function (value) {
+        if (server.validationMessage == value) {
           return true
-        }else{
+        } else {
           return false;
         }
       })
-    }else{
+    } else {
       await basePage.ClickCancel();
     }
     await this.OpenServerPage();
     return result;
-   }
+  }
+
+  public async ToggleTableColumn(name: string): Promise<boolean> {
+    await this.btnTableColumn.click();
+    const result = await element(by.cssContainingText("th", name)).isPresent();
+    await element(by.cssContainingText("label", name)).click();
+    await this.btnTableColumn.click();
+    return !result;
+  }
 }
diff --git a/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts b/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
index d21c6d9..49c4c9d 100644
--- a/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
+++ b/traffic_portal/test/integration/specs/ServerServerCapabilities.spec.ts
@@ -41,7 +41,7 @@ serverServerCapabilities.tests.forEach(async serverServerCapData => {
             it('can login', async () => {
                 browser.get(browser.params.baseUrl);
                 await loginPage.Login(login);
-                expect(await loginPage.CheckUserName(login)).toBeTruthy();
+                expect(await loginPage.CheckUserName(login)).toBe(true);
             });
             it('can open server page', async () => {
                 await serverPage.OpenConfigureMenu();
@@ -51,13 +51,13 @@ serverServerCapabilities.tests.forEach(async serverServerCapData => {
                 if(link.description.includes("cannot")){
                     it(link.description, async () => {
                         await serverPage.SearchServer(link.Server);
-                        expect(await serverPage.AddServerCapabilitiesToServer(link)).toBeUndefined();
+                        expect(await serverPage.AddServerCapabilitiesToServer(link)).toBe(false);
                         await serverPage.OpenServerPage();
                     });
                 } else {
                     it(link.description, async () => {
                         await serverPage.SearchServer(link.Server);
-                        expect(await serverPage.AddServerCapabilitiesToServer(link)).toBeTruthy();
+                        expect(await serverPage.AddServerCapabilitiesToServer(link)).toBe(true);
                         await serverPage.OpenServerPage();
                     });
                 }
@@ -65,7 +65,7 @@ serverServerCapabilities.tests.forEach(async serverServerCapData => {
             serverServerCapData.remove.forEach(remove => {
                 it(remove.description, async () => {
                     await serverPage.SearchServer(remove.Server);
-                    expect(await serverPage.RemoveServerCapabilitiesFromServer(remove.ServerCapability, remove.validationMessage)).toBeTruthy();
+                    expect(await serverPage.RemoveServerCapabilitiesFromServer(remove.ServerCapability, remove.validationMessage)).toBe(true);
                     await serverPage.OpenServerPage();
                 });
             });
@@ -75,12 +75,12 @@ serverServerCapabilities.tests.forEach(async serverServerCapData => {
             serverServerCapData.deleteServerCapability.forEach(deleteSC => {
                 it(deleteSC.description, async () => {
                     await serverCapabilitiesPage.SearchServerCapabilities(deleteSC.ServerCapability);
-                    expect(await serverCapabilitiesPage.DeleteServerCapabilities(deleteSC.ServerCapability, deleteSC.validationMessage)).toBeTruthy();
+                    expect(await serverCapabilitiesPage.DeleteServerCapabilities(deleteSC.ServerCapability, deleteSC.validationMessage)).toBe(true);
                     await serverCapabilitiesPage.OpenServerCapabilityPage();
                 });
             });
             it('can logout', async () => {
-                expect(await topNavigation.Logout()).toBeTruthy();
+                expect(await topNavigation.Logout()).toBe(true);
             });
         });
     });
diff --git a/traffic_portal/test/integration/specs/Servers.spec.ts b/traffic_portal/test/integration/specs/Servers.spec.ts
index 867397e..4a9bdf9 100644
--- a/traffic_portal/test/integration/specs/Servers.spec.ts
+++ b/traffic_portal/test/integration/specs/Servers.spec.ts
@@ -17,7 +17,6 @@
  * under the License.
  */
 import { browser } from 'protractor';
-
 import { LoginPage } from '../PageObjects/LoginPage.po'
 import { ServersPage } from '../PageObjects/ServersPage.po';
 import { api } from "../config";
@@ -28,51 +27,55 @@ const loginPage = new LoginPage();
 const topNavigation = new TopNavigationPage();
 const serversPage = new ServersPage();
 
-describe('Setup API call for Servers Test', () =>{
+describe('Setup API call for Servers Test', () => {
     it('Setup', async () => {
         await api.UseAPI(servers.setup);
     });
 });
-
 servers.tests.forEach(async serversData => {
     serversData.logins.forEach(login => {
-        describe(`Traffic Portal - Servers - ${login.description}`, () =>{
+        describe(`Traffic Portal - Servers - ${login.description}`, () => {
+            afterEach(async function () {
+                await serversPage.OpenServerPage();
+            });
+            afterAll(async function () {
+                expect(await topNavigation.Logout()).toBeTruthy();
+            })
             it('can login', async () => {
                 browser.get(browser.params.baseUrl);
                 await loginPage.Login(login);
-                expect(await loginPage.CheckUserName(login)).toBeTruthy();
-            });
-            it('can open servers page', async () => {
+                expect(await loginPage.CheckUserName(login)).toBe(true);
                 await serversPage.OpenConfigureMenu();
-                await serversPage.OpenServerPage();
             });
+            serversData.toggle.forEach(toggle => {
+                it(toggle.description, async () => {
+                    if (toggle.description.includes('hide')) {
+                        expect(await serversPage.ToggleTableColumn(toggle.Name)).toBe(true);
+                    } else {
+                        expect(await serversPage.ToggleTableColumn(toggle.Name)).toBe(true);
+                    }
+                });
+            })
             serversData.add.forEach(add => {
                 it(add.description, async () => {
-                    expect(await serversPage.CreateServer(add)).toBeTruthy();
-                    await serversPage.OpenServerPage();
+                    expect(await serversPage.CreateServer(add)).toBe(true);
                 });
             });
             serversData.update.forEach(update => {
                 it(update.description, async () => {
                     await serversPage.SearchServer(update.Name);
-                    expect(await serversPage.UpdateServer(update)).toBeTruthy();
-                    await serversPage.OpenServerPage();
+                    expect(await serversPage.UpdateServer(update)).toBe(true);
                 });
             });
             serversData.remove.forEach(remove => {
                 it(remove.description, async () => {
                     await serversPage.SearchServer(remove.Name);
-                    expect(await serversPage.DeleteServer(remove)).toBeTruthy();
-                    await serversPage.OpenServerPage();
+                    expect(await serversPage.DeleteServer(remove)).toBe(true);
                 });
             });
-            it('can logout', async () => {
-                expect(await topNavigation.Logout()).toBeTruthy();
-            });
         })
     })
 })
-
 describe('API Clean Up for Servers Test', () => {
     it('Cleanup', async () => {
         await api.UseAPI(servers.cleanup);