Exemple #1
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'
Exemple #2
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'
Exemple #3
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'
Exemple #4
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'
Exemple #5
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'
Exemple #6
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'
Exemple #7
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'
Exemple #8
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'
Exemple #9
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'
Exemple #10
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'
Exemple #11
0
def test_delete_feat(player_wizard, browser):  # noqa
    """As a player, I can delete a feat."""
    print('As a player, I can delete a feat.')

    feat = feats.FeatAddModal(browser)
    feats_table = feats.FeatsTable(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

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

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

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

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

    assert rows[0][0].text.strip() == 'Add a new Feat'
Exemple #12
0
def test_delete_inventory(player_wizard, browser):  # noqa
    """As a player, I can delete an item in my inventory."""
    print('As a player, I can delete an item to my inventory.')

    inventory_add = inventory.InventoryAddModal(browser)
    inventory_table = inventory.InventoryTable(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][5].find_element_by_tag_name('a').click()
    rows = ut.get_table_rows(inventory_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new item'
Exemple #13
0
def test_add_inventory_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in inventory table to open the
       inventory add modal."""
    print(('As a player, I can click the first row in inventory table to open '
           'the inventory add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #14
0
def test_add_armor_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in armor table to open the
       armor add modal."""
    print(('As a player, I can click the first row in armor table to open '
           'the armor add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #15
0
def test_add_spells_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in spells table to open the spells add modal."""
    print(
        'As a player, I can click the first row in spells table to open the spells add modal.'
    )

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #16
0
def test_add_feature_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in feature table to open the
       feature add modal."""
    print(('As a player, I can click the first row in feature table to open '
           'the feature add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #17
0
def test_add_proficiency_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in proficiency table to open the
       proficiency add modal."""
    print(('As a player, I can click the first row in proficiency table to '
           'open the proficiency add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #18
0
def test_add_trait_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in trait table to open the trait
       add modal."""
    print(('As a player, I can click the first row in trait table to open the '
           'trait add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #19
0
def test_add_weapon_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in weapon table to open
       the weapon add modal."""
    print(('As a player, I can click the first row in weapon table to open '
           'the weapon add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #20
0
def test_add_magic_items_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in magic_items table to open the
       magic_items add modal."""
    print(('As a player, I can click the first row in magic_items table to '
           'open the magic_items add modal.'))

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

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

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemple #21
0
def test_delete_weapon(player_wizard, browser):  # noqa
    """As a player, I can delete a weapon."""
    print('As a player, I can delete a weapon.')

    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()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

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

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

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

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

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

    assert rows[0][0].text.strip() == 'Add a new weapon'
Exemple #22
0
def test_edit_magic_items(player_wizard, browser):  # noqa
    """As a player, I can edit an item in my magic_items."""
    print('As a player, I can edit an item in my magic_items.')

    magic_items_add = magic_items.MagicItemsAddModal(browser)
    magic_items_edit = magic_items.MagicItemsEditModal(browser)
    magic_items_table = magic_items.MagicItemsTable(browser)
    magic_items_tabs = magic_items.MagicItemsModalTabs(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())

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

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

    magic_items_tabs.edit.click()

    magic_items_edit.item = 'Edit Name'
    magic_items_edit.type_ = 'Edit Armor'
    magic_items_edit.rarity = 'Edit Rare'
    magic_items_edit.max_charges = 3
    magic_items_edit.charges = 3
    magic_items_edit.weight = 100
    magic_items_edit.requires_attunement.click()
    magic_items_edit.attuned.click()
    magic_items_edit.description = 'Edit Description'

    assert magic_items_edit.item.get_attribute('value').strip() == 'Edit Name'
    assert magic_items_edit.type_.get_attribute(
        'value').strip() == 'Edit Armor'
    assert magic_items_edit.rarity.get_attribute(
        'value').strip() == 'Edit Rare'
    assert magic_items_edit.max_charges.get_attribute('value').strip() == '3'
    assert magic_items_edit.charges.get_attribute('value').strip() == '3'
    assert magic_items_edit.weight.get_attribute('value').strip() == '100'
    assert magic_items_edit.requires_attunement.is_selected()
    assert magic_items_edit.attuned.is_selected()
    assert magic_items_edit.description.get_attribute(
        'value').strip() == 'Edit Description'

    magic_items_edit.done.click()

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

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

    assert row.magic_item.strip() == 'Edit Name'
    assert row.charges.strip() == '3'
    assert row.weight.strip() == '100 lbs.'
    assert row.description.strip() == 'Edit Description'

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

    assert row[2].find_element_by_tag_name('input').is_selected()
Exemple #23
0
def test_edit_spells(player_wizard, browser):  # noqa
    """As a player, I can edit a spells."""
    print('As a player, I can edit a spells.')

    spells_add = spells.SpellsAddModal(browser)
    spells_edit = spells.SpellsEditModal(browser)
    spells_table = spells.SpellsTable(browser)
    spells_tabs = spells.SpellsModalTabs(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][1].click()

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

    spells_tabs.edit.click()
    spells_tabs.edit.click(
    )  # Added as cludge, not sure why click would only work sporadically

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

    time.sleep(1)

    spells_edit.name = 'Add Name'
    spells_edit.prepared.click()
    spells_edit.level = '5'
    spells_edit.school = 'Add School'
    spells_edit.type_ = 'Savings Throw'
    spells_edit.save_attr = 'Con'
    spells_edit.damage = '1d4'
    spells_edit.cast_time = '1 action'
    spells_edit.range_ = '5 feet'
    spells_edit.components = 'S'
    spells_edit.material_components = 'Add Material'
    spells_edit.duration = '12 Minutes'
    spells_edit.description = ' Add Description'

    assert spells_edit.name.get_attribute('value') == 'Add Name'
    assert spells_edit.prepared.is_selected()
    assert spells_edit.level.get_attribute('value') == '5'
    assert spells_edit.school.get_attribute('value') == 'Add School'
    assert spells_edit.type_.get_attribute('value') == 'Savings Throw'
    assert spells_edit.save_attr.get_attribute('value') == 'Con'
    assert spells_edit.damage.get_attribute('value') == '1d4'
    assert spells_edit.cast_time.get_attribute('value') == '1 action'
    assert spells_edit.range_.get_attribute('value') == '5 feet'
    assert spells_edit.components.get_attribute('value') == 'S'
    assert spells_edit.material_components.get_attribute(
        'value') == 'Add Material'
    assert spells_edit.duration.get_attribute('value') == '12 Minutes'
    assert spells_edit.description.get_attribute('value') == ' Add Description'

    spells_edit.done.click()

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

    time.sleep(1)

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

    assert row.spell == 'Add Name'
    assert row.level == '5'
    assert row.type == 'Savings Throw'
    assert row.damage == '1d4'
    assert row.casting_time == '1 action'
    assert row.range == '5 feet'

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

    assert row[0].find_element_by_tag_name('input').is_selected()
Exemple #24
0
def test_wizard_backpack_prepop(browser):  # noqa
    """As a player, after selecting a backpack, all items are pre-populated in the inventory
       module."""
    print((
        'As a player, after selecting a backpack, all items are pre-populated in the '
        'inventory module.'))

    wizard_main = NewCharacterCampaign(browser)
    who_are_you = wizard.WhoAreYou(browser)
    ability_scores = wizard.AbilityScoresManual(browser)
    tabs = Tabs(browser)
    inventory_table = inventory.InventoryTable(browser)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, wizard_main.get_started_id)))

    wizard_main.get_started.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, wizard_main.player_id)))

    wizard_main.player.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, wizard_main.next_id)))

    wizard_main.next_.click()

    who_are_you.character_name = 'Test Char'
    who_are_you.player_name = 'Automated Testing Bot.'

    backpack = Select(browser.find_element_by_id(who_are_you.backpack_id))
    backpack.select_by_index(1)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, wizard_main.next_id)))

    wizard_main.next_.click()

    ability_scores.strength = '18'
    ability_scores.dexterity = '18'
    ability_scores.constitution = '18'
    ability_scores.intelligence = '18'
    ability_scores.wisdom = '18'
    ability_scores.charisma = '18'

    wizard_main.finish.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, tabs.inventory_id)))

    tabs.inventory.click()

    # Safari has known issue where selects not working
    # https://forums.developer.apple.com/message/184592#184592
    # Javascript example not working either
    if browser.name != 'safari':
        WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
            table_has_data(inventory_table, ))

        rows = ut.get_table_rows(inventory_table, 'table')

        assert rows[0].item.strip() == 'Backpack'
        assert rows[0].quantity.strip() == '1'
        assert rows[0].weight.strip() == '5 lbs.'
        assert rows[0].cost.strip() == '2 GP'
        assert rows[0].description.strip() == ''

        assert rows[1].item.strip() == 'Ball bearings (bag of 1000)'
        assert rows[2].item.strip() == 'Bell'
        assert rows[3].item.strip() == 'Candle'
        assert rows[4].item.strip() == 'Crowbar'
        assert rows[5].item.strip() == 'Hammer'
        assert rows[6].item.strip() == 'Lantern hooded'
        assert rows[7].item.strip() == 'Oil (flask)'
        assert rows[8].item.strip() == 'Piton'
        assert rows[9].item.strip() == 'Rations (1 day)'
        assert rows[10].item.strip() == 'Rope hempen (50 feet)'
        assert rows[11].item.strip() == 'String (10 feet)'
        assert rows[12].item.strip() == 'Tinderbox'

        assert rows[13].item.strip() == 'Waterskin'
        assert rows[13].quantity.strip() == '1'
        assert rows[13].weight.strip() == '5 lbs.'
        assert rows[13].cost.strip() == '2 SP'
        assert rows[13].description.strip() == '(full)'
