Bläddra i källkod

[fix] selenium tests

version-14
Anand Doshi 10 år sedan
förälder
incheckning
28115c0273
5 ändrade filer med 47 tillägg och 32 borttagningar
  1. +6
    -1
      .travis.yml
  2. +17
    -14
      frappe/public/js/frappe/views/module/moduleview.js
  3. +0
    -11
      frappe/tests/test_client_login.py
  4. +22
    -5
      frappe/utils/sel.py
  5. +2
    -1
      test_sites/test_site/site_config.json

+ 6
- 1
.travis.yml Visa fil

@@ -6,10 +6,15 @@ python:
services:
- mysql

before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"

install:
- sudo apt-get purge -y mysql-common
- wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
- sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis
- sudo pip install --upgrade pip
- sudo service redis-server start
- rm $TRAVIS_BUILD_DIR/.git/shallow
- cd ~/ && bench init frappe-bench --frappe-path $TRAVIS_BUILD_DIR
@@ -23,7 +28,7 @@ script:
- bench build-website
- bench serve &
- sleep 10
- bench --verbose run-tests
- bench --verbose run-tests --driver Firefox

before_script:
- mysql -e 'create database test_frappe'


+ 17
- 14
frappe/public/js/frappe/views/module/moduleview.js Visa fil

@@ -85,20 +85,23 @@ frappe.views.moduleview.ModuleView = Class.extend({
.appendTo(this.page.main);

$(this.sections[name]).find(".module-item").each(function(i, mi) {
$(mi).on("click", function(event) {
// if clicked on open notification!
if (event.target.classList.contains("open-notification")) {
var doctype = event.target.getAttribute("data-doctype");
frappe.route_options = frappe.boot.notification_info.conditions[doctype];
}
var item = data.items[$(mi).attr("data-item-index")];
if(item.type==="help") {
frappe.help.show_video(item.youtube_id);
return false;
} else {
frappe.set_route(me.get_route(item));
}
});
var item = data.items[$(mi).attr("data-item-index")];
$(mi)
.attr("data-route", me.get_route(item).join("/"))
.attr("data-label", item.name)
.on("click", function(event) {
// if clicked on open notification!
if (event.target.classList.contains("open-notification")) {
var doctype = event.target.getAttribute("data-doctype");
frappe.route_options = frappe.boot.notification_info.conditions[doctype];
}
if(item.type==="help") {
frappe.help.show_video(item.youtube_id);
return false;
} else {
frappe.set_route(me.get_route(item));
}
});
});
}



+ 0
- 11
frappe/tests/test_client_login.py Visa fil

@@ -9,15 +9,12 @@ selenium_tests = True

class TestLogin(unittest.TestCase):
def setUp(self):
return
sel.login()

def test_login(self):
return
self.assertEquals(sel._driver.current_url, sel.get_localhost() + "/desk")

def test_to_do(self):
return # does not pass in travis ??
sel.go_to_module("ToDo")
sel.primary_action()
sel.wait_for_page("Form/ToDo")
@@ -25,11 +22,3 @@ class TestLogin(unittest.TestCase):
sel.primary_action()
self.assertTrue(sel.wait_for_state("clean"))

# def test_material_request(self):
# sel.new_doc("Stock", "Material Request")
# sel.add_child("items")
# sel.set_field("item_code", "_Test Item")
# sel.set_field("schedule_date", "10-10-2014")
# sel.primary_action()
# sel.wait_for_state("clean")


+ 22
- 5
frappe/utils/sel.py Visa fil

@@ -59,7 +59,7 @@ def login(wait_for_id="#page-desktop"):
get(get_localhost() + "/login")
wait("#login_email")
set_input("#login_email", "Administrator")
set_input("#login_password", "admin" + Keys.RETURN)
set_input("#login_password", "admin", key=Keys.RETURN)
wait(wait_for_id)
logged_in = True

@@ -86,7 +86,7 @@ def go_to_module(module_name, item=None):
if item:
elem = find('[data-label="{0}"]'.format(item))[0]
elem.click()
page = unquote(elem.get_attribute("href").split("#", 1)[1])
page = elem.get_attribute("data-route")
wait_for_page(page)

def new_doc(module, doctype):
@@ -98,13 +98,19 @@ def add_child(fieldname):
find('[data-fieldname="{0}"] .grid-add-row'.format(fieldname))[0].click()
wait('[data-fieldname="{0}"] .form-grid'.format(fieldname))

def done_add_child(fieldname):
selector = '[data-fieldname="{0}"] .grid-row-open .btn-success'.format(fieldname)
scroll_to(selector)
wait_till_clickable(selector).click()

def find(selector, everywhere=False):
if cur_route and not everywhere:
selector = cur_route + " " + selector
return _driver.find_elements_by_css_selector(selector)

def set_field(fieldname, value, fieldtype="input"):
set_input('{0}[data-fieldname="{1}"]'.format(fieldtype, fieldname), value + Keys.TAB)
selector = '{0}[data-fieldname="{1}"]'.format(fieldtype, fieldname)
set_input(selector, value, key=Keys.TAB)
wait_for_ajax()

def set_select(fieldname, value):
@@ -113,7 +119,9 @@ def set_select(fieldname, value):
wait_for_ajax()

def primary_action():
wait_till_visible(".page-actions .primary-action").click()
selector = ".page-actions .primary-action"
scroll_to(selector)
wait_till_clickable(selector).click()
wait_for_ajax()

def wait_for_page(name):
@@ -152,13 +160,22 @@ def wait(selector, everywhere=False):
def get_wait():
return WebDriverWait(_driver, 20)

def set_input(selector, text):
def set_input(selector, text, key=None):
elem = find(selector)[0]
elem.clear()
elem.send_keys(text)
if key:
time.sleep(1)
elem.send_keys(key)
if input_wait:
time.sleep(input_wait)

def scroll_to(selector):
execute_script("frappe.ui.scroll('{0}')".format(selector))

def execute_script(js):
_driver.execute_script(js)

def close():
global _driver, pipe
if _driver:


+ 2
- 1
test_sites/test_site/site_config.json Visa fil

@@ -6,5 +6,6 @@
"mail_login": "test@example.com",
"mail_password": "test",
"admin_password": "admin",
"run_selenium_tests": 1
"run_selenium_tests": 1,
"host_name": "http://localhost:8000"
}

Laddar…
Avbryt
Spara