Files
NextEdu/webtest/verify_fix.py
SpecialX d884c6d513
Some checks failed
CI / scheduled-backup (push) Failing after 36s
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled
test: update and add E2E, integration, visual, and webapp tests
- 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
2026-06-23 17:39:40 +08:00

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=== 验证完成 ===")