Protractor tests.
diff --git a/Pages/Employees.js b/Pages/Employees.js
index 74b54c6..219d8b1 100644
--- a/Pages/Employees.js
+++ b/Pages/Employees.js
@@ -63,8 +63,9 @@
         createEmployee.click();
     },
     selectRoleByName: function(name){
-        roleSelection = $(".mat-select-trigger");
-        browser.wait(EC.elementToBeClickable(roleSelection), 2000);
+        browser.sleep();
+        roleSelection = $("md-select[formcontrolname='role'] .mat-select-trigger");
+        browser.wait(EC.elementToBeClickable(roleSelection), 3000);
         roleSelection.click();
         browser.wait(EC.visibilityOf($(".mat-option")), 5000);
         element(by.cssContainingText('.mat-option',name)).click();
diff --git a/Pages/Offices.js b/Pages/Offices.js
index d9dcc91..e424389 100644
--- a/Pages/Offices.js
+++ b/Pages/Offices.js
@@ -98,6 +98,10 @@
     enterTextIntoCashWithdrawalLimitInputField: function(text) {
         withdrawalLimitInput.click().clear().sendKeys(text);
     },
+    verifyCashWithdrawalLimitInputFieldHasError: function(text) {
+        expect(withdrawalLimitInput.getAttribute("class")).toMatch("ng-invalid");
+        expect(withdrawalLimitInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("md-error").getText()).toEqual(text);
+    },
     enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry: function(text) {
         tellerAccountInput.click().clear().sendKeys(text);
         browser.wait(EC.visibilityOf($(".mat-option")), 5000);
@@ -108,11 +112,25 @@
         browser.wait(EC.visibilityOf($(".mat-option")), 5000);
         $$(".mat-option").first().click();
     },
+    enterTextIntoVaultAccountInputField: function(text) {
+        vaultAccountInput.click().clear().sendKeys(text);
+    },
+    verifyVaultAccountInputFieldHasError: function(text) {
+        expect(vaultAccountInput.getAttribute("class")).toMatch("ng-invalid");
+        expect(vaultAccountInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("md-error").getText()).toEqual(text);
+    },
     enterTextIntoChequesReceivableAccountInputFieldAndSelectMatchingEntry: function(text) {
         chequesReceivableAccountInput.click().clear().sendKeys(text);
         browser.wait(EC.visibilityOf($(".mat-option")), 5000);
         $$(".mat-option").first().click();
     },
+    enterTextIntoChequesReceivableAccountInputField: function(text) {
+        chequesReceivableAccountInput.click().clear().sendKeys(text);
+    },
+    verifyChequesReceivableAccountInputFieldHasError: function(text) {
+        expect(chequesReceivableAccountInput.getAttribute("class")).toMatch("ng-invalid");
+        expect(chequesReceivableAccountInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("md-error").getText()).toEqual(text);
+    },
     verifyRadioNoneSelected: function(){
         expect(radioNone.getAttribute('class')).toMatch("mat-radio-checked");
     },
@@ -143,6 +161,22 @@
             });
         }).click();
     },
