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 fb6fd14 Migrate Parameter test from E2E to integrate test suite TP
(#6063)
fb6fd14 is described below
commit fb6fd1477c67847351191aeca30137cdee10bc4e
Author: dpham <[email protected]>
AuthorDate: Mon Aug 2 10:38:14 2021 -0600
Migrate Parameter test from E2E to integrate test suite TP (#6063)
* Add new test
* Fix PR
* Add name element and change xpath
Co-authored-by: Pham, Dandy (Contractor) <[email protected]>
---
.../table/parameters/table.parameters.tpl.html | 2 +-
traffic_portal/test/integration/Data/parameters.ts | 48 ++++++++++++++++++++++
.../integration/PageObjects/ParametersPage.po.ts | 39 +++++++++++-------
.../test/integration/specs/Parameters.spec.ts | 18 ++++++++
4 files changed, 92 insertions(+), 15 deletions(-)
diff --git
a/traffic_portal/app/src/common/modules/table/parameters/table.parameters.tpl.html
b/traffic_portal/app/src/common/modules/table/parameters/table.parameters.tpl.html
index 624032f..6bb2e7e 100644
---
a/traffic_portal/app/src/common/modules/table/parameters/table.parameters.tpl.html
+++
b/traffic_portal/app/src/common/modules/table/parameters/table.parameters.tpl.html
@@ -23,7 +23,7 @@ under the License.
<li class="active">Parameters</li>
</ol>
<div class="pull-right">
- <button class="btn btn-primary" title="Create Parameter"
ng-click="createParameter()"><i class="fa fa-plus"></i></button>
+ <button class="btn btn-primary" name="createParameterButton"
title="Create Parameter" ng-click="createParameter()"><i class="fa
fa-plus"></i></button>
<button class="btn btn-default" title="Refresh"
ng-click="refresh()"><i class="fa fa-refresh"></i></button>
<div id="toggleColumns" class="btn-group" role="group"
title="Select Table Columns" uib-dropdown is-open="columnSettings.isopen">
<button type="button" class="btn btn-default dropdown-toggle"
uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
diff --git a/traffic_portal/test/integration/Data/parameters.ts
b/traffic_portal/test/integration/Data/parameters.ts
index 13904c9..0316d2b 100644
--- a/traffic_portal/test/integration/Data/parameters.ts
+++ b/traffic_portal/test/integration/Data/parameters.ts
@@ -61,6 +61,22 @@ export const parameters = {
password: "pa$$word"
}
],
+ check: [
+ {
+ description: "check CSV link from
Parameter page",
+ Name: "Export as CSV"
+ }
+ ],
+ toggle:[
+ {
+ description: "hide first table column",
+ Name: "Config File"
+ },
+ {
+ description: "redisplay first table
column",
+ Name: "Config File"
+ }
+ ],
add: [
{
description: "create a Parameters",
@@ -95,6 +111,22 @@ export const parameters = {
password: "pa$$word"
}
],
+ check: [
+ {
+ description: "check CSV link from
Parameter page",
+ Name: "Export as CSV"
+ }
+ ],
+ toggle:[
+ {
+ description: "hide first table column",
+ Name: "Config File"
+ },
+ {
+ description: "redisplay first table
column",
+ Name: "Config File"
+ }
+ ],
add: [
{
description: "create a Parameters",
@@ -129,6 +161,22 @@ export const parameters = {
password: "pa$$word"
}
],
+ check: [
+ {
+ description: "check CSV link from
Parameter page",
+ Name: "Export as CSV"
+ }
+ ],
+ toggle:[
+ {
+ description: "hide first table column",
+ Name: "Config File"
+ },
+ {
+ description: "redisplay first table
column",
+ Name: "Config File"
+ }
+ ],
add: [
{
description: "create a Parameters",
diff --git a/traffic_portal/test/integration/PageObjects/ParametersPage.po.ts
b/traffic_portal/test/integration/PageObjects/ParametersPage.po.ts
index 0c217cf..1a5855c 100644
--- a/traffic_portal/test/integration/PageObjects/ParametersPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/ParametersPage.po.ts
@@ -17,7 +17,6 @@
* under the License.
*/
import { by, element } from 'protractor';
-
import { randomize } from "../config";
import { BasePage } from './BasePage.po';
import { SideNavigationPage } from './SideNavigationPage.po';
@@ -27,7 +26,7 @@ interface DeleteParameter {
validationMessage?: string;
}
-interface Parameter extends DeleteParameter{
+interface Parameter extends DeleteParameter {
ConfigFile: string;
Secure: string;
Value: string;
@@ -41,31 +40,31 @@ interface UpdateParameter {
export class ParametersPage extends BasePage {
- private btnCreateNewParameter = element(by.xpath("//button[@title='Create
Parameter']"));
+ private btnCreateNewParameter = element(by.name('createParameterButton'));
private txtName = element(by.name('name'));
private txtConfigFile = element(by.name('configFile'));
private txtValue = element((by.name("value")));
private txtSecure = element(by.name('secure'));
-
private txtSearch =
element(by.id('parametersTable_filter')).element(by.css('label input'));
private btnDelete = element(by.buttonText('Delete'));
private btnYes = element(by.buttonText('Yes'));
private txtConfirmName = element(by.name('confirmWithNameInput'));
+ private btnTableColumn = element(by.className("caret"))
private randomize = randomize;
- async OpenParametersPage() {
- let snp = new SideNavigationPage();
+ public async OpenParametersPage() {
+ const snp = new SideNavigationPage();
await snp.NavigateToParametersPage();
}
- async OpenConfigureMenu() {
- let snp = new SideNavigationPage();
+ public async OpenConfigureMenu() {
+ const snp = new SideNavigationPage();
await snp.ClickConfigureMenu();
}
public async CreateParameter(parameter: Parameter): Promise<boolean> {
let result = false;
- let basePage = new BasePage();
+ const basePage = new BasePage();
await this.btnCreateNewParameter.click();
await this.txtName.sendKeys(parameter.Name + this.randomize);
await this.txtConfigFile.sendKeys(parameter.ConfigFile);
@@ -82,7 +81,7 @@ export class ParametersPage extends BasePage {
return result;
}
- async SearchParameter(nameParameter: string) {
+ public async SearchParameter(nameParameter: string) {
let name = nameParameter + this.randomize;
await this.txtSearch.clear();
await this.txtSearch.sendKeys(name);
@@ -93,8 +92,8 @@ export class ParametersPage extends BasePage {
}).first().click();
}
- public async UpdateParameter(parameter: UpdateParameter): Promise<boolean |
undefined> {
- let basePage = new BasePage();
+ public async UpdateParameter(parameter: UpdateParameter): Promise<boolean> {
+ const basePage = new BasePage();
switch (parameter.description) {
case "update parameter configfile":
await this.txtConfigFile.clear();
@@ -103,14 +102,14 @@ export class ParametersPage extends BasePage {
await this.btnYes.click();
break;
default:
- return undefined;
+ return false;
}
return await basePage.GetOutputMessage().then(value =>
parameter.validationMessage === value);
}
async DeleteParameter(parameter: DeleteParameter): Promise<boolean> {
let result = false;
- let basePage = new BasePage();
+ const basePage = new BasePage();
await this.btnDelete.click();
await this.btnYes.click();
await this.txtConfirmName.sendKeys(parameter.Name + this.randomize);
@@ -124,4 +123,16 @@ export class ParametersPage extends BasePage {
})
return result;
}
+
+ public async CheckCSV(name: string): Promise<boolean> {
+ return element(by.cssContainingText("span", name)).isPresent();
+ }
+
+ 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/Parameters.spec.ts
b/traffic_portal/test/integration/specs/Parameters.spec.ts
index 1976b65..95b8c59 100644
--- a/traffic_portal/test/integration/specs/Parameters.spec.ts
+++ b/traffic_portal/test/integration/specs/Parameters.spec.ts
@@ -48,6 +48,24 @@ parameters.tests.forEach(async parametersData => {
await parametersPage.OpenConfigureMenu();
await parametersPage.OpenParametersPage();
});
+ parametersData.check.forEach(check => {
+ it(check.description, async () => {
+ expect(await
parametersPage.CheckCSV(check.Name)).toBe(true);
+ await parametersPage.OpenParametersPage();
+ });
+ });
+ parametersData.toggle.forEach(toggle => {
+ it(toggle.description, async () => {
+ if(toggle.description.includes('hide')){
+ expect(await
parametersPage.ToggleTableColumn(toggle.Name)).toBe(false);
+ await parametersPage.OpenParametersPage();
+ }else{
+ expect(await
parametersPage.ToggleTableColumn(toggle.Name)).toBe(true);
+ await parametersPage.OpenParametersPage();
+ }
+
+ });
+ })
parametersData.add.forEach(add => {
it(add.description, async () => {
expect(await
parametersPage.CreateParameter(add)).toBeTruthy();