Skip to content

Commit 585bcb8

Browse files
fix: update test cases and configuration for improved logging and report generation
1 parent 1b2c017 commit 585bcb8

6 files changed

Lines changed: 49 additions & 28 deletions

File tree

playwright-tests/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,3 +164,5 @@ cython_debug/
164164
archive/
165165
report/
166166
screenshots/
167+
168+
report.html

playwright-tests/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Installing Playwright Pytest from Virtual Environment
2424

2525
Run test cases
2626

27-
- To run test cases from your 'tests' folder : "pytest --headed --html=report/report.html"
27+
- To run test cases from your 'tests' folder : "pytest --html=report.html --self-contained-html"
2828

2929
Create .env file in project root level with web app url and client credentials
3030

playwright-tests/pytest.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[pytest]
2+
log_cli = true
3+
log_cli_level = INFO
4+
log_file = logs/tests.log
5+
log_file_level = INFO
6+
addopts = -p no:warnings

playwright-tests/requirements.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
pytest-playwright
2-
pytest-html
2+
pytest-reporter-html1
33
python-dotenv
4-
pytest-check
4+
pytest-check
5+
pytest-html
6+
py

playwright-tests/tests/conftest.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from pathlib import Path
1+
import os
22

33
import pytest
44
from playwright.sync_api import sync_playwright
5-
from slugify import slugify
5+
from py.xml import html # type: ignore
66

77
from config.constants import URL
88

@@ -11,9 +11,9 @@
1111
def login_logout():
1212
# perform login and browser close once in a session
1313
with sync_playwright() as p:
14-
browser = p.chromium.launch(headless=False)
15-
context = browser.new_context()
16-
context.set_default_timeout(80000)
14+
browser = p.chromium.launch(headless=False, args=["--start-maximized"])
15+
context = browser.new_context(no_viewport=True)
16+
context.set_default_timeout(120000)
1717
page = context.new_page()
1818
# Navigate to the login URL
1919
page.goto(URL)
@@ -27,25 +27,24 @@ def login_logout():
2727

2828
@pytest.hookimpl(tryfirst=True)
2929
def pytest_html_report_title(report):
30-
report.title = "Automation_DOCGEN"
30+
report.title = "Automation_DocGen"
3131

3232

33+
# Add a column for descriptions
34+
def pytest_html_results_table_header(cells):
35+
cells.insert(1, html.th("Description"))
36+
37+
38+
def pytest_html_results_table_row(report, cells):
39+
cells.insert(1, html.td(report.description if hasattr(report, "description") else ""))
40+
41+
42+
# Add logs and docstring to report
3343
@pytest.hookimpl(hookwrapper=True)
3444
def pytest_runtest_makereport(item, call):
35-
pytest_html = item.config.pluginmanager.getplugin("html")
3645
outcome = yield
37-
screen_file = ""
3846
report = outcome.get_result()
39-
extra = getattr(report, "extra", [])
40-
if report.when == "call":
41-
if report.failed and "page" in item.funcargs:
42-
page = item.funcargs["page"]
43-
screenshot_dir = Path("screenshots")
44-
screenshot_dir.mkdir(exist_ok=True)
45-
screen_file = str(screenshot_dir / f"{slugify(item.nodeid)}.png")
46-
page.screenshot(path=screen_file)
47-
xfail = hasattr(report, "wasxfail")
48-
if (report.skipped and xfail) or (report.failed and not xfail):
49-
# add the screenshots to the html report
50-
extra.append(pytest_html.extras.png(screen_file))
51-
report.extra = extra
47+
report.description = str(item.function.__doc__)
48+
os.makedirs("logs", exist_ok=True)
49+
extra = getattr(report, 'extra', [])
50+
report.extra = extra

playwright-tests/tests/test_poc_docgen.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
1-
from config.constants import browse_question1, browse_question2, generate_question1
1+
import logging
2+
3+
from config.constants import (browse_question1, browse_question2,
4+
generate_question1)
25
from pages.browsePage import BrowsePage
36
from pages.draftPage import DraftPage
47
from pages.generatePage import GeneratePage
58
from pages.homePage import HomePage
69

10+
logger = logging.getLogger(__name__)
11+
12+
13+
def test_DocGen_GOLDENPATH(login_logout):
14+
"""Validate Golden path test case for Doc Gen Accelerator """
715

8-
def test_DKM_GOLDENPATH(login_logout):
916
page = login_logout
17+
logger.info("Step 1: Validate home page is loaded.")
1018
home_page = HomePage(page)
11-
# validate page title
19+
logger.info("Step 2: Validate Browse page is loaded.")
1220
home_page.click_browse_button()
1321
browse_page = BrowsePage(page)
22+
logger.info("Step 3: Validate Browse- Prompts response.")
1423
browse_page.enter_a_question(browse_question1)
1524
browse_page.click_send_button()
1625
# validate response
@@ -24,13 +33,16 @@ def test_DKM_GOLDENPATH(login_logout):
2433
browse_page.click_expand_reference_in_response()
2534
browse_page.click_reference_link_in_response()
2635
browse_page.close_citation()
27-
# # validate response
36+
logger.info("Step 4: Validate Generate Page is loaded.")
2837
browse_page.click_generate_button()
38+
logger.info("Step 5: Validate Generate- Prompts response.")
2939
browse_page.validate_response_status(question_api=browse_question2)
3040
generate_page = GeneratePage(page)
3141
generate_page.enter_a_question(generate_question1)
3242
generate_page.click_send_button()
3343
generate_page.validate_response_status(question_api=generate_question1)
3444
generate_page.click_generate_draft_button()
45+
logger.info("Step 6: Validate Generate Page is loaded.")
3546
draft_page = DraftPage(page)
47+
logger.info("Step 7: Validate Draft sections generated properly.")
3648
draft_page.check_draft_Sections()

0 commit comments

Comments
 (0)