Beispiel #1
0
def test_edit_read_aloud_text(dm_wizard, encounter_all_sections, browser):
    """As a dm, I can add, edit and delete a read aloud text in an encounter and the data persists."""  # noqa
    print(
        'As a dm I can edit and delete a read aloud text in an encounter and the data persists '
    )  # noqa

    read_aloud_text = ReadAloudTextAddModal(browser)
    read_aloud_table = ReadAloudTextTable(browser)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, read_aloud_text.add_plus_icon_xpath)))

    read_aloud_text.add_plus_icon.click()
    stub = ReadAloudTextFactory.stub()

    read_aloud_text.name = stub.name
    read_aloud_text.description = stub.description
    read_aloud_text.add.click()

    read_aloud_edit = ReadAloudTextEditModal(browser)
    read_aloud_tabs = ReadAloudTextModalTabs(browser)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, read_aloud_table.name_xpath)))

    read_aloud_table.name.click()
    edit = browser.find_elements_by_xpath(read_aloud_tabs.edit_xpath)[1]
    time.sleep(1)
    edit.click()

    read_aloud_edit.name = stub.name
    read_aloud_edit.description = stub.description
    read_aloud_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, read_aloud_table.name_xpath)))

    before_refresh_name = read_aloud_table.name.text.strip()
    before_refresh_description = read_aloud_table.description.text.strip()

    browser.refresh()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, read_aloud_table.name_xpath)))

    after_refresh_name = read_aloud_table.name.text.strip()
    after_refresh_description = read_aloud_table.description.text.strip()

    assert before_refresh_name == after_refresh_name
    assert before_refresh_description == after_refresh_description

    read_aloud_text.remove.click()

    assert read_aloud_text.add_new_point.text.strip(
    ) == 'Add new text for your players.'
Beispiel #2
0
def test_proficiency_types(player_wizard, browser):  # noqa
    """As a player, I can mark a skill as none, half, proficient, or
       expertise and view these modifiers, and they are calculated
       correctly."""

    print(('As a player, I can mark a skill as none, half, proficient, or '
           'expertise and view these modifiers, and they are calculated '
           'correctly.'))

    skills_table = skills.SkillsTable(browser)
    skills_edit = skills.SkillsEditModal(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    acrobatics = ut.get_table_row(skills_table, 'table', values=False)
    none = acrobatics[0].find_element_by_tag_name('span').get_attribute(
        'class')
    acrobatics[0].click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, skills_edit.half_xpath)))
    skills_edit.half.click()
    skills_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    time.sleep(.4)
    acrobatics = ut.get_table_row(skills_table, 'table', values=False)
    spans = acrobatics[0].find_element_by_tag_name('span')
    half = spans.find_element_by_tag_name('span').get_attribute('class')

    acrobatics[0].click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, skills_edit.proficient_xpath)))
    skills_edit.proficient.click()
    skills_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())
    time.sleep(.4)
    acrobatics = ut.get_table_row(skills_table, 'table', values=False)
    spans = acrobatics[0].find_element_by_tag_name('span')
    proficient = spans.find_element_by_tag_name('span').get_attribute('class')

    acrobatics[0].click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, skills_edit.expertise_xpath)))

    skills_edit.expertise.click()
    skills_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())
    time.sleep(.4)
    acrobatics = ut.get_table_row(skills_table, 'table', values=False)
    spans = acrobatics[0].find_element_by_tag_name('span')
    expertise = spans.find_element_by_tag_name('span').get_attribute('class')

    assert '' in none.strip()
    assert 'fa fa-adjust' in half.strip()
    assert 'fa fa-check' in proficient.strip()
    assert 'fa fa-check close-check' in expertise.strip()
