开发者社区新增了独立子域名访问方式,用户现在可以通过两种路径访问社区1:
https://cloud.tencent.com/developer(及 .cn / .com.cn 后缀)https://developer.cloud.tencent.com(及 .cn / .com.cn 后缀)改造涉及三个项目,各自独立改动,需分别验证:
项目 | 说明 | 旧路径前缀 | 新子域名 |
|---|---|---|---|
qcloud-developer | 开发者社区主站 |
|
|
qcloud-community | 新版社区 |
|
|
qcloud-competition | 竞赛子站 |
|
|
测试策略:以「机制 × 项目」为主轴,每种机制在每个项目下各选代表页面验证,不可用一个项目的结果代替另一个项目。
以下测试如无特别说明,均以
.com后缀为例,.cn和.com.cn后缀在「跨后缀一致性」章节单独回归。
最基础的验证:六个入口都能正常打开,页面不报错。
访问地址 | 预期结果 | |
|---|---|---|
1 |
| 正常打开社区首页(qcloud-developer 或 qcloud-community) |
2 |
| 正常打开社区首页 |
3 |
| 正常打开社区首页 |
4 |
| 正常打开社区首页 |
5 |
| 正常打开社区首页 |
6 |
| 正常打开社区首页 |
7 |
| 正常打开竞赛首页 |
8 |
| 正常打开竞赛首页 |
机制说明:页面 HTML 在服务端生成时,链接 href 就已经写入了正确的域名。三个项目各自独立处理,需分别验证。
验证方法:打开页面,右键「查看网页源代码」,搜索
href=,检查链接中的域名。
访问方式 | 页面地址 | 检查内容 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 源码中报名按钮、推荐沙龙、分享链接的 href | 应含 |
2 | 旧路径 |
| 同上 | 应含 |
访问方式 | 页面地址 | 检查内容 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 源码中推荐文章、作者主页、标签链接的 href | 应含 |
2 | 旧路径 |
| 同上 | 应含 |
访问方式 | 页面地址 | 检查内容 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 源码中各 Tab 链接、返回首页链接的 href | 应含 |
2 | 旧路径 |
| 同上 | 应含 |
机制说明:用户鼠标悬停任意
<a>标签时,JS 实时把 href 改写为当前访问域名,是全局兜底策略。三个项目各自实现,需分别验证。验证方法:将鼠标悬停到链接上,观察浏览器左下角状态栏显示的 URL,或右键链接查看 href。
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停顶部导航各菜单项(学习、活动、专区等) | href 显示 |
2 | 旧路径 |
| 悬停顶部导航各菜单项 | href 显示 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停顶部导航各菜单项 | href 显示 |
2 | 旧路径 |
| 悬停顶部导航各菜单项 | href 显示 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停竞赛首页导航链接 | href 显示 |
2 | 旧路径 |
| 悬停竞赛首页导航链接 | href 显示 |
底部菜单由后台配置,链接硬编码了旧域名,GlobalListener 在悬停时统一改写。
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停底部菜单各链接(技术文章、技术问答等) | href 显示 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停底部菜单各链接 | href 显示 |
页面中硬编码了官网链接(如
cloud.tencent.com/product/cvm等),GlobalListener 同样改写域名后缀。
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 |
|
| 悬停底部「热门产品」中的云服务器、域名注册等链接 | href 为 |
2 |
|
| 同上 | href 为 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 |
|
| 悬停底部「热门产品」中的官网链接 | href 为 |
2 |
|
| 同上 | href 为 |
找一篇正文中含有其他社区链接的内容(可搜索含
cloud.tencent.com/developer的文章或回答)
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停正文中的内链 | href 改写为新子域名 |
2 | 新子域名 |
| 悬停正文中的内链 | href 改写为新子域名 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停沙龙列表中每条链接 | href 为新子域名 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停首页文章卡片、问答卡片 | href 为新子域名 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名 |
| 悬停首页竞赛列表中的链接 | href 为新子域名 |
机制说明:以下场景通过
location.href、location.replace()、window.open()等方式直接跳转,不经过 GlobalListener,需代码中单独处理域名,是最容易出 bug 的地方。
登录跳转地址
https://cloud.tencent.com/login?s_url=${backUrl}域名硬编码,三个项目需各自验证。
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名(.com) |
| 点击「登录」,完成登录 | 跳回原页面,URL 仍为 |
2 | 新子域名(.cn) |
| 点击「登录」,完成登录 | 跳回 |
3 | 新子域名(.com.cn) |
| 点击「登录」,完成登录 | 跳回 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名(.com) |
| 点击「登录」,完成登录 | 跳回原页面,URL 仍为 |
2 | 新子域名(.cn) |
| 点击「登录」,完成登录 | 跳回 |
3 | 新子域名(.com.cn) |
| 点击「登录」,完成登录 | 跳回 |
访问方式 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名(.com) |
| 点击「登录」,完成登录 | 跳回原页面,URL 仍为 |
2 | 新子域名(.cn) |
| 点击「登录」,完成登录 | 跳回 |
仅 qcloud-community 涉及发布功能(qcloud-developer 文章页已迁移)。
场景 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 新子域名下发布文章 |
| 发布成功后跳转到文章详情页,URL 为新子域名 |
2 | 新子域名下提问 |
| 提交成功后跳转到问题详情页,URL 为新子域名 |
3 | 新子域名下发布视频 |
| 发布成功后跳转 URL 为新子域名 |
4 | 旧路径下发布文章 |
| 发布成功后跳转 URL 为旧路径格式 |
仅 qcloud-community 涉及,侧边栏导航、Tab 切换等使用
location.href跳转。
场景 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 首页 Tab 切换 |
| 点击首页不同分类 Tab(推荐、问答、专栏等) | Tab 切换后 URL 仍为新子域名 |
2 | 切换「我的提问 / 我的回答」Tab |
| 点击切换 Tab | Tab 切换后 URL 仍为新子域名 |
3 | 侧边栏点击「写文章」(新窗口) |
| 点击「写文章」 | 新窗口打开 |
4 | 视频管理页点击「编辑视频」 |
| 点击编辑按钮 | 跳转到 |
仅 qcloud-developer 涉及,发布后用
window.open()打开新窗口。
场景 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 新子域名下快速提问 |
| 提交一个问题 | 新窗口打开的问题详情页 URL 为新子域名 |
仅 qcloud-developer 涉及,使用
window.open('https://console.${location.host}/...')动态拼接,理论上已正确适配,重点验证.cn/.com.cn。
场景 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 沙龙签到页 |
| 点击「前往控制台」 | 新窗口打开 |
2 | 用户通知设置页 |
| 点击「前往控制台」 | 新窗口打开 |
3 | 用户通知设置页 |
| 点击「前往控制台」 | 新窗口打开 |
机制说明:分享链接、海报二维码的 URL 通过字符串拼接生成,不经过 GlobalListener,需代码单独处理域名。
场景 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 沙龙分享海报 |
| 海报中链接 / 二维码指向新子域名 |
2 | 旧路径下沙龙分享 |
| 海报中链接为旧路径格式 |
场景 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 复制文章分享链接 |
| 点击分享,复制的链接域名为新子域名 |
2 | 生成文章海报 |
| 海报中二维码指向新子域名 |
3 | 微信分享 |
| 好友收到的链接为新子域名 |
4 | 旧路径下分享 |
| 分享链接域名为旧路径格式 |
机制说明:登录 Cookie 的
domain属性决定登录态能否在新旧域名间共享。
场景 | 验证操作 | 预期结果 | |
|---|---|---|---|
1 | 旧路径登录后打开新子域名 |
| 无需重新登录 |
2 | 新子域名登录后打开旧路径 |
| 无需重新登录 |
3 | 新子域名下刷新页面 | 登录后刷新 | 登录态保持,不丢失 |
4 | 退出登录 | 新子域名下点击退出 | 新旧域名下均退出 |
机制说明:服务端根据请求域名输出 canonical 标签。三个项目各自实现,需分别验证。
验证方法:右键查看网页源代码,搜索
canonical。
访问方式 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 新子域名 |
|
|
2 | 旧路径 |
|
|
访问方式 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 新子域名 |
|
|
2 | 旧路径 |
|
|
3 | 新子域名 |
|
|
访问方式 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 新子域名 |
|
|
2 | 旧路径 |
|
|
机制说明:从开发者社区跳转到竞赛子站,各自域名规则应保持,不出现混用。
场景 | 页面地址 | 验证操作 | 预期结果 | |
|---|---|---|---|---|
1 | 社区跳转竞赛(新子域名) |
| 悬停 / 点击导航「竞赛」入口 | 跳转到 |
2 | 社区跳转竞赛(.cn) |
| 点击导航「竞赛」入口 | 跳转到 |
3 | 竞赛跳回社区 |
| 点击页面中的社区相关链接 | 跳转到 |
每个项目在
.cn和.com.cn后缀下均需单独回归,重点回归高风险场景。
后缀 | 机制 | 页面地址 | 验证操作 | |
|---|---|---|---|---|
1 |
| 入口冒烟 |
| 正常打开首页 |
2 |
| 入口冒烟 |
| 正常打开首页 |
3 |
| 链接跟随 |
| 悬停导航链接,href 为 |
4 |
| 链接跟随 |
| 悬停导航链接,href 为 |
5 |
| 登录跳转 |
| 登录后回到 |
6 |
| 登录跳转 |
| 登录后回到 |
后缀 | 机制 | 页面地址 | 验证操作 | |
|---|---|---|---|---|
1 |
| 入口冒烟 |
| 正常打开首页 |
2 |
| 入口冒烟 |
| 正常打开首页 |
3 |
| 链接跟随 |
| 悬停导航链接,href 为 |
4 |
| 链接跟随 |
| 悬停导航链接,href 为 |
5 |
| 登录跳转 |
| 登录后回到 |
6 |
| 登录跳转 |
| 登录后回到 |
后缀 | 机制 | 页面地址 | 验证操作 | |
|---|---|---|---|---|
1 |
| 入口冒烟 |
| 正常打开竞赛首页 |
2 |
| 入口冒烟 |
| 正常打开竞赛首页 |
3 |
| 链接跟随 |
| 悬停导航链接,href 为 |
4 |
| 登录跳转 |
| 登录后回到 |
场景 | 页面地址 | 预期结果 | |
|---|---|---|---|
1 | 访问不存在的内容(qcloud-community) |
| 返回 404 页面,URL 域名不变 |
2 | 访问不存在的内容(qcloud-developer) |
| 返回 404 页面,URL 域名不变 |
3 | 访问不存在的竞赛(qcloud-competition) |
| 返回 404 页面,URL 域名不变 |
4 | 新子域名下刷新页面 |
| 页面正常加载,URL 不变 |
5 | 新子域名下浏览器前进 / 后退 | 任意页面间跳转后 | URL 保持新子域名格式 |
6 | 从外部跳入(微信、微博等) | 新子域名格式的链接 | 正常打开,登录态正常 |
优先级 | 机制 / 场景 | 涉及项目 | 说明 |
|---|---|---|---|
P0 | 一、六个入口冒烟 | 全部 | 基础可用性 |
P0 | 四-1、登录跳转 | 全部 | 硬编码风险最高,三个项目均需验证 |
P0 | 三-1、导航链接跟随 | 全部 | 每个页面都有,影响面最大 |
P1 | 三-4/3-5、正文内链 / 列表卡片 | developer / community | 核心内容页链接 |
P1 | 四-2、发布内容后跳转 | community | 核心写作流程 |
P1 | 六、登录态 Cookie 共享 | 全部 | 新旧域名互通 |
P2 | 二、SSR 链接(源码验证) | 全部 | 服务端输出正确性 |
P2 | 三-2/3-3、底部菜单 / 官网链接跟随 | developer / community | 后台配置链接 |
P2 | 四-3、创作者中心内部跳转 | community | JS 直接跳转 |
P2 | 五、分享与海报链接生成 | developer / community | 传播场景 |
P2 | 八、跨项目跳转 | developer / competition | 跨站链接 |
P3 | 七、SEO canonical 标签 | 全部 | SEO 影响 |
P3 | 四-4/4-5、快速提问 / 控制台跳转 | developer | JS 直接跳转兜底 |
P3 | 九、跨后缀一致性(.cn / .com.cn) | 全部 | 后缀回归 |
P3 | 十、异常与边界场景 | 全部 | 兜底验证 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。