- Update E2E tests: announcements, auth, auth-business-flow, full-route-regression, grades, navigation, smoke-auth, teacher-web-test - Update integration tests: api-ai-chat, api-onboarding-complete, api-onboarding-status, proxy-guard, integration setup - Update visual regression tests: admin-dashboard, homepage, student-dashboard, teacher-dashboard, visual config, helpers - Update webapp tests: admin, parent, student full tests and debug scripts - Add new webapp tests: announcements_messages, settings_profile, debug scripts - Add webtest directory with test plans, screenshots, and diagnostic scripts
124 lines
4.2 KiB
Python
124 lines
4.2 KiB
Python
"""验证 lesson-plans 修复后的页面状态"""
|
|
import urllib.request
|
|
import urllib.error
|
|
import json
|
|
import re
|
|
|
|
BASE_URL = "http://localhost:3000"
|
|
|
|
# 1. 先登录 teacher
|
|
login_data = "email=t_chinese_1%40xiaoxue.edu.cn&password=123456".encode()
|
|
req = urllib.request.Request(
|
|
f"{BASE_URL}/api/auth/callback/credentials",
|
|
data=login_data,
|
|
method="POST",
|
|
headers={
|
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
},
|
|
)
|
|
|
|
import http.cookiejar
|
|
cookie_jar = http.cookiejar.CookieJar()
|
|
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie_jar))
|
|
|
|
try:
|
|
resp = opener.open(req, timeout=15)
|
|
print(f"登录回调状态: {resp.status}")
|
|
except urllib.error.HTTPError as e:
|
|
print(f"登录回调 HTTP 错误: {e.code}")
|
|
except Exception as e:
|
|
print(f"登录回调异常: {e}")
|
|
|
|
# 2. 访问登录页获取 cookie
|
|
try:
|
|
resp = opener.open(f"{BASE_URL}/login", timeout=15)
|
|
print(f"登录页状态: {resp.status}")
|
|
except Exception as e:
|
|
print(f"登录页异常: {e}")
|
|
|
|
# 3. 提交登录表单
|
|
login_data = "email=t_chinese_1%40xiaoxue.edu.cn&password=123456&csrfToken=&callbackUrl=http%3A%2F%2Flocalhost%3A3000%2Fteacher%2Fdashboard&json=true".encode()
|
|
req = urllib.request.Request(
|
|
f"{BASE_URL}/api/auth/callback/credentials",
|
|
data=login_data,
|
|
method="POST",
|
|
headers={
|
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
},
|
|
)
|
|
try:
|
|
resp = opener.open(req, timeout=15)
|
|
body = resp.read().decode("utf-8", errors="replace")
|
|
print(f"登录 API 状态: {resp.status}")
|
|
except urllib.error.HTTPError as e:
|
|
body = e.read().decode("utf-8", errors="replace")
|
|
print(f"登录 API HTTP 错误: {e.code}")
|
|
except Exception as e:
|
|
print(f"登录 API 异常: {e}")
|
|
|
|
# 4. 访问 lesson-plans 页面
|
|
print("\n=== 访问 /teacher/lesson-plans ===")
|
|
try:
|
|
req = urllib.request.Request(f"{BASE_URL}/teacher/lesson-plans")
|
|
resp = opener.open(req, timeout=30)
|
|
body = resp.read().decode("utf-8", errors="replace")
|
|
print(f"状态码: {resp.status}")
|
|
print(f"内容长度: {len(body)}")
|
|
|
|
# 检查是否有错误
|
|
if "Failed to call" in body:
|
|
match = re.search(r"Failed to call[^<]{0,200}", body)
|
|
print(f"❌ 发现错误: {match.group(0) if match else 'Failed to call'}")
|
|
elif "useTranslations" in body and "was not found" in body:
|
|
print("❌ 发现 useTranslations 上下文错误")
|
|
else:
|
|
print("✅ 未发现 useTranslations 错误")
|
|
|
|
# 检查页面内容
|
|
if "备课" in body or "Lesson Plan" in body or "lesson-plans/new" in body:
|
|
print("✅ 页面包含备课相关内容")
|
|
else:
|
|
print("⚠️ 页面未包含备课内容")
|
|
|
|
# 检查是否重定向到登录页
|
|
if "/login" in body[:2000] and "callbackUrl" in body[:2000]:
|
|
print("⚠️ 可能重定向到登录页")
|
|
|
|
except urllib.error.HTTPError as e:
|
|
body = e.read().decode("utf-8", errors="replace")
|
|
print(f"HTTP 错误: {e.code}")
|
|
print(f"响应体 (前 1000 字符): {body[:1000]}")
|
|
if "Failed to call" in body:
|
|
match = re.search(r"Failed to call[^<]{0,300}", body)
|
|
if match:
|
|
print(f"\n❌ 错误详情: {match.group(0)}")
|
|
except Exception as e:
|
|
print(f"异常: {e}")
|
|
|
|
# 5. 访问 lesson-plans/new 页面
|
|
print("\n=== 访问 /teacher/lesson-plans/new ===")
|
|
try:
|
|
req = urllib.request.Request(f"{BASE_URL}/teacher/lesson-plans/new")
|
|
resp = opener.open(req, timeout=30)
|
|
body = resp.read().decode("utf-8", errors="replace")
|
|
print(f"状态码: {resp.status}")
|
|
print(f"内容长度: {len(body)}")
|
|
|
|
if "Failed to call" in body:
|
|
match = re.search(r"Failed to call[^<]{0,200}", body)
|
|
print(f"❌ 发现错误: {match.group(0) if match else 'Failed to call'}")
|
|
else:
|
|
print("✅ 未发现 useTranslations 错误")
|
|
|
|
if "模板" in body or "Template" in body or "template" in body:
|
|
print("✅ 页面包含模板相关内容")
|
|
|
|
except urllib.error.HTTPError as e:
|
|
body = e.read().decode("utf-8", errors="replace")
|
|
print(f"HTTP 错误: {e.code}")
|
|
print(f"响应体 (前 1000 字符): {body[:1000]}")
|
|
except Exception as e:
|
|
print(f"异常: {e}")
|
|
|
|
print("\n=== 验证完成 ===")
|