Beispiel #3
0
def test_edit_trait(player_wizard, browser):  # noqa
    """As a player, I can edit a trait."""
    print('As a player, I can edit a trait.')

    trait = traits.TraitAddModal(browser)
    trait_edit = traits.TraitEditModal(browser)
    traits_table = traits.TraitsTable(browser)
    trait_tabs = traits.TraitModalTabs(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, traits_table.add_id)))

    traits_table.add.click()
    ut.select_from_autocomplete(trait, 'name', browser, has_search_term=False)
    trait.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    rows = ut.get_table_rows(traits_table, 'table', values=False)
    rows[0][0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, trait_tabs.edit_id)))

    trait_tabs.edit.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.presence_of_element_located((By.ID, trait_edit.name_id)))

    trait_edit.name = 'Edited Name'
    trait_edit.race = 'Edited Race'
    trait_edit.description = 'Edited Description'
    trait_edit.tracked.click()
    trait_edit.max_ = 4
    trait_edit.short_rest.click()

    assert trait_edit.name.get_attribute('value').strip() == 'Edited Name'
    assert trait_edit.race.get_attribute('value').strip() == 'Edited Race'
    assert trait_edit.description.get_attribute(
        'value').strip() == 'Edited Description'
    assert trait_edit.max_.get_attribute('value').strip() == '4'
    assert 'active' in trait_edit.short_rest.get_attribute('class').strip()

    trait_edit.done.click()

    rows = ut.get_table_rows(traits_table, 'table', values=False)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_cell_updated(traits_table, 'trait', 'Edited Name', 'table', 1))

    row = ut.get_table_row(traits_table, 'table', 1)

    assert row.trait.strip() == 'Edited Name'
    assert row.race.strip() == 'Edited Race'
Beispiel #4
0
def test_inventory_sorting(player_wizard, browser):  # noqa
    """As a player, I can sort the inventory table by clicking on the
       sortable columns."""
    print(('As a player, I can sort the inventory table by clicking on the '
           'sortable columns'))

    inventory_add = inventory.InventoryAddModal(browser)
    inventory_table = inventory.InventoryTable(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, inventory_table.add_id)))

    inventory_table.add.click()
    ut.select_from_autocomplete(inventory_add,
                                'name',
                                browser,
                                has_search_term=False)
    inventory_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    inventory_table.add.click()
    ut.select_from_autocomplete(inventory_add,
                                'name',
                                browser,
                                arrow_down_count=2)
    inventory_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    inventory_table.item_header.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_down(inventory_table.item_header_sorting_arrow, ))
    rows = ut.get_table_row(inventory_table, 'table', values=False)

    assert rows[0].text.strip() == 'Acid (vial)'

    inventory_table.quantity_header.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(inventory_table.quantity_header_sorting_arrow, ))

    rows = ut.get_table_row(inventory_table, 'table', values=False)

    assert rows[1].text.strip() == '1'

    inventory_table.weight_header.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(inventory_table.weight_header_sorting_arrow, ))

    rows = ut.get_table_row(inventory_table, 'table', values=False)

    assert rows[2].text.strip() == '1 lbs.'
Beispiel #5
0
def test_edit_proficiency(player_wizard, browser):  # noqa
    """As a player, I can edit a proficiency."""
    print('As a player, I can edit a proficiency.')

    proficiency_add = proficiency.ProficiencyAddModal(browser)
    proficiency_edit = proficiency.ProficiencyEditModal(browser)
    proficiency_table = proficiency.ProficiencyTable(browser)
    proficiency_tabs = proficiency.ProficiencyModalTabs(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, proficiency_table.add_id)))

    proficiency_table.add.click()
    ut.select_from_autocomplete(proficiency_add,
                                'name',
                                browser,
                                has_search_term=False)

    proficiency_add.name.send_keys(Keys.TAB)

    proficiency_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(proficiency_table))

    rows = ut.get_table_rows(proficiency_table, 'table', values=False)
    rows[0][0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, proficiency_tabs.edit_id)))

    proficiency_tabs.edit.click()

    proficiency_edit.name = 'Edited Name'
    proficiency_edit.type_ = 'Edited Type'
    proficiency_edit.description = 'Edited Description'

    assert proficiency_edit.name.get_attribute(
        'value').strip() == 'Edited Name'
    assert proficiency_edit.type_.get_attribute(
        'value').strip() == 'Edited Type'
    assert proficiency_edit.description.get_attribute(
        'value').strip() == 'Edited Description'

    proficiency_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    row = ut.get_table_row(proficiency_table, 'table', 1)

    assert row.proficiency.strip() == 'Edited Name'
    assert row.type.strip() == 'Edited Type'
