mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
- When subscribe button is clicked in subscribe dialog, the dialog does not close immediately. Wait until it closes or error appears. - When a feed is added, the feed list refreshes and during that time, it is not possible to click on the feed expand button. Wait until it can be clicked. Extend the eventually() method to wait on exceptions and not just false values. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
100 lines
2.8 KiB
Python
100 lines
2.8 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Functional, browser based tests for ttrss app.
|
|
"""
|
|
|
|
from pytest_bdd import given, scenarios, then, when
|
|
|
|
from plinth.tests import functional
|
|
|
|
scenarios('ttrss.feature')
|
|
|
|
|
|
@given('I subscribe to a feed in ttrss')
|
|
def ttrss_subscribe(session_browser):
|
|
_subscribe(session_browser)
|
|
|
|
|
|
@when('I unsubscribe from the feed in ttrss')
|
|
def ttrss_unsubscribe(session_browser):
|
|
_unsubscribe(session_browser)
|
|
|
|
|
|
@then('I should be subscribed to the feed in ttrss')
|
|
def ttrss_assert_subscribed(session_browser):
|
|
assert _is_subscribed(session_browser)
|
|
|
|
|
|
def _ttrss_load_main_interface(browser):
|
|
"""Load the TT-RSS interface."""
|
|
functional.visit(browser, '/tt-rss/')
|
|
overlay = browser.find_by_id('overlay')
|
|
functional.eventually(lambda: not overlay.visible)
|
|
|
|
|
|
def _is_feed_shown(browser, invert=False):
|
|
return browser.is_text_present('Planet Debian') != invert
|
|
|
|
|
|
def _click_main_menu_item(browser, text):
|
|
"""Select an item from the main actions menu."""
|
|
burger_menu = browser.find_by_xpath('//*[contains(@title, "Actions...")]')
|
|
if burger_menu:
|
|
burger_menu.click()
|
|
else:
|
|
browser.find_by_text('Actions...').click()
|
|
|
|
browser.find_by_text(text).click()
|
|
|
|
|
|
def _subscribe(browser):
|
|
"""Subscribe to a feed in TT-RSS."""
|
|
|
|
def _already_subscribed_message():
|
|
return browser.is_text_present(
|
|
'You are already subscribed to this feed.')
|
|
|
|
_ttrss_load_main_interface(browser)
|
|
|
|
_click_main_menu_item(browser, 'Subscribe to feed...')
|
|
browser.find_by_id('feedDlg_feedUrl').fill(
|
|
'https://planet.debian.org/atom.xml')
|
|
browser.find_by_text('Subscribe').click()
|
|
add_dialog = browser.find_by_css('#feedAddDlg')
|
|
functional.eventually(
|
|
lambda: not add_dialog.visible or _already_subscribed_message())
|
|
if _already_subscribed_message():
|
|
browser.find_by_text('Cancel').click()
|
|
functional.eventually(lambda: not add_dialog.visible)
|
|
|
|
expand = browser.find_by_css('span.dijitTreeExpandoClosed')
|
|
if expand:
|
|
functional.eventually(expand.first.click)
|
|
|
|
assert functional.eventually(_is_feed_shown, [browser])
|
|
|
|
|
|
def _unsubscribe(browser):
|
|
"""Unsubscribe from a feed in TT-RSS."""
|
|
_ttrss_load_main_interface(browser)
|
|
expand = browser.find_by_css('span.dijitTreeExpandoClosed')
|
|
if expand:
|
|
expand.first.click()
|
|
|
|
browser.find_by_text('Planet Debian').click()
|
|
_click_main_menu_item(browser, 'Unsubscribe')
|
|
|
|
prompt = browser.get_alert()
|
|
prompt.accept()
|
|
|
|
# Reload as sometimes the feed does not disappear immediately
|
|
_ttrss_load_main_interface(browser)
|
|
|
|
assert functional.eventually(_is_feed_shown, [browser, True])
|
|
|
|
|
|
def _is_subscribed(browser):
|
|
"""Return whether subscribed to a feed in TT-RSS."""
|
|
_ttrss_load_main_interface(browser)
|
|
return browser.is_text_present('Planet Debian')
|