Exemple #25
0
def test_edit_feature(player_wizard, browser):  # noqa
    """As a player, I can edit a feature."""
    print('As a player, I can edit a feature.')

    feature = features.FeatureAddModal(browser)
    feature_edit = features.FeatureEditModal(browser)
    features_table = features.FeaturesTable(browser)
    feature_tabs = features.FeatureModalTabs(browser)
    tabs = Tabs(browser)
    tabs.skills.click()

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

    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][0].click()

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

    feature_tabs.edit.click()
    # Clicking twice is required for unknown reason
    feature_tabs.edit.click()

    feature_edit.name = 'Edited Name'
    feature_edit.class_ = 'Edited Class'
    feature_edit.level = 1
    feature_edit.description = 'Edited Description'
    feature_edit.tracked.click()
    feature_edit.max_ = 4
    feature_edit.short_rest.click()

    assert feature_edit.name.get_attribute('value').strip() == 'Edited Name'
    assert feature_edit.class_.get_attribute('value').strip() == 'Edited Class'
    assert feature_edit.level.get_attribute('value').strip() == '1'
    assert feature_edit.description.get_attribute(
        'value').strip() == 'Edited Description'
    assert feature_edit.max_.get_attribute('value').strip() == '4'
    assert 'active' in feature_edit.short_rest.get_attribute('class').strip()

    feature_edit.done.click()

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

    time.sleep(1)

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

    assert row.feature.strip() == 'Edited Name'
    assert row.class_.strip() == 'Edited Class'