Beispiel #6
0
def test_edit_inventory(player_wizard, browser):  # noqa
    """As a player, I can edit an item in my inventory."""
    print('As a player, I can edit an item in my inventory.')

    inventory_add = inventory.InventoryAddModal(browser)
    inventory_edit = inventory.InventoryEditModal(browser)
    inventory_table = inventory.InventoryTable(browser)
    inventory_tabs = inventory.InventoryModalTabs(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    inventory_table.add.click()
    ut.select_from_autocomplete(inventory_add,
                                'name',
                                browser,
                                has_search_term=False)
    inventory_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    rows = ut.get_table_rows(inventory_table, 'table', values=False)
    rows[0][0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, inventory_tabs.edit_id)))

    inventory_tabs.edit.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.presence_of_element_located((By.ID, inventory_edit.name_id)))

    inventory_edit.name = 'Edit Name'
    inventory_edit.weight = 100
    inventory_edit.quantity = 2
    inventory_edit.cost = 100
    inventory_edit.currency_denomination = 'GP'
    inventory_edit.description = 'Edit Description'

    assert inventory_edit.name.get_attribute('value').strip() == 'Edit Name'
    assert inventory_edit.weight.get_attribute('value').strip() == '100'
    assert inventory_edit.quantity.get_attribute('value').strip() == '2'
    assert inventory_edit.cost.get_attribute('value').strip() == '100'
    assert inventory_edit.currency_denomination.get_attribute(
        'value').strip() == 'GP'
    assert inventory_edit.description.get_attribute(
        'value').strip() == 'Edit Description'

    inventory_edit.done.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())
    row = ut.get_table_row(inventory_table, 'table', 1)

    assert row.item.strip() == 'Edit Name'
    assert row.quantity.strip() == '2'
    assert row.weight.strip() == '100 lbs.'
    assert row.cost.strip() == '100 GP'
    assert row.description.strip() == 'Edit Description'
Beispiel #7
0
def test_edit_feat(player_wizard, browser):  # noqa
    """As a player, I can edit a feat."""
    print('As a player, I can edit a feat.')

    feat = feats.FeatAddModal(browser)
    feat_edit = feats.FeatEditModal(browser)
    feats_table = feats.FeatsTable(browser)
    feat_tabs = feats.FeatModalTabs(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, feats_table.add_id)))

    feats_table.add.click()

    ut.select_from_autocomplete(feat, 'name', browser, has_search_term=False)

    feat.name.send_keys(Keys.TAB)

    feat.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    rows = ut.get_table_rows(feats_table, 'table', values=False)
    rows[0][0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, feat_tabs.edit_id)))

    feat_tabs.edit.click()
    feat_tabs.edit.click()

    feat_edit.name = 'Edited Name'
    feat_edit.description = 'Edited Description'
    feat_edit.tracked.click()
    feat_edit.max_ = 4
    feat_edit.short_rest.click()

    assert feat_edit.name.get_attribute('value').strip() == 'Edited Name'
    assert feat_edit.description.get_attribute(
        'value').strip() == 'Edited Description'
    assert feat_edit.max_.get_attribute('value').strip() == '4'
    assert 'active' in feat_edit.short_rest.get_attribute('class').strip()

    feat_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_cell_updated(feats_table, 'feat', 'Edited Name', 'table', 1))

    row = ut.get_table_row(feats_table, 'table', 1)

    assert row.feat.strip() == 'Edited Name'
Beispiel #8
0
def test_magical_modifier(player_wizard, browser): # noqa
    """As a player, if armor is magical, a badge indicating the modifier
       is present."""
    print(('As a player, if armor is magical, a badge indicating the '
           'modifier is present.'))

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    stub = ArmorFactory.stub()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, armor_table.add_id)
        )
    )

    armor_table.add.click()
    armor_add.name = stub.name
    armor_add.magical_modifier = stub.magical_modifier

    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(armor_table, 'table', 1)
    actual = ' '.join([string.strip() for string in row.armor.split()])

    assert actual == '{} + {}'.format(stub.name, stub.magical_modifier)
