Skip to content

Commit

Permalink
Add test to check Satellite documention links for GA'ed Satellite
Browse files Browse the repository at this point in the history
  • Loading branch information
jameerpathan111 committed Oct 29, 2024
1 parent 25f5581 commit e76d43f
Showing 1 changed file with 92 additions and 0 deletions.
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].extend([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)}"

0 comments on commit e76d43f

Please sign in to comment.