Exemple #26
0
def test_edit_armor(player_wizard, browser):  # noqa
    """As a player, I can edit an armor."""
    print('As a player, I can edit an armor.')

    armor_add = armor.ArmorAddModal(browser)
    armor_edit = armor.ArmorEditModal(browser)
    armor_table = armor.ArmorTable(browser)
    armor_tabs = armor.ArmorModalTabs(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()
    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))

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

    rows[0][0].click()

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

    armor_tabs.edit.click()

    armor_edit.name = stub.name
    armor_edit.type_ = stub.type_
    armor_edit.magical_modifier = stub.magical_modifier
    armor_edit.price = stub.price
    armor_edit.currency_denomination = stub.currency_denomination
    armor_edit.weight = stub.weight
    armor_edit.armor_class = stub.armor_class
    armor_edit.stealth = stub.stealth
    armor_edit.stealth.send_keys(Keys.TAB)
    armor_edit.doff.click()
    armor_edit.description = stub.description

    assert armor_edit.name.get_attribute('value').strip() == stub.name
    assert armor_edit.type_.get_attribute('value').strip() == stub.type_
    assert int(armor_edit.magical_modifier.get_attribute(
        'value').strip()) == stub.magical_modifier
    assert int(armor_edit.price.get_attribute('value').strip()) == stub.price

    curr_denomination = stub.currency_denomination
    assert armor_edit.currency_denomination.get_attribute(
        'value').strip() == curr_denomination
    assert int(armor_edit.weight.get_attribute('value').strip()) == stub.weight
    assert int(armor_edit.armor_class.get_attribute(
        'value').strip()) == stub.armor_class
    assert armor_edit.stealth.get_attribute('value').strip() == stub.stealth
    assert 'active' in browser.find_element(
        By.ID, armor_add.doff_id).get_attribute('class').strip()
    assert armor_edit.description.get_attribute(
        'value').strip() == stub.description

    armor_edit.done.click()

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

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        table_cell_updated(armor_table, 'armor',
                           '{} + {}'.format(stub.name, stub.magical_modifier),
                           'table', 1))

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

    armor_field = ' '.join([string.strip() for string in row.armor.split()])

    assert armor_field == '{} + {}'.format(stub.name, stub.magical_modifier)
    assert int(row.armor_class.strip()) == stub.armor_class
    assert row.type.strip() == stub.type_