Beispiel #9
0
def test_armor_donned(player_wizard, browser):  # noqa
    """As a player, the checkbox appears when armor is donned."""
    print('As a player, the checkbox appears when armor is donned.')

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, armor_table.add_id)))

    armor_table.add.click()

    ut.select_from_autocomplete(armor_add,
                                'name',
                                browser,
                                has_search_term=False)

    armor_add.name.send_keys(Keys.TAB)

    armor_add.don.click()

    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(armor_table))

    row = ut.get_table_row(armor_table, 'table', 1, values=False)

    assert 'fa fa-check' in row[0].find_element_by_tag_name(
        'span').get_attribute('class').strip()
Beispiel #10
0
def test_delete_proficiency(player_wizard, browser):  # noqa
    """As a player, I can delete a proficiency."""
    print('As a player, I can delete a proficiency.')

    proficiency_add = proficiency.ProficiencyAddModal(browser)
    proficiency_table = proficiency.ProficiencyTable(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, proficiency_table.add_id)))

    proficiency_table.add.click()
    ut.select_from_autocomplete(proficiency_add,
                                'name',
                                browser,
                                has_search_term=False)
    proficiency_add.add.click()

    rows = ut.get_table_rows(proficiency_table, 'table', values=False)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    rows[0][2].find_element_by_tag_name('a').click()
    rows = ut.get_table_rows(proficiency_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new Proficiency'
Beispiel #11
0
def test_delete_armor(player_wizard, browser): # noqa
    """As a player, I can delete an armor."""
    print('As a player, I can delete an armor.')

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, armor_table.add_id)
        )
    )

    armor_table.add.click()
    ut.select_from_autocomplete(
        armor_add,
        'name',
        browser,
        has_search_term=False
    )
    armor_add.add.click()

    rows = ut.get_table_rows(armor_table, 'table', values=False)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    rows[0][4].find_element_by_tag_name('a').click()
    rows = ut.get_table_rows(armor_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new armor'
Beispiel #12
0
def test_reach_ft(player_wizard, browser): # noqa
    """As a player, if I add a weapon with property reach, 5 ft. is added
       after I close the modal."""
    print(('As a player, if I add a weapon with property reach, 5 ft. is '
           'added after I close the modal'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    weapon_add.name = 'Test name'
    weapon_add.type_ = 'Melee'
    weapon_add.property_ = 'Reach'
    weapon_add.range_ = '5'
    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', values=False)

    assert row[4].text.strip() == '10 ft.'
Beispiel #13
0
def test_weapon_magical_modifier(player_wizard, browser): # noqa
    """As a player, if weapon is magical, a badge indicating the modifier
       is present."""
    print(('As a player, if weapon is magical, a badge indicating the '
           'modifier is present.'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Add Name'
    weapon_add.magical_modifier = 3

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', 1)

    weapon_name_label = ' '.join([string.strip() for string in row.weapon.split()])

    assert weapon_name_label == 'Add Name + 3'
Beispiel #14
0
def test_armor_donned(player_wizard, browser): # noqa
    """As a player, the checkbox appears when armor is donned."""
    print('As a player, the checkbox appears when armor is donned.')

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    stub = ArmorFactory.stub()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, armor_table.add_id)
        )
    )

    armor_table.add.click()
    armor_add.name = stub.name
    armor_add.don.click()

    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(armor_table, 'table', 1, values=False)

    assert 'fa fa-check' in row[0].find_element_by_tag_name('span').get_attribute('class').strip()
Beispiel #15
0
def test_delete_magic_items(player_wizard, browser): # noqa
    """As a player, I can delete an item in my magic_items."""
    print('As a player, I can delete an item to my magic_items.')

    magic_items_add = magic_items.MagicItemsAddModal(browser)
    magic_items_table = magic_items.MagicItemsTable(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    magic_items_table.add.click()
    ut.select_from_autocomplete(
        magic_items_add,
        'item',
        browser,
        has_search_term=False
    )
    magic_items_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_has_data(magic_items_table)
    )

    rows = ut.get_table_rows(magic_items_table, 'table', values=False)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    rows[0][5].find_element_by_tag_name('a').click()

    time.sleep(.5)

    rows = ut.get_table_rows(magic_items_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new magic item'
Beispiel #16
0
def test_magic_items_total_weight(player_wizard, browser):  # noqa
    """As a player, in the magic_items table, total weight is calculated
       correctly."""
    print(('As a player, in the armor table, total weight is calculated '
           'correctly'))

    magic_items_add = magic_items.MagicItemsAddModal(browser)
    magic_items_table = magic_items.MagicItemsTable(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    magic_items_table.add.click()
    ut.select_from_autocomplete(magic_items_add,
                                'item',
                                browser,
                                has_search_term=False,
                                search_term='b')
    magic_items_add.weight = 5
    magic_items_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    magic_items_table.add.click()
    ut.select_from_autocomplete(magic_items_add,
                                'item',
                                browser,
                                has_search_term=False,
                                search_term='b')
    magic_items_add.weight = 10
    magic_items_add.add.click()

    assert magic_items_table.total_weight.text.strip() == '15 (lbs)'
Beispiel #17
0
def test_saving_throw_proficiency(player_wizard, browser):  # noqa
    """As a player, I can select to become proficient in a savings throw, and
       this can be viewed in the table via in icon."""
    print(
        ('As a player, I can select to become proficient in a savings throw, '
         'and this can be viewed in the table via in icon.'))

    saving_throw = SavingThrowTable(browser)
    saving_throw_edit = SavingThrowEditModal(browser)

    time.sleep(10)

    row = ut.get_table_row(saving_throw, 'table', values=False)
    # open edit modal
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, saving_throw_edit.proficiency.get_attribute('id'))))

    saving_throw_edit.proficiency.click()
    saving_throw_edit.modifier.click()
    saving_throw_edit.done.click()

    # add custom wait to test for class in nested element
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    row = ut.get_table_row(saving_throw, 'table', values=False)
    span = row[0].find_elements(By.TAG_NAME, 'span')

    assert span[0].get_attribute('class').strip() == 'fa fa-check'
Beispiel #18
0
def test_inventory_total_weight(player_wizard, browser):  # noqa
    """As a player, in the inventory table, total weight is calculated
       correctly."""
    print(('As a player, in the armor table, total weight is calculated '
           'correctly'))

    inventory_add = inventory.InventoryAddModal(browser)
    inventory_table = inventory.InventoryTable(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, inventory_table.add_id)))

    inventory_table.add.click()
    ut.select_from_autocomplete(inventory_add,
                                'name',
                                browser,
                                has_search_term=False)
    inventory_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    inventory_table.add.click()
    ut.select_from_autocomplete(inventory_add,
                                'name',
                                browser,
                                has_search_term=False)
    inventory_add.add.click()

    assert inventory_table.total_weight.text.strip() == '4 (lbs)'
