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);