如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户?

发布时间:2026/9/11 2:05:06

如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户? 如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp在 freeCodeCamp 仓库中跑 Playwright E2E 测试时测试需要以已登录状态访问页面而登录凭据来自数据库里预置的演示用户。seed-demo-user 脚本负责把固定 ID 的演示用户写入 MongoDBe2e/global-setup.ts 再调用它并抓取会话生成playwright/.auth/下的 storage state 文件供后续测试用例复用。本文说明如何在本地为 E2E 测试种子化认证用户certifieduser及开发用户developmentuser并给出可用的检查手段。前提条件脚本读取根目录的.env文件seed-demo-user.js 第 7 行显式解析../../../.env并依赖其中的MONGOHQ_URL连接 MongoDB。仓库根目录的 sample.env 给出了本地默认值MONGOHQ_URLmongodb://127.0.0.1:27017/freecodecamp?directConnectiontrue按 sample.env 复制出.envcp sample.env .env并确保 127.0.0.1:27017 上有一个可用的 MongoDB 实例。连接串指向的库名必须是freecodecamp脚本第 103 行使用client.db(freecodecamp)在user和UserToken集合中读写。E2E 侧还有两个已文档化的依赖e2e/playwright.config.ts 的baseURL取HOME_LOCATION默认http://127.0.0.1:8000API_LOCATION在 sample.env 中默认为http://localhost:3000。global-setup 用API_LOCATION请求/signin接口因此执行 setup 时本地 API 需可访问。配置中webServer会自动docker run --rm -p 1025:1025 -p 8025:8025 axllent/mailpit用于接收测试中 API 发出的邮件需要本地有 Docker。脚本写入哪些用户用户文档定义在 tools/scripts/seed/user-data.js共 6 个固定ObjectId的用户用户_id邮箱用户名demoUser默认种子用户5bd30e0f1caf6ac3ddddddb5foobar.comdevelopmentuserfullyCertifiedUser5fa2db00a25c1c1fa49ce067foobar.comcertifieduserblankUser5bd30e0f1caf6ac3ddddddb9barbar.comtwahapublicUser663b839b24a8b29f57728b13barbars.compublicuseralmostFullyCertifiedUser同 blankUserId——unclaimedUser5bd30e0f1caf6ac3ddddddb1——unclaimedUser与almostFullyCertifiedUser都是fullyCertifiedUser的展开变体user-data.js 第 76915、76931 行。注意demoUser与fullyCertifiedUser使用同一个邮箱foobar.com。这正是 global-setup.ts 第 25-26 行注释说明的现象legacy 认证接口不带邮箱查询它登录的是当前拥有 foobar.com 的那个种子用户所以两次种子化切换了登录身份。脚本的执行逻辑运行脚本会按 seed-demo-user.js 的run()顺序执行client.db(admin).command({ ping: 1 })验证 Mongo 连通性调试日志输出Connected successfully to mongodropUserTokens()从UserToken集合删除上述 6 个userIds对应的全部 token 记录dropUsers()从user集合删除这 6 个_id对应的用户按命令行参数插入所选用户见下表随后无条件再插入blankUser和publicUser调试日志输出local auth user seed complete。出错时脚本打印Oh noes!! Error seeding local auth user.并process.exit(1)。重要副作用每次运行都会删除这 6 个固定 ID 用户在user和UserToken集合中的既有记录属于破坏性写入。请勿把MONGOHQ_URL指向存有真实业务数据的库在共享环境执行前确认库中可安全重置这些种子 ID。参数与用户变体parseArgs定义的选项seed-demo-user.js 第 18-26 行参数类型效果--certified-userboolean改为插入fullyCertifiedUser--almost-certified-userboolean改为插入almostFullyCertifiedUser--unclaimed-userboolean改为插入unclaimedUser以上都不传—默认插入demoUser--top-contributorboolean给 demoUser、blankUser、fullyCertifiedUser 设置yearsTopContributor: [2017, 2018, 2019]--set-true key...string, multiple把指定键设为true作用于上述三个用户--set-false key...string, multiple把指定键设为false--seed-trophy-challengesboolean用脚本内置的 6 条奖杯挑战记录覆盖completedChallenges四个变体是互斥的if / else if / else分支一次只插入一种主用户但blankUser、publicUser每次都会插入。E2E 全局 setup 实际使用的两条命令从仓库根目录执行等价于 global-setup.ts 中的相对路径写法node tools/scripts/seed/seed-demo-user --certified-user node tools/scripts/seed/seed-demo-user第二条不带任何 flag种子化的是developmentuser邮箱同为foobar.com认证标志为 false。E2E 如何消费种子用户e2e/playwright.config.ts 配置了一个名为setup的项目testMatch: global-setup.ts且 chromium/firefox/webkit 及两个移动端项目都声明dependencies: [setup]——即任何浏览器测试执行前Playwright 先完整跑一遍 global-setup。e2e/global-setup.ts 包含两个describe块按文件顺序执行certifieduser块beforeAll中execSync(node ../tools/scripts/seed/seed-demo-user --certified-user )种子化认证用户setup 测试请求API_LOCATION /signin再把请求上下文中的会话写入playwright/.auth/certified-user.json。developmentuser块先强制空 storage state避免继承上一个块里认证用户的 cookiebeforeAll执行无参脚本把foobar.com的所有者切回developmentuser登录并写入playwright/.auth/development-user.jsonafterAll再执行一次--certified-user恢复默认状态。恢复默认是有意为之的playwright.config.ts中use.storageState的全局默认值就是playwright/.auth/certified-user.json后续所有用例默认以认证用户身份运行。另外配置中workers: 1且fullyParallel: false因为 setup 对数据库状态是全局改写的串行执行才能保证登录身份不被并发用例打乱。运行与验证在仓库根目录执行工作目录不影响脚本定位.env因为它按脚本自身位置解析node tools/scripts/seed/seed-demo-user --certified-user判断结果的手段按文档实际提供的脚本退出码与错误输出失败时打印Oh noes!! Error seeding local auth user.并以非零码退出process.exit(1)未报错即完成第 4、5 步的插入。debug 日志脚本使用debug(fcc:tools:seedLocalAuthUser)设置DEBUGfcc:tools:seedLocalAuthUser后可看到Connected successfully to mongo与local auth user seed complete两条日志seed-demo-user.js 第 124、141 行。E2E 全链路验证运行 Playwright 时setup项目成功、两个can sign in测试通过、且生成了playwright/.auth/certified-user.json与playwright/.auth/development-user.json说明种子用户、登录接口与会话持久化都工作正常依赖certified-user.json的浏览器用例随后即可在HOME_LOCATION页面以certifieduser身份访问。限制与注意事项脚本对 6 个固定_id做删除后插入重复运行是幂等的但会清除这些 ID 的旧 token 与旧数据--set-true/--set-false/--top-contributor/--seed-trophy-challenges只作用于demoUser、blankUser、fullyCertifiedUser三个对象对unclaimedUser、almostFullyCertifiedUser无效seed-demo-user.js 第 86-99 行的forEach列表global-setup.ts中的execSync使用相对路径node ../tools/scripts/...因此 Playwright 必须按配置从e2e/目录启动Playwright 默认以配置文件所在目录为基准手动执行脚本时则可用仓库根目录下的完整相对路径种子用户与登录接口依赖本地 APIAPI_LOCATION可达setup 阶段 API 未启动会直接表现为登录请求失败。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/11 2:05:06