Beispiel #19
0
def test_delete_feature(player_wizard, browser):  # noqa
    """As a player, I can delete a feature."""
    print('As a player, I can delete a feature.')

    feature = features.FeatureAddModal(browser)
    features_table = features.FeaturesTable(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    features_table.add.click()
    ut.select_from_autocomplete(feature,
                                'name',
                                browser,
                                has_search_term=False)

    feature.name.send_keys(Keys.TAB)

    feature.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(features_table))

    rows = ut.get_table_rows(features_table, 'table', values=False)

    rows[0][2].click()

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_is_empty(features_table))

    rows = ut.get_table_rows(features_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new Feature'
Beispiel #20
0
def test_delete_spells(player_wizard, browser):  # noqa
    """As a player, I can delete a spells."""
    print('As a player, I can delete a spells.')

    spells_add = spells.SpellsAddModal(browser)
    spells_table = spells.SpellsTable(browser)
    tabs = Tabs(browser)
    tabs.spells.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, spells_table.add_id)))

    spells_table.add.click()
    ut.select_from_autocomplete(spells_add,
                                'name',
                                browser,
                                has_search_term=False)
    spells_add.description.click()
    spells_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    rows = ut.get_table_rows(spells_table, 'table', values=False)
    rows[0][7].find_element_by_tag_name('a').click()

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_is_empty(spells_table))

    rows = ut.get_table_rows(spells_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new spell'
Beispiel #21
0
def test_delete_trait(player_wizard, browser):  # noqa
    """As a player, I can delete a trait."""
    print('As a player, I can delete a trait.')

    trait = traits.TraitAddModal(browser)
    traits_table = traits.TraitsTable(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, traits_table.add_id)))

    traits_table.add.click()
    ut.select_from_autocomplete(trait, 'name', browser, has_search_term=False)

    trait.name.send_keys(Keys.TAB)

    trait.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(traits_table))

    rows = ut.get_table_rows(traits_table, 'table', values=False)
    rows[0][2].find_element_by_tag_name('a').click()

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_is_empty(traits_table))

    rows = ut.get_table_rows(traits_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new Trait'
Beispiel #22
0
def test_preview_magic_items(player_wizard, browser): # noqa
    """As a player, I can select a row in the magic_items table and view the
       item in the preview tab."""
    print(('As a player, I can select a row in the magic_items table and view '
           ' the item in the preview tab'))

    magic_items_add = magic_items.MagicItemsAddModal(browser)
    magic_items_table = magic_items.MagicItemsTable(browser)
    magic_items_preview = magic_items.MagicItemsPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    magic_items_table.add.click()
    ut.select_from_autocomplete(
        magic_items_add,
        'item',
        browser,
        has_search_term=False
    )
    magic_items_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_has_data(magic_items_table)
    )

    row = ut.get_table_row(magic_items_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.text_to_be_present_in_element(
            (By.ID, magic_items_preview.item_id), 'Adamantine Armor'
        )
    )

    preview_type_ = magic_items_preview.type_.text.split()
    magic_items_type = ' '.join([string.strip() for string in preview_type_])
    magic_items_max_charges = ' '.join(
        [
            string.strip()
            for string in magic_items_preview.max_charges.text.split()
        ]
    )
    magic_items_weight = ' '.join(
        [
            string.strip()
            for string in magic_items_preview.weight.text.split()
        ]
    )

    assert magic_items_preview.item.text.strip() == 'Adamantine Armor'
    assert magic_items_preview.rarity.text.strip() == 'Uncommon'
    assert magic_items_type == 'Type: Armor (medium or heavy but not hide)'
    assert magic_items_max_charges == 'Max Charges: 0'
    assert magic_items_weight == 'Weight: 0 lbs.'
    assert 'reinforced with adamantine' in magic_items_preview.description.text.strip()
