diff --git a/eform-client/e2e/Page objects/SettingsPage.ts b/eform-client/e2e/Page objects/SettingsPage.ts
index 8fe223860a..7d91d621e1 100644
--- a/eform-client/e2e/Page objects/SettingsPage.ts
+++ b/eform-client/e2e/Page objects/SettingsPage.ts
@@ -2,21 +2,44 @@ import {SiteInformation} from './SettingsPageObjects/SiteInformation';
import {SiteHeader} from './SettingsPageObjects/SiteHeader';
import {LoginPage} from './SettingsPageObjects/LoginPage';
import {SMTPInformation} from './SettingsPageObjects/SMTPInformation';
-import {by, ElementFinder, element, $} from 'protractor';
+import {by, ElementFinder, element, $, browser, protractor} from 'protractor';
import {By} from '@angular/platform-browser';
export class SettingsPage {
+ // 4 general sections on Settings page
public LoginPage: LoginPage;
public SiteHeader: SiteHeader;
public SiteInformation: SiteInformation;
public SMTPInformation: SMTPInformation;
+ // matchers
public headerImageMatcher: By;
+ public mainTextHeaderMatcher: By;
+ public secondaryTextHeaderMatcher: By;
+ // elements
public saveButton: ElementFinder;
+ public headerMainText: ElementFinder;
+ public headerSecondaryText: ElementFinder;
+
+ // helper functions
+ public saveAndRefresh(): void {
+ this.saveButton.click();
+ browser.wait(protractor.ExpectedConditions.elementToBeClickable(this.saveButton))
+ browser.refresh();
+ browser.waitForAngular();
+ }
constructor() {
+ // parts of settings
+ this.SiteHeader = new SiteHeader();
+ // matchers
this.headerImageMatcher = by.xpath('//*[@id="header_full_top"]/div/div/div[1]/img');
+ this.secondaryTextHeaderMatcher = by.css('#secondary-header-text');
+ this.mainTextHeaderMatcher = by.css('#main-header-text');
+ // elements
this.saveButton = $('button.btn-ar.btn-danger');
- this.SiteHeader = new SiteHeader();
+ this.headerMainText = element(this.mainTextHeaderMatcher);
+ this.headerSecondaryText = element(this.secondaryTextHeaderMatcher);
+
}
}
diff --git a/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts b/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts
index da7f523851..698f38b0d7 100644
--- a/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts
+++ b/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts
@@ -1,13 +1,27 @@
-import {by, element, ElementFinder} from 'protractor';
+import {$, browser, by, element, ElementFinder} from 'protractor';
export class SiteHeader {
public resetButton: ElementFinder;
- public logoButton: ElementFinder;
+ public headerImageHideButton: ElementFinder;
+ public mainTextInput: ElementFinder;
+ public secondaryTextInput: ElementFinder;
+ public hideMainTextButton: ElementFinder;
+ public hideSecondaryTextButton: ElementFinder;
+ public secondaryTextHeader: ElementFinder;
+
+ public resetAndRefresh(): void {
+ browser.sleep(2000);
+ this.resetButton.click();
+ browser.refresh();
+ browser.waitForAngularEnabled();
+ }
constructor() {
- this.logoButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admi' +
- 'n-settings/div/div/form/div[1]/div/div[2]/div/table/tbody/tr[3]/td[2]/div/div[3]/span'));
- this.resetButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admin-settings/div/div/form/' +
- 'div[1]/div/div[2]/div/div/div/div[2]/button'));
+ this.headerImageHideButton = $('#imageSiteHeaderHide');
+ this.resetButton = $('#siteHeaderReset');
+ this.mainTextInput = $('#headerSettingsMainText');
+ this.secondaryTextInput = $('#headerSettingsSecondaryText');
+ this.hideMainTextButton = $('#mainTextSiteHeaderHide');
+ this.hideSecondaryTextButton = $('#secondaryTextSiteHeaderHide');
}
}
diff --git a/eform-client/e2e/data.ts b/eform-client/e2e/data.ts
index ad70e48bde..40a99d74d0 100644
--- a/eform-client/e2e/data.ts
+++ b/eform-client/e2e/data.ts
@@ -1,4 +1,17 @@
export default {
- login: "admin",
- password: "Qq1234567$"
+ login: 'admin',
+ password: 'Qq1234567$',
+ SiteHeaderSettings: {
+ defaultSettings: {
+ headerMainText: 'Microting eForm',
+ headerSecondaryText: 'No more paper-forms and back-office data entry'
+ },
+ customSettings: {
+ mainTextSample: 'Sample main text',
+ secondaryTextSample: 'Sample secondary text'
+ }
+
+ }
+
};
+
diff --git a/eform-client/e2e/settings.site-header.e2e-spec.ts b/eform-client/e2e/settings.site-header.e2e-spec.ts
new file mode 100644
index 0000000000..7f7f09ec4a
--- /dev/null
+++ b/eform-client/e2e/settings.site-header.e2e-spec.ts
@@ -0,0 +1,120 @@
+///
+import {browser, by, element, ExpectedConditions, $} from 'protractor';
+import {default as data} from './data';
+import {SettingsPage} from './Page objects/SettingsPage';
+import {LoginPage} from './Page objects/LoginPage';
+import {MainPage} from './Page objects/MainPage';
+
+const loginPage: LoginPage = new LoginPage();
+const mainPage: MainPage = new MainPage();
+const settingsPage: SettingsPage = new SettingsPage();
+
+
+beforeAll((done) => {
+ browser.get('/');
+ loginPage.usernameInput.sendKeys(data.login);
+ loginPage.passwordInput.sendKeys(data.password);
+ loginPage.loginButton.click();
+ mainPage.advancedButton.click();
+ mainPage.settingsButton.click();
+ done();
+});
+
+describe('Reset button in Settings', function () {
+
+ beforeAll(function (done) {
+ settingsPage.SiteHeader.resetButton.click();
+ browser.refresh();
+ done();
+ });
+
+ it('should reset image', function (done) {
+
+ /*const isExit: Boolean = */
+ expect(browser.isElementPresent(settingsPage.headerImageMatcher))
+ .toBeTruthy();
+ /*if (isExit) {
+ browser.driver.close().then(function () {
+ process.exit(1);
+ });
+ }*/
+ done();
+ });
+ it('should reset header main text', function (done) {
+ /*const isExit: Boolean =*/
+ expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeTruthy();
+ expect(settingsPage.headerMainText.getText())
+ .toEqual(data.SiteHeaderSettings.defaultSettings.headerMainText);
+ /*if (isExit) {
+ browser.driver.close().then(function () {
+ process.exit(1);
+ });
+ }*/
+ done();
+ });
+ it('should reset header secondary text', function (done) {
+ /*const isExit: Boolean = */
+ expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeTruthy();
+ expect(settingsPage.headerSecondaryText.getText())
+ .toEqual(data.SiteHeaderSettings.defaultSettings.headerSecondaryText);
+ /*if (isExit) {
+ browser.driver.close().then(function () {
+ process.exit(1);
+ });
+ }*/
+ done();
+ });
+});
+
+describe('Settings in Site header section', () => {
+
+ afterEach((done) => {
+ settingsPage.SiteHeader.resetAndRefresh();
+ done();
+ });
+
+ it('should hide logo in header', (done) => {
+
+ expect(element(settingsPage.headerImageMatcher).isDisplayed()).toBeTruthy();
+ settingsPage.SiteHeader.headerImageHideButton.click();
+ settingsPage.saveAndRefresh();
+ expect(browser.isElementPresent(settingsPage.headerImageMatcher)).toBeFalsy();
+ done();
+ });
+
+ it('should change Main text in header', function (done) {
+ settingsPage.SiteHeader.mainTextInput.clear();
+ settingsPage.SiteHeader.mainTextInput.sendKeys(data.SiteHeaderSettings.customSettings.mainTextSample);
+ settingsPage.saveAndRefresh();
+ expect(settingsPage.headerMainText.getText())
+ .toEqual(data.SiteHeaderSettings.customSettings.mainTextSample);
+ done();
+ });
+
+ it('should change secondary text', function (done) {
+ settingsPage.SiteHeader.secondaryTextInput.clear();
+ settingsPage.SiteHeader.secondaryTextInput.sendKeys(data.SiteHeaderSettings.customSettings.secondaryTextSample);
+ settingsPage.saveAndRefresh();
+ expect(settingsPage.headerSecondaryText.getText()).toEqual(data.SiteHeaderSettings.customSettings.secondaryTextSample);
+ done();
+ });
+
+ it('should hide main text', function (done) {
+ settingsPage.SiteHeader.hideMainTextButton.click();
+ settingsPage.saveAndRefresh();
+ expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeFalsy();
+ done();
+ });
+
+ it('should hide secodary text', function (done) {
+ settingsPage.SiteHeader.hideSecondaryTextButton.click();
+ settingsPage.saveAndRefresh();
+ expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeFalsy();
+ done();
+ });
+
+ xit('should be able to change logo file', function () {
+ // Will be implemented soon
+ });
+
+});
diff --git a/eform-client/e2e/spec.e2e-spec.ts b/eform-client/e2e/spec.e2e-spec.ts
deleted file mode 100644
index 4bcce68fc0..0000000000
--- a/eform-client/e2e/spec.e2e-spec.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-///
-import {browser, by, element, ExpectedConditions, $} from 'protractor';
-import {default as data} from './data';
-import {SettingsPage} from './Page objects/SettingsPage';
-import {LoginPage} from './Page objects/LoginPage';
-import {MainPage} from './Page objects/MainPage';
-
-const loginPage: LoginPage = new LoginPage();
-const mainPage: MainPage = new MainPage();
-const settingsPage: SettingsPage = new SettingsPage();
-
-
-describe('Header image button', () => {
- it('should hide logo in header', (done) => {
-
- browser.get('/');
- loginPage.usernameInput.sendKeys(data.login);
- loginPage.passwordInput.sendKeys(data.password);
- loginPage.loginButton.click();
- mainPage.advancedButton.click();
- mainPage.settingsButton.click();
- expect(element(settingsPage.headerImageMatcher).isDisplayed()).toBeTruthy();
- settingsPage.SiteHeader.logoButton.click();
- settingsPage.saveButton.click();
- browser.refresh();
- expect(browser.isElementPresent(settingsPage.headerImageMatcher)).toBeFalsy();
- browser.sleep(2000);
- settingsPage.SiteHeader.resetButton.click();
- done();
- });
-});
diff --git a/eform-client/protractor.conf.js b/eform-client/protractor.conf.js
index 57a7711671..d89d7d8eb5 100644
--- a/eform-client/protractor.conf.js
+++ b/eform-client/protractor.conf.js
@@ -29,4 +29,5 @@ exports.config = {
onPrepare: function () {
jasmine.getEnv().addReporter(new SpecReporter());
}
+
};
diff --git a/eform-client/src/app/components/header/header.component.html b/eform-client/src/app/components/header/header.component.html
index beca42a8f5..3e1ce19fcc 100644
--- a/eform-client/src/app/components/header/header.component.html
+++ b/eform-client/src/app/components/header/header.component.html
@@ -9,9 +9,9 @@
diff --git a/eform-client/src/app/modules/cases/cases.module.ts b/eform-client/src/app/modules/cases/cases.module.ts
index 61387b2a6a..90840b0312 100644
--- a/eform-client/src/app/modules/cases/cases.module.ts
+++ b/eform-client/src/app/modules/cases/cases.module.ts
@@ -25,7 +25,7 @@ import {
ElementSignatureComponent,
TrumbowygComponent
} from './components/case-elements';
-import {CollapseModule} from 'ngx-bootstrap';
+import {CollapseModule, TooltipModule} from 'ngx-bootstrap';
import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal';
@NgModule({
@@ -35,7 +35,8 @@ import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal';
FormsModule,
CasesRoutingModule,
CollapseModule.forRoot(),
- Ng2Bs3ModalModule
+ Ng2Bs3ModalModule,
+ TooltipModule.forRoot(),
],
declarations: [CasesComponent,
TrumbowygComponent,
diff --git a/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html b/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html
index a63efdbabc..6819cc4cb5 100644
--- a/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html
+++ b/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html
@@ -26,7 +26,7 @@