[UI Test] Buying - Create Purchase receipt (#10421)

* Create purchase receipt after submitting the purchase order

* Checks quantity and rate in stock ledger
diff --git a/erpnext/buying/doctype/purchase_order/tests/test_purchase_order_receipt.js b/erpnext/buying/doctype/purchase_order/tests/test_purchase_order_receipt.js
new file mode 100644
index 0000000..654586a
--- /dev/null
+++ b/erpnext/buying/doctype/purchase_order/tests/test_purchase_order_receipt.js
@@ -0,0 +1,77 @@
+QUnit.module('Buying');
+
+QUnit.test("test: purchase order receipt", function(assert) {
+	assert.expect(5);
+	let done = assert.async();
+
+	frappe.run_serially([
+		() => {
+			return frappe.tests.make('Purchase Order', [
+				{supplier: 'Test Supplier'},
+				{company: 'Wind Power LLC'},
+				{is_subcontracted: 'No'},
+				{buying_price_list: 'Test-Buying-USD'},
+				{currency: 'USD'},
+				{items: [
+					[
+						{"item_code": 'Test Product 1'},
+						{"schedule_date": frappe.datetime.add_days(frappe.datetime.now_date(), 1)},
+						{"expected_delivery_date": frappe.datetime.add_days(frappe.datetime.now_date(), 5)},
+						{"qty": 5},
+						{"uom": 'Unit'},
+						{"rate": 100},
+						{"warehouse": 'Stores - WP'}
+					]
+				]},
+			]);
+		},
+
+		() => {
+
+			// Check supplier and item details
+			assert.ok(cur_frm.doc.supplier_name == 'Test Supplier', "Supplier name correct");
+			assert.ok(cur_frm.doc.items[0].item_name == 'Test Product 1', "Item name correct");
+			assert.ok(cur_frm.doc.items[0].description == 'Test Product 1', "Description correct");
+			assert.ok(cur_frm.doc.items[0].qty == 5, "Quantity correct");
+
+		},
+
+		() => frappe.timeout(1),
+
+		() => frappe.tests.click_button('Submit'),
+		() => frappe.tests.click_button('Yes'),
+
+		() => frappe.timeout(1.5),
+		() => frappe.click_button('Close'),
+		() => frappe.timeout(0.3),
+
+		// Make Purchase Receipt
+		() => frappe.click_button('Make'),
+		() => frappe.timeout(0.3),
+
+		() => frappe.click_link('Receipt'),
+		() => frappe.timeout(2),
+
+		() => cur_frm.save(),
+
+		// Save and submit Purchase Receipt
+		() => frappe.timeout(1),
+		() => frappe.tests.click_button('Submit'),
+		() => frappe.tests.click_button('Yes'),
+		() => frappe.timeout(1),
+
+		// View Purchase order in Stock Ledger
+		() => frappe.click_button('View'),
+		() => frappe.timeout(0.3),
+
+		() => frappe.click_link('Stock Ledger'),
+		() => frappe.timeout(2),
+		() => {
+			assert.ok($('div.slick-cell.l2.r2 > a').text().includes('Test Product 1')
+				&& $('div.slick-cell.l9.r9 > div').text().includes(5)
+				&& $('div.slick-cell.l12.r12 > div').text().includes(100), "Stock ledger entry correct");
+		},
+
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index eac65a6..2e71285 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -94,4 +94,5 @@
 erpnext/buying/doctype/purchase_order/tests/test_purchase_order_get_items.js
 erpnext/buying/doctype/purchase_order/tests/test_purchase_order_with_discount_on_grand_total.js
 erpnext/buying/doctype/purchase_order/tests/test_purchase_order_with_item_wise_discount.js
-erpnext/buying/doctype/purchase_order/tests/test_purchase_order_with_taxes_and_charges.js
\ No newline at end of file
+erpnext/buying/doctype/purchase_order/tests/test_purchase_order_with_taxes_and_charges.js
+erpnext/buying/doctype/purchase_order/tests/test_purchase_order_receipt.js
\ No newline at end of file