Beispiel #23
0
def test_preview_weapon(player_wizard, browser): # noqa
    """As a player, I can select a row in the weapon table and view the item
       in the preview tab."""
    print(('As a player, I can select a row in the weapon '
           'table and view the item in the preview tab'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_preview = weapon.WeaponPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    ut.select_from_autocomplete(
        weapon_add,
        'name',
        browser,
        has_search_term=False
    )
    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, weapon_preview.done_xpath)
        )
    )

    assert weapon_preview.name.text.strip() == 'Battleaxe'
    assert weapon_preview.magical_modifier.text.strip() == ''
    assert weapon_preview.damage.text.strip() == '1d8 or 1d10'
    assert weapon_preview.to_hit_modifier.text.strip() == '0'
    assert weapon_preview.range_.text.strip() == '5 ft.'
    assert weapon_preview.type_.text.strip() == 'Melee'
    assert weapon_preview.proficiency.text.strip() == 'Martial'
    assert weapon_preview.handedness.text.strip() == 'One or Two Handed'
    assert weapon_preview.weight.text.strip() == '4 lbs.'
    assert weapon_preview.range_.text.strip() == '5 ft.'
    assert weapon_preview.damage_type.text.strip() == 'Slashing'
    assert weapon_preview.property_.text.strip() == 'Versatile'
    assert '' in weapon_preview.description.text.strip()
