Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[6.16.z] Add test to check Satellite documention links for GA'ed Satellite #16825

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions tests/foreman/ui/test_documentation_links.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
"""Test module for verifying Documentation links

:Requirement: Branding

:CaseAutomation: Automated

:CaseComponent: Branding

:Team: Platform

:CaseImportance: High

"""

from collections import defaultdict

import pytest
import requests

from robottelo.config import settings
from robottelo.logging import logger


@pytest.mark.e2e
@pytest.mark.skipif(
(settings.server.version.release.split('.')[0:2] in settings.robottelo.sat_non_ga_versions),
reason="The test don't yet support verifying documentation links for non GA'ed Satellite release.",
)
def test_positive_documentation_links(target_sat):
"""Verify that Satellite documentation links are working.
Note: At the moment, the test doesn't support verifying links hidden behind a button.
Currently, the only such link is on RH Cloud > Inventory Upload page.

:id: 5e6cba22-896a-4d86-95b4-87d0cc2f1cb6

:Steps:

1. Gather documentation links present on various Satellite pages.
2. Verify the links are working (returns 200).

:expectedresults: All the Documentation links present on Satellite are working
"""
pages = [
'about',
'settings',
'bookmark',
'role',
'ldapauthentication',
'cloudinventory',
'ansiblevariables',
'ansibleroles',
'discoveryrule',
'global_parameter',
'oscapreport',
'oscappolicy',
'oscapcontent',
'jobtemplate',
'provisioningtemplate',
'partitiontable',
'operatingsystem',
'host',
'discoveredhosts',
'reporttemplate',
'configreport',
'jobinvocation',
'audit',
'factvalue',
'dashboard',
]
all_links = defaultdict(list)
pages_with_broken_links = defaultdict(list)
with target_sat.ui_session() as session:
for page in pages:
page_object = getattr(session, page)
if page == "host":
view = page_object.navigate_to(page_object, 'Register')
elif page == "oscappolicy":
view = page_object.navigate_to(page_object, 'New')
else:
view = page_object.navigate_to(page_object, 'All')
# Get the doc links present on the page.
all_links[page] = view.documentation_links()
assert all_links[page], f"Couldn't find any documentation links on {page} page."
logger.info(
f"Following are the documentation links collected from Satellite: \n {all_links}"
)
for page in pages:
for link in all_links[page]:
if requests.get(link, verify=False).status_code != 200:
pages_with_broken_links[page].append(link)
logger.info(f"Following link on {page} page seems broken: \n {link}")
assert not pages_with_broken_links, f"There are Satellite pages with broken documentation links. \n {print(pages_with_broken_links)}"
Loading