智能制造培训PPT设计:从技术转化到落地实践

1. 项目概述 "智能制造建设培训方案(PPT)"这个项目标题看似简单,实则包含了一个正在蓬勃发展的行业需求。作为在工业数字化转型领域摸爬滚打多年的从业者,我见过太多企业投入巨资购买智能设备后,却因为员工认…

2026/9/11 2:05:06

Java Web访客登记系统课程设计:从数据库建模到Servlet+JSP部署

简介:基于Java Web的公司访客登记系统是一份完整的课程设计资源包,面向正在学习Java Web开发的学生以及需要快速构建访客管理应用的新手开发者。系统覆盖访客信息的添加、修改、删除、检索查询和分类统计五大核心功能,通过表单处理、数据库读…

2026/9/11 3:00:11

ArduPilot 抗干扰布线完整指南:4 条原则 + 起飞前自检清单

ArduPilot 抗干扰布线完整指南:4 条原则 起飞前自检清单 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot ArduPilot 是全球使用最广的开源飞控固件之一&#xf…

2026/9/11 3:00:11

TradingAgents-CN 仪表台市场快讯显示为空的排查与修复实战指南

TradingAgents-CN 仪表台市场快讯显示为空的排查与修复实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 本指南完整还原了 TradingAgents-…

2026/9/11 3:00:11

MQTT与WebSocket实现龙虾机器人手机直连控制方案

1. 项目背景与需求解析 在移动办公场景中,远程控制设备的需求正在快速增长。传统方案往往依赖企业级通讯工具作为中间通道,这不仅增加了操作复杂度,还带来了额外的安全审核负担。这个项目直击痛点——让用户能够绕过飞书、企业微信等企业通讯…

2026/9/11 3:00:11

光伏MPPT技术:PO算法原理与Simulink仿真实践

1. 项目概述:光伏MPPT与P&O算法核心原理光伏发电系统在实际运行中面临的最大挑战就是如何从不断变化的光照条件下提取最大功率。这个问题的本质在于光伏电池的非线性I-V特性曲线——随着光照强度和环境温度的变化,其最大功率点(MPP)会动态漂移。传统…

2026/9/11 2:55:11

零售数据分析:识别未交易顾客的技术方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码