Beispiel #24
0
def test_preview_inventory(player_wizard, browser): # noqa
    """As a player, I can select a row in the inventory table and view the
       item in the preview tab."""
    print(('As a player, I can select a row in the inventory table and view '
           'the item in the preview tab'))

    inventory_add = inventory.InventoryAddModal(browser)
    inventory_table = inventory.InventoryTable(browser)
    inventory_preview = inventory.InventoryPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.inventory.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, inventory_table.add_id)
        )
    )

    inventory_table.add.click()
    ut.select_from_autocomplete(
        inventory_add,
        'name',
        browser,
        has_search_term=False
    )
    inventory_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_has_data(inventory_table)
    )

    row = ut.get_table_row(inventory_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, inventory_preview.done_id)
        )
    )

    assert inventory_preview.name.text.strip() == 'Abacus'
    assert inventory_preview.weight.text.strip() == '2 lbs.'
    assert inventory_preview.quantity.text.strip() == '1'
    assert inventory_preview.cost.text.strip() == '2 GP'
    assert inventory_preview.description.text.strip() == 'Add a description via the edit tab.'
Beispiel #25
0
def test_preview_armor(player_wizard, browser):  # noqa
    """As a player, I can select a row in the armor table and view the item
       in the preview tab."""
    print(('As a player, I can select a row in the armor table and view '
           'the item in the preview tab'))

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    armor_preview = armor.ArmorPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, armor_table.add_id)))

    armor_table.add.click()

    ut.select_from_autocomplete(armor_add,
                                'name',
                                browser,
                                has_search_term=False)

    armor_add.name.send_keys(Keys.TAB)

    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(armor_table))

    row = ut.get_table_row(armor_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.text_to_be_present_in_element((By.ID, armor_preview.name_id),
                                         'Breastplate'))

    armor_weight = ' '.join(
        [string.strip() for string in armor_preview.weight.text.split()])
    armor_stealth = ' '.join(
        [string.strip() for string in armor_preview.stealth.text.split()])

    assert armor_preview.name.text.strip() == 'Breastplate'
    assert armor_preview.summary.text.strip() == 'AC 14'
    assert armor_weight == 'Weight: 20 lbs.'
    assert armor_stealth == 'Stealth: Normal'
    assert 'metal chest piece' in armor_preview.description.text.strip()
Beispiel #26
0
def test_armor_total_weight(player_wizard, browser): # noqa
    """As a player, in the armor table, total weight is calculated
       correctly."""
    print(('As a player, in the armor table, total weight is calculated '
           'correctly'))

    armor_add = armor.ArmorAddModal(browser)
    armor_table = armor.ArmorTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, armor_table.add_id)
        )
    )

    armor_table.add.click()
    ut.select_from_autocomplete(
        armor_add,
        'name',
        browser,
        has_search_term=False
    )
    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    armor_table.add.click()
    ut.select_from_autocomplete(
        armor_add,
        'name',
        browser,
        has_search_term=False
    )
    armor_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.text_to_be_present_in_element(
            (By.ID, armor_table.total_weight_id),
            '40 (lbs)'
        )
    )

    assert armor_table.total_weight.text.strip() == '40 (lbs)'
Beispiel #27
0
def test_add_point_of_interest(dm_wizard, encounter_all_sections, browser):
    """As a dm, I can add read aloud text to an encounter and the data persists."""
    print(
        'As a dm, I can add read aloud text to an encounter and the data persists'
    )

    point_of_interest_modal = PointOfInterestAddModal(browser)
    point_of_interest_table = PointOfInterestTable(browser)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, point_of_interest_modal.add_plus_icon_xpath)))

    point_of_interest_modal.add_plus_icon.click()
    stub = PointOfInterestFactory.stub()

    point_of_interest_modal.name = stub.name
    point_of_interest_modal.description = stub.description
    point_of_interest_modal.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, point_of_interest_table.name_xpath)))

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_has_data(point_of_interest_table))

    before_refresh_name = point_of_interest_table.name.text.strip()
    before_refresh_description = point_of_interest_table.description.text.strip(
    )

    browser.refresh()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, point_of_interest_table.name_xpath)))

    after_refresh_name = point_of_interest_table.name.text.strip()
    after_refresh_description = point_of_interest_table.description.text.strip(
    )

    assert before_refresh_name == after_refresh_name
    assert before_refresh_description == after_refresh_description