+    verifyCreateTellerButtonIsDisabled: function(){
+        browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement());
+        expect(primaryButton.filter(function(elem, index) {
+            return elem.$("span").getText().then(function(text) {
+                return text === "CREATE TELLER";
+            });
+        }).first().isEnabled()).toBe(false);
+    },
+    verifyCreateTellerButtonIsEnabled: function(){
+        browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement());
+        expect(primaryButton.filter(function(elem, index) {
+            return elem.$("span").getText().then(function(text) {
+                return text === "CREATE TELLER";
+            });
+        }).first().isEnabled()).toBe(true);
+    },
     clickUpdateTellerButton: function(){
         browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement());
         primaryButton.filter(function(elem, index) {
diff --git a/Pages/Teller.js b/Pages/Teller.js
index 9d33e79..15444a3 100644
--- a/Pages/Teller.js
+++ b/Pages/Teller.js
@@ -3,8 +3,8 @@
 //Actions specific to the Teller section
 
 var EC = protractor.ExpectedConditions;
-var tellerNumberInput = $(".mat-input-infix input[formcontrolname='tellerCode']");
-var passwordInput = $(".mat-input-infix input[formcontrolname='password']");
+var tellerNumberInput = $("input[formcontrolname='tellerCode']");
+var passwordInput = $("input[formcontrolname='password']");
 var accountSelect =  $("md-select[formcontrolname='productInstance'] .mat-select-trigger");
 var amountInput = $("input[formcontrolname='amount']");
 var primaryButton = $$(".mat-raised-button.mat-primary");
@@ -36,6 +36,7 @@
         browser.sleep(2000);
     },
     clickButtonShowAtIndex: function(i){
+        browser.wait(EC.visibilityOf($$("button[title='SHOW']").get(i)), 5000);
         $$("button[title='SHOW']").get(i).click();
     },
     verifyCardTitleHasNameOfCustomer: function (text) {
@@ -80,7 +81,7 @@
     clickOnCashWithdrawalForCustomer: function(customerAccount){
         link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=CWDL";
         a = $('a[href= "' + link +'"]');
-        browser.wait(EC.elementToBeClickable(a), 3000);
+        browser.wait(EC.elementToBeClickable(a), 5000);
         a.click();
         browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000);
     },
diff --git a/Specs/cheque_management.js b/Specs/cheque_management.js
index d048670..5cbe60c 100644
--- a/Specs/cheque_management.js
+++ b/Specs/cheque_management.js
@@ -204,7 +204,6 @@
         Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed");
     });
     it('customer should be able to cash cheque - cheque is not open/not on us', function () {
-        //action not immediately available although account has been opened
         Teller.clickOnCashChequeForCustomer(customerAccount);
         Cheques.enterTextIntoChequeNumberInputField("123456");
         Cheques.enterTextIntoBranchSortCodeInputField(branchSortCode);
diff --git a/Specs/teller_management.js b/Specs/teller_management.js
index 9d898bb..1135e50 100644
--- a/Specs/teller_management.js
+++ b/Specs/teller_management.js
@@ -256,11 +256,12 @@
         Offices.enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry("7353");
         Offices.clickUpdateTellerButton();
         Common.verifyMessagePopupIsDisplayed("Teller is going to be saved");
-        Offices.verifyTellerStatusIs("OPEN");
+        //when does teller status change from OPEN to ACTIVE?
+        Offices.verifyTellerStatusIs("ACTIVE");
         Offices.verifyCashWithdrawalLimitIs("500");
         Offices.verifyTellerAccountIs("7353");
-        browser.pause();
-        Offices.verifyLastModifiedByForTellerIs(employeeIdentifier);
+        //bug, "Last modified by" not updated immediately
+        //Offices.verifyLastModifiedByForTellerIs(employeeIdentifier);
         //teller balance empty since account now different; find way to check this
     });
     it('teller should have updated as expected', function () {
@@ -271,6 +272,9 @@
         //password has been updated
         Teller.enterTextIntoPasswordInputField("123abc!!");
         Teller.clickEnabledUnlockTellerButton();
+        Teller.enterTextIntoSearchInputField(customerAccount);
+        Teller.clickButtonShowAtIndex(0);
+        Teller.verifyCardTitleHasNameOfCustomer("Samuel Beckett");
         //cash withdrawal limit has been updated
         Teller.clickOnCashWithdrawalForCustomer(customerAccount);
         Teller.selectAccountToBeAffected(customerAccount + ".9100.00001(" + depositIdentifier +")");
@@ -283,9 +287,42 @@
         Teller.clickEnabledConfirmTransactionButton();
         Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed");
         //verify money has been taken out of account 7353
+        Accounting.goToAccountingViaSidePanel();
+        Accounting.goToJournalEntries();
+        Accounting.enterTextIntoSearchAccountInputField("7353");
+        Accounting.clickSearchButton();
+        Accounting.verifyFirstJournalEntry("Cash withdrawal", "Amount: 500.00");
+        Accounting.verifyAccountHasBeenCreditedWithAmountInRow("7353", "500.00", 2);
+        browser.pause();
+    });
+    it('should create a new teller - validation', function () {
+        Offices.goToManageOfficesViaSidePanel();
+        Offices.goToManageTellersForOfficeByIdentifier("hqo1");
+        Offices.clickCreateTellerForOfficeByIdentifier("hqo1");
+        Offices.enterTextIntoTellerNumberInputField("teller_hqo1");
+        Offices.enterTextIntoPasswordInputField("hqo1_abc");
+        Offices.enterTextIntoCashWithdrawalLimitInputField("0");
+        Offices.enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry(tellerAccount);
+        Offices.enterTextIntoVaultAccountInputFieldAndSelectMatchingEntry(vaultAccount);
+        Offices.enterTextIntoChequesReceivableAccountInputFieldAndSelectMatchingEntry(chequesReceivableAccount);
+        Offices.verifyCashWithdrawalLimitInputFieldHasError("Value must be greater than 0");
+        Offices.verifyCreateTellerButtonIsDisabled();
+        Offices.enterTextIntoCashWithdrawalLimitInputField("20");
+        Offices.verifyCreateTellerButtonIsEnabled();
+        Offices.enterTextIntoChequesReceivableAccountInputField("9999");
+        Offices.enterTextIntoVaultAccountInputField("8410");
+        Offices.verifyChequesReceivableAccountInputFieldHasError("Invalid account");
+        //vault account should have error but has not
+        Offices.verifyCreateTellerButtonIsDisabled();
+        Offices.enterTextIntoVaultAccountInputField(vaultAccount)
+        Offices.enterTextIntoChequesReceivableAccountInputField(chequesReceivableAccount);
+        Offices.clickCreateTellerButton();
+        Common.verifyMessagePopupIsDisplayed()
     });
     it('should not be able to assign the same employee to another teller', function () {
 
+
+
     });
     it('closing teller should unassign employee', function () {