Exemple #27
0
def test_edit_weapon(player_wizard, browser):  # noqa
    """As a player, I can edit a weapon."""
    print('As a player, I can edit a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_edit = weapon.WeaponEditModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_tabs = weapon.WeaponModalTabs(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.name.send_keys(Keys.TAB)

    weapon_add.add.click()

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

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

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

    time.sleep(1)

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

    weapon_tabs.edit.click()

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

    weapon_edit.name = 'Edit Name'
    weapon_edit.damage = '1d10'
    weapon_edit.magical_modifier = 2
    weapon_edit.to_hit_modifier = 2
    weapon_edit.type_ = 'Melee'
    weapon_edit.handedness = 'One-Handed'
    weapon_edit.proficiency = 'Simple'
    weapon_edit.price = 200
    weapon_edit.currency_denomination = 'GP'
    weapon_edit.weight = 200
    weapon_edit.range_ = 5
    weapon_edit.damage_type = 'Slashing'
    weapon_edit.property_ = 'Versatile'
    weapon_edit.quantity = 2
    weapon_edit.description = 'Edit Description'

    assert weapon_edit.name.get_attribute('value').strip() == 'Edit Name'
    assert weapon_edit.damage.get_attribute('value').strip() == '1d10'
    assert weapon_edit.magical_modifier.get_attribute('value').strip() == '2'
    assert weapon_edit.to_hit_modifier.get_attribute('value').strip() == '2'
    assert weapon_edit.type_.get_attribute('value').strip() == 'Melee'
    assert weapon_edit.handedness.get_attribute(
        'value').strip() == 'One-Handed'
    assert weapon_edit.proficiency.get_attribute('value').strip() == 'Simple'
    assert weapon_edit.price.get_attribute('value').strip() == '200'
    assert weapon_edit.currency_denomination.get_attribute(
        'value').strip() == 'GP'
    assert weapon_edit.weight.get_attribute('value').strip() == '200'
    assert weapon_edit.range_.get_attribute('value').strip() == '5'
    assert weapon_edit.damage_type.get_attribute('value').strip() == 'Slashing'
    assert weapon_edit.property_.get_attribute('value').strip() == 'Versatile'
    assert weapon_edit.quantity.get_attribute('value').strip() == '2'
    assert weapon_edit.description.get_attribute(
        'value').strip() == 'Edit Description'

    weapon_edit.done.click()

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

    time.sleep(.5)

    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 == 'Edit Name + 2'
    assert row.to_hit.strip() == '+ 10'
    assert row.damage.strip() == '1d10'
    assert row.damage_type.strip() == 'Slashing'
    assert row.range.strip() == '5 ft.'
    assert row.property.strip() == 'Versatile'
    assert row.quantity.strip() == '2'