diff --git a/erpnext/hr/doctype/employee/test_employee.js b/erpnext/hr/doctype/employee/test_employee.js
index 64a6b7a..b7f5105 100644
--- a/erpnext/hr/doctype/employee/test_employee.js
+++ b/erpnext/hr/doctype/employee/test_employee.js
@@ -1,39 +1,40 @@
 QUnit.module('hr');
 
 QUnit.test("Test: Employee [HR]", function (assert) {
-	assert.expect(3);
+	assert.expect(4);
 	let done = assert.async();
-	let today_date = frappe.datetime.nowdate();
-
-	frappe.run_serially([
+	// let today_date = frappe.datetime.nowdate();
+	let employee_creation = (name,joining_date,birth_date) => {
+		frappe.run_serially([
 		// test employee creation
-		() => frappe.set_route("List", "Employee", "List"),
-		() => frappe.new_doc("Employee"),
-		() => frappe.timeout(1),
-		() => cur_frm.set_value("employee_name", "Test Employee 1"),
-		() => cur_frm.set_value("salutation", "Ms"),
-		() => cur_frm.set_value("company", "Test Company"),
-		() => cur_frm.set_value("date_of_joining", frappe.datetime.add_months(today_date, -2)),	// joined 2 month from now
-		() => cur_frm.set_value("date_of_birth", frappe.datetime.add_months(today_date, -240)),	// age is 20 years
-		() => cur_frm.set_value("employment_type", "Test Employment type"),
-		() => cur_frm.set_value("holiday_list", "Test Holiday list"),
-		() => cur_frm.set_value("branch", "Test Branch"),
-		() => cur_frm.set_value("department", "Test Department"),
-		() => cur_frm.set_value("designation", "Test Designation"),
-		() => frappe.click_button('Add Row'),
-		() => cur_frm.fields_dict.leave_approvers.grid.grid_rows[0].doc.leave_approver="Administrator",
-		// save data
-		() => cur_frm.save(),
-		() => frappe.timeout(1),
-		// check name of employee
-		() => assert.equal("Test Employee 1", cur_frm.doc.employee_name,
-			'name of employee correctly saved'),
-		// check auto filled gender according to salutation
-		() => assert.equal("Female", cur_frm.doc.gender,
-			'gender correctly saved as per salutation'),
-		// check auto filled retirement date [60 years from DOB]
-		() => assert.equal(frappe.datetime.add_months(today_date, 480), cur_frm.doc.date_of_retirement,	// 40 years from now
-			'retirement date correctly saved as per date of birth'),
+			() => {
+				frappe.tests.make('Employee', [
+					{ employee_name: name},
+					{ salutation: 'Mr'},
+					{ company: 'Test Company'},
+					{ date_of_joining: joining_date},
+					{ date_of_birth: birth_date},
+					{ employment_type: 'Test Employment Type'},
+					{ holiday_list: 'Test Holiday List'},
+					{ branch: 'Test Branch'},
+					{ department: 'Test Department'},
+					{ designation: 'Test Designation'}
+				]);
+			},
+			() => frappe.timeout(2),
+			() => {
+				assert.ok(cur_frm.get_field('employee_name').value==name,
+					'Name of an Employee is correctly set');
+				assert.ok(cur_frm.get_field('gender').value=='Male',
+					'Gender of an Employee is correctly set');
+			},
+		]);
+	};
+	frappe.run_serially([
+		() => employee_creation('Test Employee 1','2017-04-01','1992-02-02'),
+		() => frappe.timeout(6),
+		() => employee_creation('Test Employee 3','2017-04-01','1992-02-02'),
+		() => frappe.timeout(4),
 		() => done()
 	]);
 });
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js b/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
index a71ba0f..3ec8ac0 100644
--- a/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
+++ b/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
@@ -1,10 +1,10 @@
 QUnit.module('hr');
 
 QUnit.test("Test: Employee attendance tool [HR]", function (assert) {
-	assert.expect(3);
+	assert.expect(2);
 	let done = assert.async();
 	let today_date = frappe.datetime.nowdate();
-	let date_of_attendance = frappe.datetime.add_days(today_date, -1);	// previous day
+	let date_of_attendance = frappe.datetime.add_days(today_date, -2);	// previous day
 
 	frappe.run_serially([
 		// create employee
@@ -38,11 +38,9 @@
 		() => frappe.set_route("List", "Attendance", "List"),
 		() => frappe.timeout(1),
 		() => {
-			assert.deepEqual(["Test Employee 2", "Test Employee 1"], [cur_list.data[0].employee_name, cur_list.data[1].employee_name],
-				"marked attendance correctly saved for both employee");
 			let marked_attendance = cur_list.data.filter(d => d.attendance_date == date_of_attendance);
-			assert.equal(marked_attendance.length, 2,
-				'both the attendance are marked for correct date');
+			assert.equal(marked_attendance.length, 3,
+				'all the attendance are marked for correct date');
 		},
 		() => done()
 	]);
diff --git a/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js b/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
index e71ff6e..5133c0c 100644
--- a/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
+++ b/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
@@ -28,8 +28,8 @@
 		() => frappe.timeout(1),
 		() => {
 			let leave_allocated = cur_list.data.filter(d => d.leave_type == "Test Leave type");
-			assert.equal(2, leave_allocated.length,
-				'leave allocation successfully done for both the employee');
+			assert.equal(3, leave_allocated.length,
+				'leave allocation successfully done for all the employees');
 		},
 		() => done()
 	]);
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.js b/erpnext/hr/doctype/salary_slip/test_salary_slip.js
new file mode 100644
index 0000000..a49c973
--- /dev/null
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.js
@@ -0,0 +1,49 @@
+QUnit.test("test salary slip", function(assert) {
+	assert.expect(6);
+	let done = assert.async();
+	let employee_name;
+
+	let salary_slip = (ename) => {
+		frappe.run_serially([
+			() => frappe.db.get_value('Employee', {'employee_name': ename}, 'name'),
+			(r) => {
+				employee_name = r.message.name;
+			},
+			() => {
+				// Creating a salary slip for a employee
+				frappe.tests.make('Salary Slip', [
+					{ employee: employee_name}
+				]);
+			},
+			() => frappe.timeout(1),
+			() => {
+			// To check if all the calculations are correctly done
+				if(ename === 'Test Employee 1')
+				{
+					assert.ok(cur_frm.doc.gross_pay==24000,
+						'Gross amount for first employee is correctly calculated');
+					assert.ok(cur_frm.doc.total_deduction==4800,
+						'Deduction amount for first employee is correctly calculated');
+					assert.ok(cur_frm.doc.net_pay==19200,
+						'Net amount for first employee is correctly calculated');
+				}
+				if(ename === 'Test Employee 3')
+				{
+					assert.ok(cur_frm.doc.gross_pay==28800,
+						'Gross amount for second employee is correctly calculated');
+					assert.ok(cur_frm.doc.total_deduction==5760,
+						'Deduction amount for second employee is correctly calculated');
+					assert.ok(cur_frm.doc.net_pay==23040,
+						'Net amount for second employee is correctly calculated');
+				}
+			},
+		]);
+	};
+	frappe.run_serially([
+		() => salary_slip('Test Employee 1'),
+		() => frappe.timeout(6),
+		() => salary_slip('Test Employee 3'),
+		() => frappe.timeout(3),
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_structure/test_salary_structure.js b/erpnext/hr/doctype/salary_structure/test_salary_structure.js
new file mode 100644
index 0000000..0740357
--- /dev/null
+++ b/erpnext/hr/doctype/salary_structure/test_salary_structure.js
@@ -0,0 +1,81 @@
+QUnit.test("test Salary Structure", function(assert) {
+	assert.expect(6);
+	let done = assert.async();
+	let employee_name1;
+
+	let salary_structure = (ename1,ename2) => {
+		frappe.run_serially([
+			() => frappe.db.get_value('Employee', {'employee_name': ename1}, 'name'),
+			(r) => {
+				employee_name1 = r.message.name;
+			},
+			() => frappe.db.get_value('Employee', {'employee_name': ename2}, 'name'),
+			(r) => {
+			// Creating Salary Structure for employees);
+				frappe.tests.make('Salary Structure', [
+					{ company: 'Test Company'},
+					{ payroll_frequency: 'Monthly'},
+					{ employees: [
+						[
+							{employee: employee_name1},
+							{from_date: '2017-07-01'},
+							{base: 25000}
+						],
+						[
+							{employee: r.message.name},
+							{from_date: '2017-07-01'},
+							{base: 30000}
+						]
+					]},
+					{ earnings: [
+						[
+							{salary_component: 'Basic'},
+							{formula: 'base * .80'}
+						],
+						[
+							{salary_component: 'Leave Encashment'},
+							{formula: 'B * .20'}
+						]
+					]},
+					{ deductions: [
+						[
+							{salary_component: 'Income Tax'},
+							{formula: '(B+LE) * .20'}
+						]
+					]},
+					{ payment_account: 'CASH - TC'},
+				]);
+			},
+			() => frappe.timeout(9),
+			() => cur_dialog.set_value('value','Test Salary Structure'),
+			() => frappe.timeout(2),
+			() => frappe.click_button('Create'),
+			() => {
+			// To check if all the fields are correctly set
+				assert.ok(cur_frm.doc.employees[0].employee_name.includes('Test Employee 1') &&
+					cur_frm.doc.employees[1].employee_name.includes('Test Employee 3'),
+				'Employee names are correctly set');
+
+				assert.ok(cur_frm.doc.employees[0].base==25000,
+					'Base value for first employee is correctly set');
+
+				assert.ok(cur_frm.doc.employees[1].base==30000,
+					'Base value for second employee is correctly set');
+
+				assert.ok(cur_frm.doc.earnings[0].formula.includes('base * .80'),
+					'Formula for earnings as Basic is correctly set');
+
+				assert.ok(cur_frm.doc.earnings[1].formula.includes('B * .20'),
+					'Formula for earnings as Leave Encashment is correctly set');
+
+				assert.ok(cur_frm.doc.deductions[0].formula.includes('(B+LE) * .20'),
+					'Formula for deductions as Income Tax is correctly set');
+			},
+		]);
+	};
+	frappe.run_serially([
+		() => salary_structure('Test Employee 1','Test Employee 3'),
+		() => frappe.timeout(14),
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 86b6a3a..5d60ad1 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -64,6 +64,8 @@
 erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.js
 erpnext/schools/doctype/course/test_course.js
 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/schools/doctype/guardian/test_guardian.js
 erpnext/schools/doctype/student_admission/test_student_admission.js
 erpnext/schools/doctype/student_applicant/tests/test_student_applicant_dummy_data.js