Beispiel #28
0
def test_melee_ft(player_wizard, browser):  # noqa
    """As a player, if I add a melee weapon, the range of 5 ft. is assigned
       after I close the modal."""
    print(('As a player, if I add a melee weapon, the range of 5 ft. is '
           'assigned after I close the modal'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()

    weapon_add.name = 'Test name'
    weapon_add.damage = '4d6'
    weapon_add.type_ = 'Melee'
    weapon_add.magical_modifier = 1
    weapon_add.to_hit_modifier = 2
    weapon_add.handedness = 'Handedness'
    weapon_add.proficiency = 'Proficiency'
    weapon_add.price = 200
    weapon_add.currency_denomination = 'GP'
    weapon_add.weight = 100
    weapon_add.range_ = '0'
    weapon_add.damage_type = 'Damage Type'
    weapon_add.property_ = 'Property'
    weapon_add.quantity = 2
    weapon_add.description = 'Description'

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_add.add_id)))

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    row = ut.get_table_row(weapon_table, 'table', values=False)

    assert row[4].text.strip() == '5 ft.'
Beispiel #29
0
def test_add_map_or_image(dm_wizard, encounter_all_sections, browser):
    """As a dm, I can add a map or image to an encounter and the data persists."""
    print(
        'As a dm, I can add a map or image to an encounter and the data persists'
    )  # noqa
    map_or_image_modal = MapOrImageAddModal(browser)
    map_or_image_table = MapOrImageTable(browser)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, map_or_image_modal.add_plus_icon_xpath)))

    map_or_image_modal.add_plus_icon.click()
    stub = MapOrImageFactory.stub()

    map_or_image_modal.name = stub.name
    map_or_image_modal.link = stub.image_link
    map_or_image_modal.description = stub.description
    map_or_image_modal.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, map_or_image_table.name_xpath)))

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(map_or_image_table))

    before_refresh_name = map_or_image_table.name.text.strip()
    before_refresh_description = map_or_image_table.description.text.strip()

    browser.refresh()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.XPATH, map_or_image_table.name_xpath)))

    after_refresh_name = map_or_image_table.name.text.strip()
    after_refresh_description = map_or_image_table.description.text.strip()

    assert before_refresh_name == after_refresh_name
    assert before_refresh_description == after_refresh_description
Beispiel #30
0
def test_preview_spells(player_wizard, browser):  # noqa
    """As a player, I can select a row in the spells table and view the item in the preview tab."""
    print((
        'As a player, I can select a row in the spells table and view the item in the '
        'preview tab'))

    spells_add = spells.SpellsAddModal(browser)
    spells_table = spells.SpellsTable(browser)
    spells_tabs = spells.SpellsModalTabs(browser)
    spells_preview = spells.SpellsPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.spells.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, spells_table.add_id)))

    spells_table.add.click()
    ut.select_from_autocomplete(spells_add,
                                'name',
                                browser,
                                has_search_term=False)
    spells_add.description.click()  # added blur to facilitate click on Add
    spells_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    row = ut.get_table_row(spells_table, 'table', values=False)
    row[1].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, spells_tabs.edit_id)))

    assert spells_preview.name.text.strip() == 'Acid Arrow'
    assert spells_preview.spell_summary_label.text.strip(
    ) == 'Evocation, Level 2'
    assert spells_preview.type_.text.strip() == 'Ranged Spell Attack'
    assert spells_preview.damage.text.strip() == '4d4'
    assert spells_preview.cast_time.text.strip() == '1 action'
    assert spells_preview.range_.text.strip() == '90 feet'
    assert spells_preview.components.text.strip() == 'V, S, M'
    assert spells_preview.duration.text.strip() == 'Instantaneous'