Test for Process Payroll (#10447)

diff --git a/erpnext/hr/doctype/process_payroll/test_process_payroll.js b/erpnext/hr/doctype/process_payroll/test_process_payroll.js
new file mode 100644
index 0000000..7e23fb9
--- /dev/null
+++ b/erpnext/hr/doctype/process_payroll/test_process_payroll.js
@@ -0,0 +1,59 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Process Payroll [HR]", function (assert) {
+	assert.expect(5);
+	let done = assert.async();
+	let net_pay;
+
+	let check_amounts = (employee_name,net_amt,gross_amt) => {
+		frappe.run_serially([
+			// Retrieving the actual amount from salary slip
+			() => frappe.db.get_value('Salary Slip', {'employee_name': employee_name}, 'net_pay'),
+			(r)	=> {
+				net_pay=r.message.net_pay;
+			},
+			() => frappe.db.get_value('Salary Slip', {'employee_name': employee_name}, 'gross_pay'),
+
+			// Checking if amounts are correctly calculated
+			(r) => {
+				assert.ok(net_pay==net_amt,
+					'Net Pay is correctly calculated for '+employee_name);
+				assert.ok(r.message.gross_pay==gross_amt,
+					'Gross Pay is correctly calculated for '+employee_name);
+			},
+		]);
+	};
+	frappe.run_serially([
+
+		// Deleting the already generated Salary Slips for employees
+		() => frappe.set_route('List','Salary Slip'),
+		() => frappe.timeout(2),
+		() => { $('input.list-row-checkbox').click();},
+		() => frappe.click_button('Delete'),
+		() => frappe.click_button('Yes'),
+		() => frappe.timeout(2),
+		() => assert.ok(cur_list.data.length==0,"Salary Slips successfully deleted"),
+		() => frappe.timeout(3),
+
+
+		// Creating Process Payroll for specific company
+		() => frappe.set_route('Form','Process Payroll'),
+		() => {
+			cur_frm.set_value('company','Test Company'),
+			frappe.timeout(1),
+			cur_frm.set_value('payroll_frequency','Monthly'),
+			cur_frm.set_value('start_date','2017-08-01'),
+			frappe.timeout(1),
+			cur_frm.set_value('end_date','2017-08-31'),
+			cur_frm.set_value('cost_center','Main-TC'),
+			frappe.timeout(1),
+			frappe.click_button('Create Salary Slip');
+		},
+		() => frappe.timeout(3),
+		() => check_amounts('Test Employee 1','19200','24000'),
+		() => frappe.timeout(3),
+		() => check_amounts('Test Employee 3','23040','28800'),
+		() => frappe.timeout(4),
+		() => done()
+	]);
+});
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index d34bb4e..6bae3c5 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -67,6 +67,7 @@
 erpnext/schools/doctype/program/test_program.js
 erpnext/hr/doctype/salary_structure/test_salary_structure.js
 erpnext/hr/doctype/salary_slip/test_salary_slip.js
+erpnext/hr/doctype/process_payroll/test_process_payroll.js
 erpnext/hr/doctype/job_opening/test_job_opening.js
 erpnext/hr/doctype/job_applicant/test_job_applicant.js
 erpnext/hr/doctype/offer_letter/test_offer_letter.js