예제 #1
0
from selenium.webdriver.common.by import By
from ui_tests.ui_mixins import NavbarMixin
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


class AppearnceTestBrowser(NavbarMixin, BaseBrowser):
    pass


browser = setup_pytest_browser_fixture(AppearnceTestBrowser)


def test_viewport_info_used_for_responsive_css(browser):
    # she sees the sign up button
    browser.set_window_size(1200, 800)
    browser.get_slow_loading_clickable(By.CSS_SELECTOR,  'button.navbar-buttons__user-signup-btn')
    # she resizes her screen to be smaller
    browser.set_window_size(10, 10)
    # she does not see the signup button
    browser.assert_is_not_visible(By.CSS_SELECTOR, 'button.navbar-buttons__user-signup-btn')
예제 #2
0
import pytest
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


# sometimes this fixture will be overridden with new browser using
# BaseBrowser + Mixins
browser = setup_pytest_browser_fixture(BaseBrowser)


@pytest.yield_fixture()
def normal_user(django_user_model):
    user = django_user_model.objects.create(username='******')
    user.set_password('password')
    user.save()
    yield user
    # do i need this? maybe if we don't kill db between tests?
    user.delete()
예제 #3
0
from selenium.webdriver.common.keys import Keys

from ui_mixins import NavigationMixin, NavbarMixin
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


class MenuPageBrowser(NavigationMixin, NavbarMixin, BaseBrowser):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.from_intro_page_select_menu('Demo Menu 0')


browser = setup_pytest_browser_fixture(MenuPageBrowser)


def test_has_menu_name_in_navbar(browser):
    navbar_title = browser.get_navbar_title_btn()
    assert navbar_title.text == 'Demo Menu 0'


def test_has_menu_image(browser):
    image = browser.find_element_by_tag_name('img')
    assert image.get_attribute('alt') == 'menu image'


def test_has_chef_name_and_description(browser):
    assert 'cuckoo lis' in browser.body_text
    assert 'description 0' in browser.body_text


def test_has_correct_navigation_buttons(browser):
예제 #4
0
from ui_mixins import NavbarMixin
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


class UnknownUrlBrowser(NavbarMixin, BaseBrowser):
    pass


browser = setup_pytest_browser_fixture(UnknownUrlBrowser)


def test_future_links_routes_to_under_construction(browser):
    # alisa goes to a work-in-progress url
    browser.goto('/work-in-progress/')
    # under-construction page is shown
    assert 'This page is under construction' in browser.body_text
    assert 'iChef' in browser.body_text


def test_unknown_urls_routes_to_not_found(browser):
    # alisa randomly enters jibberish as url
    browser.goto('/random-url/')
    # not-found page is shown
    assert 'Nothing to see here' in browser.body_text
    assert 'iChef' in browser.body_text
예제 #5
0
from ui_mixins import AuthenticationMixin
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


class LoginPageBrowser(AuthenticationMixin, BaseBrowser):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.find_element_by_xpath('//button[text()="Log in"]').click()


browser = setup_pytest_browser_fixture(LoginPageBrowser)


def test_has_login_form(browser):
    # alisa goes to login page, sees a form
    login_form = browser.find_element_by_tag_name('form')

    # she's asked to enter her email and pw
    email_node = login_form.find_element_by_xpath(
        './/label[contains(., "Email address:")]')
    email_node.find_element_by_tag_name('input')
    pw_node = login_form.find_element_by_xpath(
        './/label[contains(., "Password:")]')
    pw_node.find_element_by_tag_name('input')

    # she also sees a link to reset pw
    login_form.find_element_by_link_text('Forgot password?')
예제 #6
0
import pytest
from browser_fixture import setup_pytest_browser_fixture

from constants import OFFLINE
from ui_mixins import NavigationMixin, NavbarMixin, PaypalMixin
from browser_fixture import BaseBrowser


class ResPageBrowser(PaypalMixin, NavigationMixin, NavbarMixin, BaseBrowser):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.from_intro_page_select_menu('Demo Menu 0')
        self.from_menu_page_fill_form_and_submit('3 ~ 4', '09122016')


browser = setup_pytest_browser_fixture(ResPageBrowser)


def test_ordered_menu_is_shown(browser):
    browser.assert_on_page('reservation')
    order_summary = {
        'Number of guests': '3 ~ 4',
        'Time': '09122016',
        'Menu': 'Demo Menu 0'
    }
    for label, content in order_summary.items():
        assert label in browser.body_text
        assert content in browser.body_text


def test_has_back_btn_to_menu_page(browser):
예제 #7
0
from selenium.webdriver.support.ui import Select

from ui_mixins import OrderAttributesMixin, NavigationMixin, NavbarMixin, MenuListMixin
from browser_fixture import BaseBrowser, setup_pytest_browser_fixture


class IntroPageBrowser(NavigationMixin, MenuListMixin, NavbarMixin, OrderAttributesMixin, BaseBrowser):
    pass


browser = setup_pytest_browser_fixture(IntroPageBrowser)


def test_links_to_menu_details(browser):
    link_menu_details = browser.find_elements_by_class_name('menu-list__item-div')
    assert len(link_menu_details) == 2
    assert 'Demo Menu 0' in link_menu_details[0].text
    assert 'Demo Menu 1' in link_menu_details[1].text


def test_displays_menus_that_go_to_menu_page(browser):
    # click on first menu detail link
    browser.click_on_nth_menu(0)
    assert 'Demo Menu 0' in browser.body_text
    assert '/menus/0' in browser.current_url
    browser.back()
    # click on second menu detail link
    browser.click_on_nth_menu(1)
    assert 'Demo Menu 1' in browser.body_text

예제 #8
0
import pytest
from browser_fixture import setup_pytest_browser_fixture

from constants import OFFLINE
from ui_mixins import NavigationMixin, NavbarMixin, PaypalMixin
from browser_fixture import BaseBrowser


class ResPageBrowser(PaypalMixin, NavigationMixin, NavbarMixin, BaseBrowser):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.from_intro_page_select_menu('Demo Menu 0')
        self.from_menu_page_fill_form_and_submit('3 ~ 4', '09122016')


browser = setup_pytest_browser_fixture(ResPageBrowser)


def test_ordered_menu_is_shown(browser):
    browser.assert_on_page('reservation')
    order_summary = {
        'Number of guests': '3 ~ 4',
        'Time': '09122016',
        'Menu': 'Demo Menu 0'}
    for label, content in order_summary.items():
        assert label in browser.body_text
        assert content in browser.body_text


def test_has_back_btn_to_menu_page(browser):
    browser.find_element_by_xpath('//a/button[text()="Back"]').click()