diff --git a/Pages/Accounting b/Pages/Accounting
index 1bedff0..325774f 100644
--- a/Pages/Accounting
+++ b/Pages/Accounting
@@ -235,6 +235,16 @@
             return text == message;
         })).toBe(true);
     },
+    verifyNoteForJournalEntryIs: function (note){
+        expect($$("md-card .mat-list-text h3").filter(function(elem, index) {
+            return elem.getText().then(function(text) {
+                return text === "Note";
+            });
+        }).first().element(by.xpath("..")).$("p").getText().then(function(text){
+            console.log(text);
+            return text == note;
+        })).toBe(true);
+    },
     //tasks for accounts
     clickButtonToExecuteAction: function(action){
         $$(".mat-raised-button.mat-accent span").filter(function(elem, index) {
diff --git a/Pages/Payroll.js b/Pages/Payroll.js
index 5962a41..5509a4a 100644
--- a/Pages/Payroll.js
+++ b/Pages/Payroll.js
@@ -147,4 +147,34 @@
         browser.wait(EC.elementToBeClickable(salaryInput.get(paymentNumber-1)), 5000);
         salaryInput.get(paymentNumber-1).click().clear().sendKeys(text);
     },
+    verifyMemberIDForPaymentInRow: function(memberID, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        browser.sleep(1000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(0).getText()).toEqual(memberID);
+    },
+    verifyEmployerForPaymentInRow: function(employer, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(1).getText()).toEqual(employer);
+    },
+    verifySalaryForPaymentInRow: function(salary, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(2).getText()).toEqual(salary);
+    },
+    verifyCreatedByForPayrollInRow: function(createdBy, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(0).getText()).toEqual(createdBy);
+    },
+    verifyAccountNumberForPayrollInRow: function(accountNumber, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(2).getText()).toEqual(accountNumber);
+    },
+    verifyPayrollInfo: function(heading, value) {
+        expect($$(".md-list-item .mat-list-text").filter(function (elem, index) {
+            return elem.$("h3").getText().then(function (text) {
+                return text === heading;
+            }).$(p).getText().then(function (text) {
+                return text === value;
+            }).toBe(true);
+        }));
+    },
 };
\ No newline at end of file
