diff --git a/.gitignore b/.gitignore index cb5660a3..ed0aaf13 100644 --- a/.gitignore +++ b/.gitignore @@ -173,4 +173,8 @@ poetry.toml # LSP config files pyrightconfig.json -# End of https://www.toptal.com/developers/gitignore/api/python \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/python + +# allure +allure-results +allure-results/ \ No newline at end of file diff --git a/conftest.py b/conftest.py index ae323290..bf89d95c 100644 --- a/conftest.py +++ b/conftest.py @@ -5,11 +5,10 @@ from dotenv import load_dotenv from data.user.user import create_user_script, delete_user_script -from pages.base_configuration_page import BaseConfigurationPage -from pages.base_project_page import BaseProjectPage from utils.functions import load_xml, execute_user_groovy_script from utils.generators.user_generator import UserGenerator from utils.jenkins_client import JenkinsAPI +import allure load_dotenv() user_generator = UserGenerator() @@ -72,13 +71,16 @@ def page(playwright: Playwright, get_cookie): @pytest.fixture def create_job(jenkins): def _create(name, job_type=None, folder=None): - xml = load_xml(job_type) - jenkins.create_item_from_file( - name=name, - config_xml=xml, - folder=folder - ) - return name + with allure.step(f"Create job: {name}"): + xml = load_xml(job_type) + jenkins.create_item_from_file( + name=name, + config_xml=xml, + folder=folder + ) + + return name + return _create def get_all_jobs(): @@ -135,7 +137,9 @@ def create_user_fixture(): @pytest.fixture def open_page(page): def _open(page_class, url): - class_page = page_class(page, url) - class_page.open() - return class_page + with allure.step(f"Open page with URL: {url}"): + class_page = page_class(page, url) + class_page.open() + return class_page + return _open \ No newline at end of file diff --git a/pages/base_configuration_page.py b/pages/base_configuration_page.py index 8d7ad35a..6c561015 100644 --- a/pages/base_configuration_page.py +++ b/pages/base_configuration_page.py @@ -1,3 +1,5 @@ +import allure + from data.data import BaseConfigurationPageData from pages.base_page import BasePage from locators.base_locators import BaseLocators @@ -24,7 +26,8 @@ def disable_project(self): ) def save_configuration(self): - self.click(self.locators.SAVE_BUTTON) + with allure.step("Save changes on configuration page"): + self.click(self.locators.SAVE_BUTTON) def assert_project_disabled_message_is_displayed(self): assert self.is_visible( diff --git a/pytest.ini b/pytest.ini index 91d0eeda..7261b981 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,6 @@ [pytest] addopts = --tracing=retain-on-failure + --alluredir allure-results + --clean-alluredir cache_dir = /dev/null \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index bb257e7f..509b2184 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,5 @@ pytest-playwright==0.7.2 requests==2.32.5 python-dotenv==1.2.1 faker==39.0.0 +allure-pytest==2.15.3 + diff --git a/tests/pipeline_project/test_pipeline_project.py b/tests/pipeline_project/test_pipeline_project.py index 94760cfc..bb841a03 100644 --- a/tests/pipeline_project/test_pipeline_project.py +++ b/tests/pipeline_project/test_pipeline_project.py @@ -1,3 +1,5 @@ +import allure + from data.enums import ItemType from data.endpoints import Endpoints from pages.base_configuration_page import BaseConfigurationPage @@ -5,12 +7,14 @@ from pages.jenkins_base_page import JenkinsBasePage from utils.generators.project_generator import ProjectGenerator - +@allure.epic("Pipeline") +@allure.feature("Essential features in pipeline") class TestPipeline: generator = ProjectGenerator() endpoints = Endpoints() item_type = ItemType + @allure.story("Create pipeline") def test_create_pipeline_project(self, create_job, open_page): job_name = create_job(self.generator.generate_folder_name(), ItemType.PIPELINE) folder_project = open_page(JenkinsBasePage, self.endpoints.VIEW_ALL_PAGE_URL) @@ -18,6 +22,7 @@ def test_create_pipeline_project(self, create_job, open_page): assert name == job_name + @allure.story("Create pipeline with description") def test_tc_03_002_01_create_project_with_description(self, page, create_job, open_page): """Add description to the new project""" description_text = self.generator.generate_random_text(10) # generate random text for description @@ -32,6 +37,7 @@ def test_tc_03_002_01_create_project_with_description(self, page, create_job, op assert text == description_text + @allure.story("Add description to the existing pipeline job") def test_rf_tc_03_002_02_add_description(self, create_job, open_page): """Add description to the existing project""" description_text = self.generator.generate_random_text(10) # generate random text for description