Files
landing_page/refer_landing_page/tests/e2e_test_suite.py
T
Godopu b8f1a000fd feat(footer): internationalize footer layout and remove directions section
- Remove #directions section and DirectionsBlock component from home page
- Translate Footer masthead brand titles to ANL and AI Agent Networking Lab
- Update Footer affiliated institution links to KNU, CSE, and College of IT Engineering
- Add advisor information (Prof. Seok-Joo Koh) and translate address to English
- Translate Footer quick navigation links and colophon/copyright text
- Update E2E test assertions for the updated footer layout and address
2026-08-21 13:20:15 +09:00

122 lines
4.9 KiB
Python

#!/usr/bin/env python3
"""
Python Unittest Suite for ANL Homepage E2E Verification
Parses prerendered SSG HTML files to assert DOM structure, text content, and theme attributes.
"""
import unittest
import os
import re
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SERVER_APP_DIR = os.path.join(BASE_DIR, ".next", "server", "app")
if not os.path.exists(SERVER_APP_DIR):
for candidate in [
os.path.join(os.getcwd(), "refer_landing_page", ".next", "server", "app"),
os.path.join(os.getcwd(), "website", ".next", "server", "app"),
os.path.join(os.getcwd(), ".next", "server", "app"),
]:
if os.path.exists(candidate):
SERVER_APP_DIR = candidate
break
class TestANLHomepageE2E(unittest.TestCase):
def read_html(self, relative_path):
full_path = os.path.join(SERVER_APP_DIR, relative_path)
self.assertTrue(os.path.exists(full_path), f"File {relative_path} does not exist")
with open(full_path, "r", encoding="utf-8") as f:
return f.read()
def test_01_home_page_structure(self):
"""TC-T1-F3: Verify Home page SSG HTML content and semantic structures."""
html = self.read_html("index.html")
# 1. Brand & Header titles
self.assertIn("ANL", html)
self.assertIn("AI Agent Networking LAB", html)
# 2. Research Areas keywords
self.assertIn("Quick UDP Internet Connection (QUIC)", html)
self.assertIn("Constrained Application Protocol (CoAP)", html)
self.assertIn("Stream Control Transmission Protocol (SCTP)", html)
self.assertIn("Tabu Search and Genetic Algorithm", html)
# 3. Location / Address section
self.assertIn("address", html.lower())
self.assertIn("Kyungpook National University", html)
self.assertIn("College of IT Engineering", html)
self.assertIn("Prof. Seok-Joo Koh", html)
self.assertIn("sjkoh@knu.ac.kr", html)
def test_02_members_page_content(self):
"""TC-T1-F4: Verify Members page active members & alumni records."""
html = self.read_html("members.html")
# Professor profile
self.assertIn("고석주", html)
self.assertIn("Seok-Joo Koh", html)
self.assertIn("sjkoh@knu.ac.kr", html)
# Members content sanity checks
self.assertIn("Members", html)
def test_03_publications_category_routes(self):
"""TC-T1-F5: Verify Publications categories SSG static pages."""
cats = [
("intl-journal-conf.html", "International Journal"),
("domestic-journal-conf.html", "Domestic Journal"),
("patent.html", "Patent"),
]
for path_suffix, expected_text in cats:
rel_path = os.path.join("publications", path_suffix)
html = self.read_html(rel_path)
self.assertIn(expected_text, html, f"Category route {path_suffix} missing '{expected_text}'")
def test_04_lectures_page_content(self):
"""TC-T1-F6: Verify Lectures page HTML structure."""
html = self.read_html("lectures.html")
self.assertIn("Lectures", html)
def test_05_standardization_page_content(self):
"""TC-T1-F6: Verify Standardization page standards bodies."""
html = self.read_html("standardization.html")
self.assertIn("Standardization", html)
self.assertIn("IEC TC100", html)
def test_06_theme_css_variables(self):
"""TC-T1-F2: Verify globals.css and built assets contain theme tokens."""
globals_path = os.path.join(BASE_DIR, "app", "globals.css")
if not os.path.exists(globals_path):
globals_path = os.path.join(os.getcwd(), "refer_landing_page", "app", "globals.css")
with open(globals_path, "r", encoding="utf-8") as f:
css = f.read()
for token in ["--ink", "--ivory", "--paper", "--line", "--vermillion", "--cobalt"]:
self.assertIn(token, css, f"Missing CSS variable {token} in globals.css")
def test_07_research_projects_pageview(self):
"""TC-T1-F7: Verify Research Project PageView content in Home static SSG HTML (AC-27 / AC-31)."""
html = self.read_html("index.html")
# 1. Project PageView Title & Projects
self.assertIn("Research Projects", html)
self.assertIn("AI-RAN", html)
self.assertIn("MCM", html)
self.assertIn("MVQM", html)
# 2. Standards track labels
self.assertIn("National Research Foundation of Korea", html)
self.assertIn("IEC/TC 100/WG 12 supported by KEIT", html)
# 3. International Standardizations Section
self.assertIn("International Standardizations", html)
self.assertIn("IEC TC100: Multimedia Systems and Equipment", html)
self.assertIn("ISO/IEC JTC1/SC6: Reliable Multicasting", html)
# 4. Assert zero placeholder Funder labels (AC-31)
self.assertNotIn("Funder:", html)
if __name__ == "__main__":
unittest.main()