Browse Source

Desktop, Calendar View and Gantt View tests (#3652)

* 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.js
version-14
Ameya Shenoy 8 years ago
committed by Rushabh Mehta
parent
commit
9d9933491d
6 changed files with 292 additions and 10 deletions
  1. +3
    -0
      frappe/public/js/frappe/ui/toolbar/awesome_bar.js
  2. +94
    -0
      frappe/tests/ui/test_calendar_view.js
  3. +64
    -0
      frappe/tests/ui/test_desktop.js
  4. +53
    -0
      frappe/tests/ui/test_gantt_view.js
  5. +65
    -1
      frappe/tests/ui/test_lib.js
  6. +13
    -9
      frappe/tests/ui/test_list.js

+ 3
- 0
frappe/public/js/frappe/ui/toolbar/awesome_bar.js View File

@@ -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, ' ');


+ 94
- 0
frappe/tests/ui/test_calendar_view.js View File

@@ -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()

]);
});

+ 64
- 0
frappe/tests/ui/test_desktop.js View File

@@ -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()
]);
});

+ 53
- 0
frappe/tests/ui/test_gantt_view.js View File

@@ -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()
]);
});

+ 65
- 1
frappe/tests/ui/test_lib.js View File

@@ -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);
}
};
};

+ 13
- 9
frappe/tests/ui/test_list.js View File

@@ -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();
});
});
});

Loading…
Cancel
Save