79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
from pathlib import Path
|
|
import re
|
|
import sys
|
|
|
|
import allure
|
|
import pytest
|
|
from playwright.sync_api import expect
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
if str(PROJECT_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PROJECT_ROOT))
|
|
|
|
from config.settings import settings
|
|
from utils.logger import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
@allure.feature("合作伙伴")
|
|
@allure.story("合作页内容")
|
|
@allure.title("校验 Partnerships 页面核心内容可见")
|
|
def test_partnerships_page_key_content_visible(page):
|
|
logger.info("使用 pytest-playwright 统一无头浏览器配置")
|
|
|
|
logger.info("打开 Partnerships 页面")
|
|
page.goto("/partnerships", wait_until="domcontentloaded")
|
|
|
|
logger.info("校验 Partnerships 页面地址、标题和页面内容已加载")
|
|
expect(page).to_have_url(re.compile(r".*/partnerships/?$"), timeout=settings.default_timeout)
|
|
assert page.title().strip()
|
|
expect(page.locator("body")).to_be_visible(timeout=settings.default_timeout)
|
|
|
|
visible_headings_count = page.get_by_role("heading").count()
|
|
logger.info("当前 Partnerships 页面标题元素数量: %s", visible_headings_count)
|
|
assert visible_headings_count > 0
|
|
|
|
|
|
@allure.feature("合作伙伴")
|
|
@allure.story("合作表单")
|
|
@allure.title("校验 Partnerships 合作表单字段可见且可编辑")
|
|
def test_partnerships_contact_form_fields_visible_and_editable(page):
|
|
logger.info("使用 pytest-playwright 统一无头浏览器配置")
|
|
|
|
logger.info("打开 Partnerships 页面")
|
|
page.goto("/partnerships", wait_until="domcontentloaded")
|
|
|
|
logger.info("动态校验合作表单字段可见并可输入")
|
|
form_inputs = page.locator('section input[type="text"]:not([readonly])')
|
|
form_textareas = page.locator("section textarea")
|
|
submit_button = page.locator("section button").last
|
|
|
|
name_input = form_inputs.nth(0)
|
|
email_input = form_inputs.nth(1)
|
|
business_input = form_inputs.nth(2)
|
|
collaboration_input = page.locator('section input[readonly]').first
|
|
message_input = form_textareas.first
|
|
|
|
expect(name_input).to_be_editable(timeout=settings.default_timeout)
|
|
expect(email_input).to_be_editable(timeout=settings.default_timeout)
|
|
expect(business_input).to_be_editable(timeout=settings.default_timeout)
|
|
expect(message_input).to_be_editable(timeout=settings.default_timeout)
|
|
|
|
name_input.fill("Joyhub Tester")
|
|
email_input.fill("tester@example.com")
|
|
business_input.fill("https://example.com")
|
|
message_input.fill("I want to explore product testing collaboration.")
|
|
|
|
expect(name_input).to_have_value("Joyhub Tester", timeout=settings.default_timeout)
|
|
expect(email_input).to_have_value("tester@example.com", timeout=settings.default_timeout)
|
|
expect(business_input).to_have_value("https://example.com", timeout=settings.default_timeout)
|
|
expect(collaboration_input).to_be_visible(timeout=settings.default_timeout)
|
|
expect(collaboration_input).to_have_attribute("readonly", "", timeout=settings.default_timeout)
|
|
expect(message_input).to_have_value("I want to explore product testing collaboration.", timeout=settings.default_timeout)
|
|
expect(submit_button).to_be_visible(timeout=settings.default_timeout)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(pytest.main([str(Path(__file__))]))
|