* verify desktop icon and links * added comments and fixed indentation * refactored test_desktop, added test_calendarView, added custom functions to test_lib * . * added a generic func to click dropdown items * codacy fixes * added comments, changed test_list to delete the todo created * Update test_lib.jsversion-14
@@ -43,6 +43,9 @@ frappe.search.AwesomeBar = Class.extend({ | |||
} | |||
}); | |||
// Added to aid UI testing of global search | |||
input.awesomplete = awesomplete; | |||
$input.on("input", function(e) { | |||
var value = e.target.value; | |||
var txt = value.trim().replace(/\s\s+/g, ' '); | |||
@@ -0,0 +1,94 @@ | |||
QUnit.module('views'); | |||
QUnit.test("Calendar View Tests", function(assert) { | |||
assert.expect(7); | |||
let done = assert.async(); | |||
let random_text = frappe.utils.get_random(10); | |||
let today = frappe.datetime.get_today()+" 16:20:35"; //arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion | |||
let visible_time = () => { | |||
// Method to return the start-time (hours) of the event visible | |||
return $('.fc-time').text().split('p')[0]; // 'p' because the arbitrary time is pm | |||
}; | |||
// let visible_hours = () => { | |||
// // Method to return the start-time (hours) of the event visible | |||
// return $('.fc-time').text().split(':')[0].replace(/\D+/g, ''); | |||
// }; | |||
// let visible_minutes = () => { | |||
// // Method to return the start-time (minutes) of the event visible | |||
// return $('.fc-time').text().split(':')[1].replace(/\D+/g, ''); | |||
// }; | |||
let event_title_text = () => { | |||
// Method to return the title of the event visible | |||
return $('.fc-title:visible').text(); | |||
}; | |||
frappe.run_serially([ | |||
// Create an event using the frappe API | |||
() => frappe.tests.make("Event", [ | |||
{subject: random_text}, | |||
{starts_on: today}, | |||
{event_type: 'Private'} | |||
]), | |||
// Goto Calendar view | |||
() => frappe.set_route(["List", "Event", "Calendar"]), | |||
// Check if event is created | |||
() => { | |||
// Check if the event exists and if its title matches with the one created | |||
assert.equal(event_title_text(), random_text); | |||
// Check if time of event created is correct | |||
// assert.equal(visible_hours(), 4); | |||
// assert.equal(visible_minutes(), 20); | |||
assert.equal(visible_time(), "4:20"); | |||
}, | |||
// Delete event | |||
// Goto Calendar view | |||
() => frappe.set_route(["List", "Event", "Calendar"]), | |||
() => frappe.timeout(0.3), | |||
// Open the event to be deleted | |||
() => frappe.tests.click_generic_text(random_text), | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Delete'), | |||
() => frappe.tests.click_page_head_item('Yes'), | |||
() => frappe.timeout(4), | |||
// Goto Calendar View | |||
() => frappe.set_route(["List", "Event", "Calendar"]), | |||
() => frappe.timeout(0.3), | |||
// Check if all menu items redirect to correct locations | |||
// Check if clicking on 'Import' redirects you to ["data-import-tool"] | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Import'), | |||
() => assert.deepEqual(["data-import-tool"], frappe.get_route()), | |||
() => window.history.back(), | |||
() => frappe.timeout(0.5), | |||
// Check if clicking on 'User Permissions Manager' redirects you to ["user-permissions"] | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('User Permissions Manager'), | |||
() => assert.deepEqual(["user-permissions"], frappe.get_route()), | |||
() => window.history.back(), | |||
() => frappe.timeout(0.5), | |||
// Check if clicking on 'Role Permissions Manager' redirects you to ["permission-manager"] | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Role Permissions Manager'), | |||
() => assert.deepEqual(["permission-manager"], frappe.get_route()), | |||
() => window.history.back(), | |||
() => frappe.timeout(0.5), | |||
// Check if clicking on 'Customize' redirects you to ["Form", "Customize Form"] | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Customize'), | |||
() => assert.deepEqual(["Form", "Customize Form"], frappe.get_route()), | |||
() => window.history.back(), | |||
() => frappe.timeout(0.5), | |||
// Check if event is deleted | |||
() => assert.equal(event_title_text(), ""), | |||
() => done() | |||
]); | |||
}); |
@@ -0,0 +1,64 @@ | |||
QUnit.module('views'); | |||
QUnit.test("Verification of navbar menu links", function(assert) { | |||
assert.expect(14); | |||
let done = assert.async(); | |||
let navbar_user_items = ['Set Desktop Icons', 'My Settings', 'Reload', 'View Website', 'Background Jobs', 'Logout']; | |||
let modal_and_heading = ['Documentation', 'About']; | |||
frappe.run_serially([ | |||
// Goto Desk using button click to check if its working | |||
() => frappe.tests.click_navbar_item('Home'), | |||
() => assert.deepEqual([""], frappe.get_route()), | |||
// Click username on the navbar (Adminisrator) and verify visibility of all elements | |||
() => frappe.tests.click_navbar_item('navbar_user'), | |||
() => navbar_user_items.forEach(function(navbar_user_item) { | |||
assert.ok(frappe.tests.is_visible(navbar_user_item)); | |||
}), | |||
// Click Help and verify visibility of all elements | |||
() => frappe.tests.click_navbar_item('Help'), | |||
() => modal_and_heading.forEach(function(modal) { | |||
assert.ok(frappe.tests.is_visible(modal)); | |||
}), | |||
// Goto Desk | |||
() => frappe.tests.click_navbar_item('Home'), | |||
() => frappe.timeout(0.3), | |||
// Click navbar-username and verify links of all menu items | |||
// Check if clicking on 'Set Desktop Icons' redirects you to the correct page | |||
() => frappe.tests.click_navbar_item('navbar_user'), | |||
() => frappe.tests.click_dropdown_item('Set Desktop Icons'), | |||
() => assert.deepEqual(["modules_setup"], frappe.get_route()), | |||
() => frappe.tests.click_navbar_item('Home'), | |||
// Check if clicking on 'My Settings' redirects you to the correct page | |||
() => frappe.tests.click_navbar_item('navbar_user'), | |||
() => frappe.tests.click_dropdown_item('My Settings'), | |||
() => assert.deepEqual(["Form", "User", "Administrator"], frappe.get_route()), | |||
() => frappe.tests.click_navbar_item('Home'), | |||
// Check if clicking on 'Background Jobs' redirects you to the correct page | |||
() => frappe.tests.click_navbar_item('navbar_user'), | |||
() => frappe.tests.click_dropdown_item('Background Jobs'), | |||
() => assert.deepEqual(["background_jobs"], frappe.get_route()), | |||
() => frappe.tests.click_navbar_item('Home'), | |||
// Click Help and check both modals | |||
// Check if clicking 'Documentation' opens the right modal | |||
() => frappe.tests.click_navbar_item('Help'), | |||
() => frappe.tests.click_dropdown_item('Documentation'), | |||
() => assert.ok(frappe.tests.is_visible('Documentation', 'span')), | |||
() => frappe.tests.click_generic_text('Close', 'button'), | |||
// Check if clicking 'About' opens the right modal | |||
() => frappe.tests.click_navbar_item('Help'), | |||
() => frappe.tests.click_dropdown_item('About'), | |||
() => assert.ok(frappe.tests.is_visible('Frappe Framework', 'div')), | |||
() => frappe.tests.click_generic_text('Close', 'button'), | |||
() => done() | |||
]); | |||
}); |
@@ -0,0 +1,53 @@ | |||
QUnit.module('views'); | |||
QUnit.test("Gantt View Tests", function(assert) { | |||
assert.expect(2); | |||
let done = assert.async(); | |||
let random_text = frappe.utils.get_random(10); | |||
let start_date = frappe.datetime.get_today()+" 16:20:35"; // arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion | |||
let end_date = frappe.datetime.get_today()+" 18:30:45"; //arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion | |||
let event_id = () => { | |||
// Method to acquire the ID of the event created. This is needed to redirect to the event page | |||
let event_label = $('.bar-label').text(); | |||
let init = event_label.indexOf('('); | |||
let fin = event_label.indexOf(')'); | |||
return (event_label.substr(init+1,fin-init-1)); | |||
}; | |||
let event_title_text = (text) => { | |||
// Method to check the name of the event created. This is needed to verify the creation and deletion of the event | |||
return $('#bar > g > g.bar-group > text:visible').text().includes(text); | |||
}; | |||
frappe.run_serially([ | |||
// Create an event using the Frapee API | |||
() => { | |||
return frappe.tests.make("Event", [ | |||
{subject: random_text}, | |||
{starts_on: start_date}, | |||
{ends_on: end_date}, | |||
{event_type: 'Private'} | |||
]); | |||
}, | |||
// Check if event is created | |||
() => frappe.set_route(["List", "Event", "Gantt"]), | |||
() => assert.ok( event_title_text(random_text) ), | |||
// Delete event | |||
() => frappe.set_route(["List", "Event", "Gantt"]), | |||
() => frappe.timeout(0.3), | |||
// Redirect to the event page to delete the event | |||
() => frappe.set_route(["Form", "Event", event_id()]), | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Delete'), | |||
() => frappe.tests.click_page_head_item('Yes'), | |||
() => frappe.timeout(0.3), | |||
() => frappe.set_route(["List", "Event", "Gantt"]), | |||
() => frappe.timeout(0.3), | |||
// Check if event is deleted | |||
() => assert.ok( event_title_text("") ), | |||
() => done() | |||
]); | |||
}); |
@@ -90,6 +90,70 @@ frappe.tests = { | |||
return frappe.run_serially(tasks); | |||
}); | |||
}, | |||
click_page_head_item: (text) => { | |||
// Method to items present on the page header like New, Save, Delete etc. | |||
let possible_texts = ["New", "Delete", "Save", "Yes"]; | |||
return frappe.run_serially([ | |||
() => { | |||
if (text == "Menu"){ | |||
$("span.menu-btn-group-label:contains('Menu'):visible").click(); | |||
} else if (text == "Refresh") { | |||
$(".btn-secondary:contains('Refresh'):visible").click(); | |||
} else if (possible_texts.includes(text)) { | |||
$(".btn-primary:contains("+text+"):visible").click(); | |||
} | |||
}, | |||
() => frappe.timeout(0.3) | |||
]); | |||
}, | |||
click_dropdown_item: (text) => { | |||
// Method to click dropdown elements | |||
return frappe.run_serially([ | |||
() => { | |||
let li = $(".dropdown-menu li:contains("+text+"):visible").get(0); | |||
$(li).find('a')[0].click(); | |||
}, | |||
() => frappe.timeout(0.3) | |||
]); | |||
}, | |||
click_navbar_item: (text) => { | |||
// Method to click an elements present on the navbar | |||
return frappe.run_serially([ | |||
() => { | |||
if (text == "Help"){ | |||
$(".dropdown-help .dropdown-toggle:visible").click(); | |||
} | |||
else if (text == "navbar_user"){ | |||
$(".dropdown-navbar-user .dropdown-toggle:visible").click(); | |||
} | |||
else if (text == "Notification"){ | |||
$(".navbar-new-comments").click(); | |||
} | |||
else if (text == "Home"){ | |||
$(".navbar-home:contains('Home'):visible")[0].click(); | |||
} | |||
}, | |||
() => frappe.timeout(0.3) | |||
]); | |||
}, | |||
click_generic_text: (text, tag='a') => { | |||
// Method to click an element by its name | |||
return frappe.run_serially([ | |||
() => $(tag+":contains("+text+"):visible")[0].click(), | |||
() => frappe.timeout(0.3) | |||
]); | |||
}, | |||
click_desktop_icon: (text) => { | |||
// Method to click the desktop icons on the Desk, by their name | |||
return frappe.run_serially([ | |||
() => $("#icon-grid > div > div.app-icon[title="+text+"]").click(), | |||
() => frappe.timeout(0.3) | |||
]); | |||
}, | |||
is_visible: (text, tag='a') => { | |||
// Method to check the visibility of an element | |||
return $(tag+":contains("+text+")").is(':visible'); | |||
}, | |||
click_button: function(text) { | |||
$(`.btn:contains("${text}"):visible`).click(); | |||
return frappe.timeout(0.3); | |||
@@ -98,4 +162,4 @@ frappe.tests = { | |||
$(`a:contains("${text}"):visible`).click(); | |||
return frappe.timeout(0.3); | |||
} | |||
}; | |||
}; |
@@ -1,27 +1,31 @@ | |||
QUnit.module('views'); | |||
QUnit.test("test quick entry", function(assert) { | |||
QUnit.test("Test quick entry", function(assert) { | |||
assert.expect(2); | |||
let done = assert.async(); | |||
let random = frappe.utils.get_random(10); | |||
let random_text = frappe.utils.get_random(10); | |||
frappe.run_serially([ | |||
() => frappe.set_route('List', 'ToDo'), | |||
() => frappe.new_doc('ToDo'), | |||
() => frappe.quick_entry.dialog.set_value('description', random), | |||
() => frappe.quick_entry.dialog.set_value('description', random_text), | |||
() => frappe.quick_entry.insert(), | |||
(doc) => { | |||
assert.ok(doc && !doc.__islocal); | |||
return frappe.set_route('Form', 'ToDo', doc.name); | |||
}, | |||
() => { | |||
assert.ok(cur_frm.doc.description.includes(random)); | |||
return done(); | |||
} | |||
() => assert.ok(cur_frm.doc.description.includes(random_text)), | |||
// Delete the created ToDo | |||
() => frappe.tests.click_page_head_item('Menu'), | |||
() => frappe.tests.click_dropdown_item('Delete'), | |||
() => frappe.tests.click_page_head_item('Yes'), | |||
() => done() | |||
]); | |||
}); | |||
QUnit.test("test list values", function(assert) { | |||
QUnit.test("Test list values", function(assert) { | |||
assert.expect(2); | |||
let done = assert.async(); | |||
frappe.set_route('List', 'DocType') | |||
@@ -30,4 +34,4 @@ QUnit.test("test list values", function(assert) { | |||
assert.ok($('.list-item:visible').length > 10); | |||
done(); | |||
}); | |||
}); | |||
}); |